CSS选择器

举报
运气男孩 发表于 2021/12/10 23:59:38 2021/12/10
【摘要】 首先CSS选择器分这么几大类:1.基础选择器 2.合并选择器 3.关系选择器 4.属性选择器 5.伪类选择器 6.伪对象选择器 一.css基础选择器 1.通用选择器,全局选择器(*) 可以与任何元素匹配常用于设置一些默认样式优先级最低2.元素选择器 HTML文档中的元素p、b、div、a、img、body等 3.类选择器 .className{  }  如:.box{ color:red; ...

首先CSS选择器分这么几大类:

1.基础选择器

2.合并选择器

3.关系选择器

4.属性选择器

5.伪类选择器

6.伪对象选择器 

我来一一介绍上面这些基础css选择器,顺便也是对自己的一个总结与复习 。

一.css基础选择器

1.通用选择器,全局选择器(*)

可以与任何元素匹配

常用于设置一些默认样式

优先级最低

2.元素选择器

HTML文档中的元素

p、b、div、a、img、body等 

3.类选择器

.className{  }  如:.box{ color:red; }

类名不能以数字开头

一个页面中class名字可以重复

4.ID选择器 #idName{   }  如:#box{color:red;}

一个页面中id相同的id名只能出现一次  

   一般重复使用的样式不使用ID选择器,因为ID属性是唯一的 

二.合并选择器

语法为:  

 选择器1,选择器2.....{ }  

作用是可以提取共同的样式,减少重复代码

例如:.header ,.footer{height:300px;} 中间由逗号隔开 

三、关系选择器 

1.后代选择器 (E F)    

选择所有被E元素包含的F元素,中间用空格隔开   

   ul li{ color:red; }  

  <ul>        

<li>苹果</li>      

  <li>橙子</li>      

  <li>西瓜</li>        

</ul> 

2.子代选择器 (E > F)  

  选择所有作为E元素的直接子元素F,对孙子元素不起作用,用大于号表示      

    div>a{ color:red;}   //div下的一级子元素a         

<div>            

<a href="#">这是子元素</a>          

  <p><a href="#">这是孙子元素</a></p>    

</div> 

3.相邻兄弟选择器 (E+F)  

  选择紧贴在E元素之后F元素,用加号表示,选择相邻的第一个兄弟元素。         

p+span{ color:red;}   //只会选中第一个span     

     <p>这是p元素</p>    

 <span>这是紧挨着p元素的第一个span</span>   

 <span>这是第二个span</span> 

4.通用兄弟选择器 (E~F)    

选择E元素之后的所有兄弟元素F,作用于多个元素,用~号隔开。      

    p~span{ color:red;}              //和p之后平级的span元素都被选中了,有几个选中几个    

<span>这span在p元素之前不会被选中</span>        

<p>这是p元素</p>    

<span>这是紧挨着p元素的第一个span</span>    

<span>这是第二个span</span>  

  <span>这是第三个span,它和p是兄弟关系</span> 

四、属性选择器 

通过html的属性来选择元素,<p class=”p1”></p>  class即是属性,p1是class的属性值        

写法:元素[ 属性名= “属性值”] ,等号不固定,可换其它符号 

1.E[att] p[class]{ color:red;}    //选择带有class属性的p标签    

<p class="p1">这是p1标签</p>     <p class="p2">这是p2标签</p>

2.E[att="val"] p[class="p2"]{ color:red;}     //选择p元素里class等于p4的元素,属性值要用引号引起来    

<p class="p1">这是p1标签</p>     <p class="p2">这是p2标签</p> 

五、伪类选择器

1.E:link

设置超链接a在未被访问前的样式(特指a标签)

 a:link{ color:red;}   //未访问时a的颜色,设置别的元素没有效果

2.E:visited

设置超链接a在其链接地址已被访问过时的样式(特指a标签)

a:visited{ color:green;}  //点击过后的超链接样式 *测试时,在url后面加参数使页面达到未访问过的状态  

3.E:hover    

设置鼠标悬停在元素上时的样式。不限于a标签,p、li也可以使用    

a:hover{ color:red;}    

p:hover{ color:red;}  

  <a href="#">这是个超级链接</a>     <p>这是个段落</p>

4.E:active          

设置元素在鼠标按下时的样式(不限于a标签)    

 a:active{ color:red;}    

 p:active{color:yellow;}    

 div:active{ color:blue;}    

 <a href="#">百度</a>   

 <p>这是段落</p>    

 <div>这是div</div> 

5.E:not(s选择器)  

匹配不含有s选择器的元素E。        

   div:not(.d1){ color: red;}       //选择除了类名为d1的元素,注意,not()中的值不加引号!

    <div class="d1">块元素</div>    

<div class="d1">块元素</div>  

  <div class="d1">块元素</div>  

  <div class="d2 d1">块元素</div>   

<div class="d2" id="div2">块元素</div> 

6.E:first-child

父元素的第一个子元素E。    

要使该属性生效,E元素必须是某个元素的子元素。一般元素都是body的子元素,所以都可以使用此伪类。

而body标签不是子元素,所以  body:first-child{ background:#ddd;} 是无效的。

li:first-child{ color:red;}
ul:first-child{color:red;}
这个属性的意思是被选元素本身是子元素,并且是它父元素中的第一个
<ul>        

<h2>标题</h2>    

  <li>元素</li>       

  <li>元素</li>      

  <li>元素</li>      

  <li>元素</li>    

</ul>  

  <ul>      

<li>元素</li>  

<li>元素</li>
<li>元素</li>      
<li>元素</li>

</ul> 

7.E:last-child

父元素的最后一个子元素E    

<ul>        

<h2>标题</h2>        

<li>元素</li>        

<li>元素</li>       

<li>元素</li>        

<li>元素</li>                         

</ul>    

<ul>       

<li>元素</li>        

<li>元素</li>        

<li>元素</li>        

<li>元素</li>      //不会变红,因为它不是最后一个        

<h3>底部第一个</h3>                        

</ul> 

8.E:only-child  

E元素是唯一的子元素时被匹配

<body>    

<p>段落</p>  

  </body>

此时body中只有这一个元素,所以 p:only-child{ color: deepskyblue;}  会生效

<body>    

<p>段落</p>      

<p>段落</p>

</body>

这时body的子元素不是唯一的了,所以 p:only-child{ color: deepskyblue;} 不会生效 

9.E:empty  

 匹配没有任何子元素(并且不包括text节点)的元素E      

p:empty{ border:1px solid red;padding:10px;}    

<p></p>         

<div></div>   //空,但不是P元素    

<p>我是一个p元素</p>   //有text文本节点  

  <p><a href="#">百度</a></p>   //有子元素 

10.E:checked   

匹配用户界面上处于选中状态的元素E。(用于input type为radio与checkbox时)

input:checked+span{color:red;}   

<input type="radio" name="sex"/><span>男生</span>

<input type="radio" name="sex" checked="checked"/><span>女生</span>

input下被选中的元素紧挨着的span颜色为红色,因为选中状态会变,所以看着像动态的 

11.E:nth-child()  

选中第几个子元素

//选中第二个p元素

.box p:nth-child(2){            color: red;        } /

/选中第偶数个子元素

.box p:nth-child(even){            color: red;        }

//选中第奇数个子元素

.box p:nth-child(odd){            color: red;        } 

<div class="box">    

<p>1</p>    

<p>2</p>    

<p>3</p>

</div> 

六、伪对象选择器 

伪对象也叫伪元素,在过去,伪类和伪元素都被书写成前面只加一个冒号,实际上应该    :weilei    ::weiyuansu,而现在我们为了兼容旧的书写方式,用一个冒号引导伪元素也是能被解析的。    

伪类一般反映无法在CSS中轻松或者可靠检测到的某个元素的状态或者属性; 

    伪元素表示DOM外部的某种文档结构    

伪类更多是定义元素的状态,而伪元素则是改变文档结构,在结构外另加一个没有实际存在的元素(伪元素)  

   常用伪元素

    1.E:before/E::before

    2.E:after/E::after 

1.E:before/E::before  

  before 选择器在被选元素的”内容”前面插入内容。用来和content属性一起使用   

虽然E:before可转化为E::before,但是你写伪元素时要规范,用两个冒号  

 p::before{ content:"在P标签元素内容前加了内容"; color: red;}        //它并没有在html文件结构中    

<p></p>

2.E:after/E::after    

after选择器在被选元素的”内容”后面插入内容  

  p::after{ content:"在P标签元素内容前加了内容"; color: red;}    

<p></p>

content属性与 :before 及 :after 伪元素配合使用,来插入生成内容。 


选择器优先级    

优先级数值比较:以数值大的为准    

   style=1000    

   id=100       

class=10        

element=1

Style样式>ID选择器>class选择器>元素选择器  

优先级形相同,写在后面的 样式起作用 

关于css的选择器就说到这里了,如有不足之处,欢迎指正!

感恩能与大家在华为云遇见!希望能与大家一起在华为云社区共同成长。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。