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

Vue项目中如何在输入框变为disabled状态时修改其背景色

问题原因

你的SCSS选择器写法错误,导致样式没有命中禁用状态的输入框本身:
当前你在input选择器内部嵌套[disabled],经过SCSS编译后生成的CSS选择器是input [disabled],语义是「选中input元素内部所有带有disabled属性的子元素」,显然你的目标是选中本身带有disabled属性的input元素,所以需要用SCSS父选择器标识符&来关联上层选择器。

修复方案

方案1:修正SCSS写法(最简便)

直接修改你的SCSS代码即可生效:

.form {
  width: 100%;
  padding: 15px 15px 0;
  margin: 0 auto;
  text-align: center;
  
  .checkbox_sso{
    width: 24px;
    height: 24px;
    margin: 0px 5px 0px 0px;
  }
  p {
    font-size: 12px;
    color: nth($gray, 5);
    margin-bottom: 5px;
    text-align: left;
  }
  input {
    width: 100%;
    height: 46px;
    margin-bottom: 20px;
    color: nth($gray, 2);
    // 用&指代当前的input选择器,编译后生成 input[disabled]
    &[disabled] {
      background-color: burlywood;
      // 如果还有浏览器默认样式覆盖问题,可以加!important强制生效
      // background-color: burlywood !important;
    }
  }
}

方案2:Vue动态绑定class(可选,灵活性更高)

如果后续需要更多状态切换的样式控制,可以直接通过sso变量动态绑定class:
首先修改模板部分的密码输入框代码:

<input 
  type="password" 
  v-model="password" 
  @keyup.enter="submit" 
  :disabled="sso == 1"
  :class="{'disabled-input': sso == 1}"
/>

然后在SCSS中添加对应类的样式:

input {
  /* 原有input样式 */
  &.disabled-input {
    background-color: burlywood;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:45:01