首页 前端知识 css 获取前后同级兄弟元素的方法

css 获取前后同级兄弟元素的方法

2024-01-31 12:01:10 前端知识 前端哥 980 320 我要收藏

需求

通过 css 选择器获取一个元素前面或者后面的同级兄弟元素。

代码

获取后面的兄弟元素相较于获取前面的兄弟元素来说更简单点,这是浏览器 流布局 所决定的(元素从上到下,同一行内从左到右进行渲染),但是当 :has 选择器出现后就可以实现了(下面会具体介绍),所以先介绍获取后面兄弟元素的方法:

一、获取后面同级的兄弟元素的方法:

1、相邻兄弟选择器

获取后面符合条件的第一个元素

<div class="c1"></div>
<div class="c2"></div>
<div class="c3"></div>

.c1 + .c2{  //获取紧接在 c1 后类名为 c2 的第一个元素
	background:red; 
}
2、通用兄弟选择器

获取后面符合条件的所有元素

<div class="c1"></div>
<p class="c2"></p>
<p class="c3"></p>

.c1 ~ p{  //获取 c1 后的所有 p 标签元素
	background:red; 
}

二、获取前面同级的兄弟元素

通过使用 :has 选择器来实现,:has() 选择器用于获取符合括号内元素条件的父级元素

<div class="parent" style="width:100px;height:200px;background:red;">
	<div class="c1" style="width:100px;height:20px;">1</div>
	<div class="c2" style="width:100px;height:20px;">2</div>
	<div class="c3" style="width:100px;height:20px;">3</div>
	<div class="c4" style="width:100px;height:20px;">4</div>
	<div class="c5" style="width:100px;height:20px;">5</div>
	<div class="c6" style="width:100px;height:20px;">6</div>
</div>

.parent:has(.c6)>div:first-child{ //获取c1元素
	background: yellow;
}

.parent:has(.c6)>div:nth-child(1){ //获取c1元素
	background: yellow;
}

效果:
在这里插入图片描述

上方表达式的意思是,先通过 :has 获取包含类名为 c6 的子元素且自身类名为 parent 的元素,即上方代码的最外层元素。再根据该最外层元素结合获取第几个子元素的选择器(如::first-child、:last-child、:nth-child(n)等)即可实现获取元素前面的同级兄弟元素(上方代码就是获取了 c6 前的 c1 元素)。

有其他方法的朋友欢迎指教。

👇觉得有帮助的朋友可以支持下作者哦,您的鼓励是我创作的最大动力,如有开发问题可联系作者
请添加图片描述

转载请注明出处或者链接地址:https://www.qianduange.cn//article/887.html
标签
评论
会员中心 联系我 留言建议 回顶部
复制成功!