CSS选择器

css选择器

常用的选择器有如下几种:

1、标签选择器

标签选择器,此种选择器影响范围大,建议尽量应用在层级选择器中。
举例:

*{margin:0;padding:0}
div{color:red}   

<div>....</div>   <!-- 对应以上两条样式 -->
<div class="box">....</div>   <!-- 对应以上两条样式 -->

2、id选择器

通过id名来选择元素,元素的id名称不能重复,所以一个样式设置项只能对应于页面上一个元素,不能复用,id名一般给程序使用,所以不推荐使用id作为选择器。
举例:

#box{color:red} 

<div id="box">....</div>   <!-- 对应以上一条样式,其它元素不允许应用此样式 -->

3、类选择器

通过类名来选择元素,一个类可应用于多个元素,一个元素上也可以使用多个类,应用灵活,可复用,是css中应用最多的一种选择器。
举例:

.red{color:red}
.big{font-size:20px}
.mt10{margin-top:10px} 

<div class="red">....</div>
<h1 class="red big mt10">....</h1>
<p class="red mt10">....</p>

4、层级选择器

主要应用在选择父元素下的子元素,或者子元素下面的子元素,可与标签元素结合使用,减少命名,同时也可以通过层级,防止命名冲突。
举例:

.box span{color:red}
.box .red{color:pink}
.red{color:red}

<div class="box">
    <span>....</span>
    <a href="#" class="red">....</a>
</div>

<h3 class="red">....</h3>

5、组选择器

多个选择器,如果有同样的样式设置,可以使用组选择器。
举例:

.box1,.box2,.box3{width:100px;height:100px}
.box1{background:red}
.box2{background:pink}
.box2{background:gold}

<div class="box1">....</div>
<div class="box2">....</div>
<div class="box3">....</div>

6、伪类及伪元素选择器

常用的伪类选择器有hover,表示鼠标悬浮在元素上时的状态,伪元素选择器有before和after,它们可以通过样式在元素中插入内容。

.box1:hover{color:red}
.box2:before{content:'行首文字';}
.box3:after{content:'行尾文字';}

<div class="box1">....</div>
<div class="box2">....</div>
<div class="box3">....</div

CSS3新增选择器

1、E:nth-child(n):匹配元素类型为E且是父元素的第n个子元素

<style type="text/css">            
    .list div:nth-child(2){
        background-color:red;
    }
</style>
......
<div class="list">
    <h2>1</h2>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
</div>

<!-- 第2个子元素div匹配 -->

2、E:nth-last-child(n):匹配元素类型为E且是父元素的倒数第n个子元素(与上一项顺序相反)

3、E:nth-child(2n):匹配元素类型为E且是父元素的偶数行子元素

4、E:nth-child(2n-1):匹配元素类型为E且是父元素的奇数行子元素

5、E:first-child:匹配元素类型为E且是父元素的第一个子元素
6、E:last-child:匹配元素类型为E且是父元素的最后一个子元素

7、E:only-child:匹配元素类型为E且是父元素中唯一的子元素

8、E:nth-of-type(n):匹配父元素的第n个类型为E的子元素
9、E:nth-last-of-type(n):匹配父元素的倒数第n个类型为E的子元素(与上一项顺序相反)
10、E:first-of-type:匹配父元素的第一个类型为E的子元素
11、E:last-of-type:匹配父元素的最后一个类型为E的子元素
12、E:only-of-type:匹配父元素中唯一子元素是E的子元素
13、E:empty :选择一个没有子元素的E元素(空元素)
14、E:enabled :可用的表单控件
15、E:disabled :失效的表单控件
16、E:checked :选中的checkbox

17、E:lang(it):以it开头的lang属性值的所有E元素

18、:root:选择文档的根元素

19:*:选择所有元素

20、E:-soup-contains("xxx"):包含某文本内容的元素

21、E:not(s) :不包含s元素的E元素

<style type="text/css">            
    .list div:not(:nth-child(2)){
        background-color:red;
    }
</style>
......
<div class="list">
    <h2>1</h2>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
</div>

<!-- 第 3、4、5 子元素div匹配 -->

22、E:target 对应锚点的样式

<style type="text/css">
    h2:target{
        color:red;
    }
</style>
......
<a href="#tit01">标题一</a>
......
<h2 id="tit01">标题一</h2>

<!-- 点击链接,h2标题变红 -->

23、E > F E元素下面第一层子集
24、E ~ F E元素后面的兄弟元素
25、E + F E元素后面紧挨着的兄弟元素

属性选择器:

1、[target]:含有target属性的所有元素

2、[target=_blank]:属性target="_blank"的所有元素

3、[target~=blank]:属性target含"blank"的所有元素

4、[target!=bl]:属性target以"bl"开头的所有元素

5、E[data-attr]: 含有data-attr属性的E元素

<style type="text/css">
    div[data-attr='ok']{
        color:red;
    }
</style>
......
<div data-attr="ok">这是一个div元素</div>

<!-- 点击链接,h2标题变红 -->

6、E[data-attr='ok']:含有data-attr属性的E元素且它的值为“ok”
7、E[data-attr^='ok']: 含有data-attr属性的E元素且它的值的开头含有“ok”
8、E[data-attr$='ok']: 含有data-attr属性的E元素且它的值的结尾含有“ok”
9、E[data-attr*='ok']: 含有data-attr属性的E元素且它的值中含有“ok”

posted @ 2021-05-13 23:06  eliwang  阅读(128)  评论(0编辑  收藏  举报