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

Sass实现输入框聚焦时隐藏placeholder的正确写法咨询

实现输入框聚焦时隐藏Placeholder的纯CSS/Sass方案

问题根源

你之前的写法存在两个核心错误:

  • 第一个方案里,&::focus内部的& ~ .input::placeholder逻辑完全错误:&在这里指代#input:focus,~是兄弟选择器,但你的输入框本身没有.input类的兄弟元素,而且你要修改的是当前聚焦输入框自己的placeholder,根本不需要兄弟选择器。
  • 第二个方案误用了:focus-within:这个伪类是给父元素用的,用来匹配包含聚焦元素的父容器,直接给输入框加:focus-within没有任何作用,内部重复选择#input也是多余操作。

正确实现代码

纯CSS写法

#input {
  height: 30px;
}

#input::placeholder {
  padding-left: 6px;
  /* 不要用display:flex,placeholder本身是行内元素,保留默认布局即可 */
}

#input:focus::placeholder {
  display: none;
}

Sass嵌套简化写法

#input {
  height: 30px;

  &::placeholder {
    padding-left: 6px;
  }

  &:focus::placeholder {
    display: none;
  }
}

额外说明

  • 无需给::placeholder设置display:flex,这会破坏placeholder的默认布局,直接使用默认的行内样式即可。
  • 核心逻辑很简单:当#input处于:focus状态时,修改它自身的::placeholder的display属性为none,这是最直接的伪类组合写法,不需要复杂选择器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:05:14