实时搜索时输入框样式错乱怎么办?
我在做实时搜索功能,输入内容时下拉列表会闪动,而且输入框的边框样式突然变了,明明没改过CSS啊。
试过加transition也没用,控制台也没报错。是不是和focus状态冲突了?我的输入框样式是这样写的:
.search-input {
border: 1px solid #ccc;
padding: 8px 12px;
outline: none;
}
.search-input:focus {
border-color: #007bff;
box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}
检查一下你的搜索逻辑,看看是不是每次输入都重新创建了input元素,或者key值变了触发重新渲染。如果用的是React/Vue这类框架,尤其要注意别让input的key变化。
还有个常见坑:搜索过程中可能触发了blur->focus的抖动。你可以试试给focus样式加上transition过渡:
不过更关键的是确保搜索过程中input元素本身不要被替换。你可以把input单独抽出来,不要放在每次渲染都会重新生成的那个列表容器里面。
如果你是用React,可以给input加个独立的key或者用useMemo包起来,避免被列表渲染影响。