
本教程探讨了如何通过css和j*ascript实现在一组元素中,当鼠标悬停在某个元素上时,对该组内其他非当前悬停元素应用特定样式。文章详细介绍了纯css方案利用伪类和选择器实现简洁高效的样式控制,以及基于j*ascript事件监听和dom操作实现更灵活的动态类名管理。通过对比两种方法的实现细节和适用场景,帮助开发者选择最合适的解决方案。
在网页交互设计中,有时需要实现一种特殊效果:当用户鼠标悬停在一组元素中的某一个元素上时,不是该元素自身,而是同组的其他元素发生样式变化。这种需求可以通过纯CSS或结合J*aScript来实现。本文将详细介绍这两种方法。
对于相对简单的样式变化,纯CSS方案通常是首选,因为它具有更高的性能和更简洁的代码。这种方法主要利用CSS的伪类选择器:hover和否定伪类选择器:not()。
核心思想是为所有同级元素设置一个共同的父容器。当鼠标悬停在父容器上时(wrapper:hover),我们希望改变其所有子元素(div)的样式,但排除当前鼠标悬停的那个子元素(:not(:hover))。
首先,定义HTML结构,包含一个父容器和多个子元素:
立即学习“J*a免费学习笔记(深入)”;
<div class="wrapper"> <div>1</div> <div>2</div> <div>3</div> </div>
然后,应用CSS样式:
.wrapper {
display: flex; /* 方便演示,使div水平排列 */
gap: 10px;
padding: 20px;
border: 1px solid #ccc;
}
.wrapper div {
width: 80px;
height: 80px;
background-color: #f0f0f0;
border: 1px solid #ddd;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
transition: background-color 0.3s ease; /* 添加过渡效果 */
}
/* 当鼠标悬停在 .wrapper 上时,将其内部所有非当前悬停的 div 背景变为红色 */
.wrapper:hover div:not(:hover) {
background-color: red;
color: white;
}当需要更复杂的逻辑控制、动态判断或与后端数据交互时,J*aScript提供了更强大的灵活性。
J*aScript方案的核心是监听每个子元素的mouseenter(鼠标进入)和mousele*e(鼠标离开)事件。当鼠标进入某个子元素时,遍历所有子元素,为它们添加目标样式类,然后立即从当前悬停的元素上移除该样式类。当鼠标离开时,则移除所有子元素的样式类。
TabTab AI
首个全链路 Data Agent,让数据搜集、处理到深度分析一步到位。
292
查看详情
首先,HTML结构与CSS方案相同:
<div class="wrapper"> <div>1</div> <div>2</div> <div>3</div> </div>
定义一个用于添加或移除的CSS类:
/* 基础样式同上 */
.wrapper {
display: flex;
gap: 10px;
padding: 20px;
border: 1px solid #ccc;
}
.wrapper div {
width: 80px;
height: 80px;
background-color: #f0f0f0;
border: 1px solid #ddd;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
transition: background-color 0.3s ease;
}
/* 定义要添加的样式类 */
.red {
background-color: red;
color: white;
}然后,编写J*aScript代码:
// 获取所有子元素
const elDivs = document.querySelectorAll(".wrapper div");
const classNameToToggle = "red"; // 定义要切换的类名
/**
* 根据事件类型(mouseenter/mousele*e)切换元素的类名
* @param {Event} evt - 事件对象
*/
const toggleClassDivs = (evt) => {
const isEnter = evt.type === "mouseenter"; // 判断是鼠标进入还是离开事件
// 遍历所有子元素
elDivs.forEach(el => {
// 如果是鼠标进入事件,则为所有元素添加类;如果是鼠标离开事件,则移除所有元素的类
el.classList[isEnter ? "add" : "remove"](classNameToToggle);
});
// 如果是鼠标进入事件,从当前悬停的元素上移除类,实现“非当前”效果
if (isEnter) {
evt.currentTarget.classList.remove(classNameToToggle);
}
};
// 为每个子元素添加事件监听器
elDivs.forEach(el => {
el.addEventListener("mouseenter", toggleClassDivs);
el.addEventListener("mousele*e", toggleClassDivs);
});在实现悬停时对同级非当前元素应用样式的需求时,选择CSS还是J*aScript取决于具体场景的复杂度和性能要求。
推荐使用纯CSS方案:
推荐使用J*aScript方案:
在实际开发中,开发者应根据项目的具体需求权衡利弊,选择最适合的实现方式。通常情况下,优先考虑纯CSS解决方案,当CSS无法满足需求时,再转向J*aScript。
以上就是利用CSS和J*aScript实现悬停时对同级非当前元素应用样式的详细内容,更多请关注其它相关文章!
# 上时
# 安徽专业网站建设耗材
# 安福网络获客营销推广
# 江苏企业seo电话号码
# 大蒜的官方营销推广
# 学好网站seo优化能干什么
# 泰州网站建设方式
# 咸阳短视频seo公司
# 网站优化项目计划书模板
# 罗湖区网站建设维护
# 河北装饰网站建设
# 详细介绍
# 中文网
# 推荐使用
# 遍历
# 当鼠标
# css
# 移除
# 选择器
# 鼠标
# css样
# css选择器
# 后端
# ssl
# 事件冒泡
# app
# 浏览器
# seo
# html
# java
# javascript
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
iPhone 13 Pro Max如何设置桌面小组件_iPhone 13 Pro Max小组件添加指南
VS Code如何设置默认配置
Selenium自动化:利用键盘模拟解决复杂日期输入框输入问题
VS Code中的Tailwind CSS IntelliSense插件使用技巧
微信步数怎么刷_微信步数快速提升技巧
《随手记》关闭首页消息推送方法
鸣潮历史学家灯塔位置一览
抖音手机分身两个账号怎么切换?分身两个系统是一样的吗?
德邦快递查询入口登录官网 德邦快递单号查询系统入口
《七读免费小说》开通会员方法
《U校园》学生登录入口2025
鸿蒙单条备忘录如何加密
京东快递包裹信息查询入口 京东快递官方查询平台入口
鲨鱼剧场app金币获取方法
人教版电子教材在线获取指南
Win11怎么录屏_Windows 11自带Xbox Game Bar录制视频
192.168.1.1路由器后台入口 192.168.1.1默认登录入口
C++ optional用法详解_C++17处理可能为空的返回值
diskgenius分区工具如何设置Bios启动项
PDF如何批量加注释_PDF多文件批注高亮操作教程
PHP使用DOMDocument与XPath精准追加XML元素教程
花生壳内网映射新方案
Firefox OS应用开发:解决XMLHttpRequest跨域请求阻塞问题
如何快速去除厨房重油污? 2025年最好用的厨房清洁剂推荐
ExcelSCAN与LAMBDA如何创建自定义移动平均函数_SCAN实现任意窗口期移动平均计算
PHP魔术方法__set与__isset:设计考量、性能权衡与静态分析的视角
Python中处理嵌套字典与列表的数据提取与过滤教程
C++ static关键字作用_C++静态成员变量与静态函数
深入理解随机递归函数的确定性:内部节点、叶节点与时间复杂度分析
Python csv 模块处理非字符串数据:列表写入 CSV 文件的机制解析
行者app怎样导出日志
嘴唇干裂起皮怎么办 唇部护理与预防干裂的方法【详解】
智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法
Dash应用多值文本输入处理与类型转换教程
作业帮网页版不用下载入口 在线问老师快速答疑
word页码灰色不能用如何解决
微信客户端如何找回密码_微信客户端忘记密码找回方法
快手网页版官方访问 快手网页版页面在线打开
C++ switch case字符串_C++如何实现字符串switch匹配
《米姆米姆哈》米姆获取及技能攻略
CSS绝对定位与溢出控制:实现背景元素局部显示不触发滚动条
追剧达人如何发弹幕
b站怎么用微信登录_b站微信登录方法
食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗
微博网页版入口链接 微博网页版在线互动平台
苹果电脑如何快速截图并编辑 苹果电脑截屏标注快捷操作
百度网盘如何设置上传限额
告别阻塞等待:如何使用GuzzlePromises优雅处理PHP异步操作,提升应用响应速度
《狐友》联系客服方法
b站网页版入口 哔哩哔哩官方网站直接进入
2025-12-07
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。