在CSS选择器中,在最基本的标签选择器(div,P等)和属性选择器([],.class,#id)之外,稍微有点难度的就是位置选择器:所谓位置选择器就是根据已经明确的选择内容通过一定的表示方法,选择出其子代,后代,兄弟或后面的同级元素,以此来添加相应显示属性.
基于上述要求,位置选择器首先要有一个明确的参照元素,这个元素用基本的标签或属性选择器明确后,再添加对应的位置选择符号,来达到选择相应元素的目的
我们网页原始结构如下:
<body><ul class="list"><li class="item">item1</li><li class="item">item2</li><li class="item">item3</li><ul><li class="item">item3-1</li><li class="item">item3-2</li></ul><li class="item four">item4</li><li class="item">item5</li><ul><li class="item">item5-1</li><li class="item">item5-2</li></ul><li class="item">item6</li><ul><li class="item6">item6-1</li><li class="item6">item6-2</li><ul><li class="item6-2">item6-2-1</li><li class="item6-2">item6-2-2</li></ul><li class="item6">item6-3</li></ul><li class="item">item7</li><li class="item eight">item8</li></ul><ul><li class="newitem">newitem-1</li><li class="newitem">newitem-2</li></ul></body>
.list > .item{color: red;}
.list .item{color: red;}
特殊备注说明,子代的样式如果用”星星号”替代后,则同后代的意思一样,也即上面的代码等同于下面的代码:
.list > .*{color: red;}
/* 可以让item4之后的item5生效 */.list > .item.four + .item{border: 1px solid red;}/* 无法让item8之后的newitem-1生效 */.list > .item.eight + * {border: 1px solid blue;background-color: black;}/* 上述代码中,我们常常用+*来代替下一个元素的类,在这个类型中,*无法包含到后代*/
/* 可以让item4之后的item5-8生效 */.list > .item.four ~ .item {border: 1px solid red;}/* 可以让item4之后的item5-8生效,同时对中间间插的ul生效 */.list > .item.four ~*{border: 1px solid red;}/* 可以让item4之后的item5-8生效,同时item5-8的所的后效 */.list > .item.four ~* *{border: 1px solid red;}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号