html SVG图标在输入字段内未对齐

ovfsdjhp  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(165)

我有一个密码类型的输入域,我想在输入域中添加一个svg图标,但是什么都没有显示。这里有什么问题?

<InputField
     name={"password"}
     label={"password"}
     type={"password"}
 />
input[type="password"]::after {
  content: url(../icons/info.svg);
  width: 25px;
  display: inline-block;
  position: absolute;
}
0s0u357o

0s0u357o1#

由于<input>通常是浏览器UI,所以不能在其中应用样式,这是伪元素::before::after的作用。
另请参阅CBroe对https://stackoverflow.com/a/20894312/1427878的重要提示
模拟在输入中添加内容的一个常见解决方案是隐藏其边界并将其提供给 Package 器元素。
但是,您绝对需要确保焦点保持可见,例如using :focus-within

.input-like {
  display: inline-block;
  border: 1px solid gray;
  border-radius: 2px;
  padding: .1em;
}

.input-like:focus-within {
  outline: 1px solid blue;
}

.input-like::after {
  content: "i";
  width: 25px;
  display: inline-block;
}
input {
  border: none;
}

input:focus {
  outline: none;
}
<label for="pwd">Choose your password</label>
<div class="input-like">
  <input type="password" id="pwd" autocomplete="new-password">
</div>

由于图标只是视觉表示,因此它应该有一个可访问的名称,如图像的alt。根据它要传达的内容,可能需要一些ARIA属性,例如<input aria-description="some explanation">

相关问题