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

如何实现点击任意目标元素时,多个元素同时触发:active伪类效果?

实现点击任意元素时三个元素同时变色的方案

方案一:纯CSS实现(需调整HTML结构)

将三个<div>包裹在父容器内,利用父容器的:active伪类统一控制所有子元素样式。点击父容器内任意子元素时,父容器触发:active状态,所有子元素同步变色。

完整代码:

<div class="container">
  <div id="a">A</div>
  <div id="b">B</div>
  <div id="c">C</div>
</div>

<style>
#a, #b, #c {
  height: 100px;
  width: 100px;
  background-color: red;
  font-size: 100px;
  margin-bottom: 20px;
}

.container:active #a,
.container:active #b,
.container:active #c {
  background-color: blue;
}
</style>

方案二:原生JavaScript实现(无需修改原有HTML结构)

给每个元素绑定点击事件,点击时同步修改三个元素的样式。用CSS类管理样式,更易维护。

完整代码:

<div id="a">A</div>
<div id="b">B</div>
<div id="c">C</div>

<style>
#a, #b, #c {
  height: 100px;
  width: 100px;
  background-color: red;
  font-size: 100px;
  margin-bottom: 20px;
}

/* 新增类控制变色状态 */
#a.active, #b.active, #c.active {
  background-color: blue;
}
</style>

<script>
// 获取目标元素集合
const targetElements = [
  document.getElementById('a'),
  document.getElementById('b'),
  document.getElementById('c')
];

// 给每个元素绑定点击事件
targetElements.forEach(el => {
  el.addEventListener('click', () => {
    // 切换所有元素的active类(点击一次变蓝,再点变红)
    targetElements.forEach(item => item.classList.toggle('active'));
  });
});
</script>

如果需要点击仅触发一次变色(不切换回原色),把classList.toggle替换为classList.add;若需点击页面其他区域恢复原色,可额外监听文档点击事件来移除active类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:07:37