You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让搜索框点击/聚焦后保持:hover阴影效果

解决搜索栏点击输入框后保留阴影的问题

嘿,这个问题我碰到过!仅用HTML/CSS完全能解决,不需要JavaScript——你需要的是CSS的:focus-within伪类,而不是原来的:focus。

为什么原来的:focus不生效?

.searchbarcontainer是个普通的div元素,默认不属于可聚焦元素(比如输入框、按钮这类表单控件才是),所以它永远不会触发:focus伪类。当你点击输入框时,获得焦点的是子元素<input>,而不是父容器,所以原来的写法自然不会生效。

解决方案:使用:focus-within伪类

:focus-within是CSS Selectors Level 4的特性,它会匹配元素本身或者它的任意子元素获得焦点的情况,正好完美匹配你的需求——点击输入框时,父容器的阴影持续保留。

修改后的CSS代码如下:

.searchbarcontainer {
  width: 482px;
  height: 44px;
  border: 1px solid #dfe1e5;
  border-radius: 2px;
} 

/* 鼠标悬停时显示阴影 */
.searchbarcontainer:hover {
  box-shadow: 0px 1px 5px #d9d9d9;
}

/* 当容器内任何元素(比如输入框)获得焦点时,保留阴影 */
.searchbarcontainer:focus-within {
  box-shadow: 0px 1px 5px #d9d9d9;
}

效果验证

  • 鼠标悬停搜索栏:显示阴影
  • 点击输入框(获得焦点):阴影持续保留
  • 点击页面其他区域(输入框失去焦点):阴影消失(如果鼠标没悬停在容器上的话)

兼容性说明

:focus-within现在支持所有现代浏览器(Chrome、Firefox、Edge、Safari 10.1+),完全满足日常开发需求。如果一定要兼容非常老旧的浏览器(比如IE),才需要用JavaScript监听输入框的focus/blur事件,给父容器添加/移除自定义类,但这种场景现在几乎不需要考虑了。

完整的HTML代码和上面的CSS搭配使用即可实现你要的效果。

内容的提问来源于stack exchange,提问作者Mr.Lupine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:38:22