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

如何仅使用SCSS和HTML实现点击div后永久修改其背景色

仅通过HTML + SCSS 完全可以实现该需求,无需引入JavaScript


原理说明

你之前使用的:active伪类仅在鼠标按下的短暂时间内生效,松开鼠标后状态就会失效,因此无法持久保留样式。我们可以利用原生复选框的:checked持久状态,配合CSS选择器关联目标div实现需求:

  • 点击操作会触发复选框的勾选状态,该状态会永久保留直到主动取消
  • 通过CSS选择器匹配勾选状态,同步修改关联div的背景色

代码实现

修改后的HTML结构

<!-- 隐藏的复选框,用于存储点击状态 -->
<input type="checkbox" id="toggleDivBg" hidden>
<!-- label关联复选框,点击div等价于点击复选框 -->
<label for="toggleDivBg">
  <div class="div">
    <p>Hello</p>
  </div>
</label>

调整后的SCSS代码

.div {
  min-height: 50px;
  background-color: yellow;
  border-radius: 4px 4px 0 0;
  padding: 10px;
  display: flex;
  align-items: center;
  cursor: pointer; // 提示该区域可点击
}

/* 复选框勾选后,修改对应div的背景色为红色 */
#toggleDivBg:checked + label .div {
  background-color: red;
}

/* 如果需要点击后永久变红、禁止二次点击切换,可加下面这段代码 */
#toggleDivBg:checked + label {
  pointer-events: none;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:57:03