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

点击搜索输入框时如何修改背景透明度并高亮输入框

实现搜索框聚焦时页面其余部分变灰的正确方法

你原来的写法问题在于给body设置opacity会让整个页面(包括搜索框)都变半透明,子元素的opacity无法独立于父元素生效。下面给你两种可行的实现方案:

方案1:使用遮罩层

这种方式最直观,通过一个全屏遮罩覆盖页面,聚焦时显示遮罩,同时让搜索框层级高于遮罩:

<!-- HTML结构 -->
<div class="page-content">
  <!-- 这里放页面其他内容 -->
  <p>页面主体内容...</p>
</div>
<input type="text" class="searchbar1" placeholder="搜索...">
<div class="overlay"></div>
/* CSS样式 */
.overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  opacity: 0;
  pointer-events: none; /* 遮罩不干扰点击交互 */
  transition: opacity 0.3s ease;
  z-index: 99;
}

.searchbar1:focus ~ .overlay {
  opacity: 1;
}

.searchbar1 {
  position: relative;
  z-index: 100; /* 确保搜索框在遮罩上方 */
  padding: 8px;
}

方案2:给页面内容容器加透明度/滤镜

如果不想额外添加遮罩元素,可以把页面内容放在单独容器里,聚焦时给容器加效果:

<!-- HTML结构 -->
<div class="page-content">
  <!-- 页面其他内容 -->
  <p>页面主体内容...</p>
</div>
<input type="text" class="searchbar1" placeholder="搜索...">
/* CSS样式 */
.page-content {
  transition: opacity 0.3s ease;
}

.searchbar1:focus ~ .page-content {
  opacity: 0.5;
  /* 也可以搭配模糊增强效果:filter: blur(2px); */
}

.searchbar1 {
  padding: 8px;
}

如果搜索框和内容容器不是同级元素,可以用现代浏览器支持的:has()选择器来实现:

body:has(.searchbar1:focus) .page-content {
  opacity: 0.5;
}

以上两种方案都能实现你要的效果:搜索框聚焦时,页面其余部分变灰,搜索框保持正常显示状态。

内容的提问来源于stack exchange,提问作者Manoj Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:40:37