自己写了一个带图标的input组件,效果是这样的:
原理就是div包裹一个svg和一个input,具体代码是这样的:
[HTML] 纯文本查看 复制代码 <!-- 用户名 -->
<div
class="flex items-center w-full px-4 py-2 border rounded-md space-x-5"
>
<svg
xmlns="http://www.w3.org/2000/svg"
class="h-6 w-6 text-gray-500"
viewBox="0 0 20 20"
fill="currentColor"
>
<path
fill-rule="evenodd"
d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-6-3a2 2 0 11-4 0 2 2 0 014 0zm-2 4a5 5 0 00-4.546 2.916A5.986 5.986 0 0010 16a5.986 5.986 0 004.546-2.084A5 5 0 0010 11z"
clip-rule="evenodd"
/>
</svg>
<input
class="flex-1 text-black text-lg bg-transparent outline-none border-none"
type="text"
/>
</div>
有两个问题:
1、我希望再input获得焦点时,父级div的边框变成蓝色。
2、用户点击整个div时(包括点击图标),input自动获得焦点。想到的是div加一个点击事件,事件方法给input焦点,但每个input组件加一个事件,这很不科学。
所以,请教第1个问题如何实现?第2个问题更好的方法是怎样做?谢谢 |