阅读 72

如何通过hover控制相邻、平级元素的样式

网上有很多资料是关于如何通过 hover 控制子元素的样式。

具体是这样

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>Document</title>     <style>         .inter{display: none;}         .app:hover .inter{display: block;}     </style> </head> <body>     <div class="app">         top         <div class="inter">inter</div>     </div> </body> </html> 复制代码

按正常思路来讲,这是前端最基础的一个功能,相当于京东、淘宝头部导航栏的一个小功能。这功能可以通过js来写,而且更灵活,但本文主要讲css,所以不做延伸。

本文的重点是,如何通过 hover 控制相邻、平级元素的样式。

看这样一段代码

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>Document</title>     <style></style> </head> <body>     <div class="app">         app     </div>     <div class="bottom">bottom</div> </body> </html> 复制代码

思考一下,如何通过app类控制bottom类的样式?

我们可以用到相邻兄弟选择器。

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>Document</title>     <style>         .bottom {             display: none;         }         .app:hover+.bottom {             display: block;         }     </style> </head> <body>     <div class="app">         app     </div>     <div class="bottom">bottom</div> </body> </html> 复制代码

那什么是相邻兄弟选择器?

相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素。

那如果不是相邻元素,而是平级元素,又是否有办法控制其样式呢?

有办法的,可以使用兄弟选择器。

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>Document</title>     <style>         .bottom {             display: none;         }         .app:hover~.bottom {             display: block;         }     </style> </head> <body>     <div class="app">         app     </div>     <div class="app_bottom">app_bottom</div>     <div class="bottom">bottom</div> </body> </html> 复制代码

什么是兄弟选择器?

兄弟选择器:~表示某元素后所有同级的指定元素,强调所有的。

那如果存在多个类名相同的元素,我只想对其中一个元素进行操作是否有方法呢?

这种方法也是有的。

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>Document</title>     <style>         .bottom {             display: none;         }         .app:hover~.bottom.show {             display: block;         }     </style> </head> <body>     <div class="app">         app     </div>     <div class="app_bottom">app_bottom</div>     <div class="bottom">bottom</div>     <div class="bottom show">bottom bottom</div> </body> </html> 复制代码

灵活一点,修改兄弟选择器的指向。


作者:子醉
链接:https://juejin.cn/post/7026531087065186341


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐