常用的选择器

2018-09-07  本文已影响0人  咻咻咻滴赵大妞

选择器(selector),会告诉浏览器:网页上那些元素需要设置什么样的样式。

元素选择器(标签选择器)

元素选择器可以根据标签的名字来从页面中选取指定的元素。

类选择器

类选择器,可以根据元素的class属性值选取元素

ID选择器

ID选择器,可以根据元素的ID属性值选取元素

复合选择器(交集选择器)

复合选择器,可以同时使用多个选择器,这样可以选择同时满足多个选择器的元素。

群组选择器(并集选择器)

群组选择器,可以同时使用多个选择器,多个选择器将被同时应用指定的样式。

通用选择器

通用选择器,可以同时选中页面中的所有元素。

<!DOCTYPE html>
<html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>常用选择器</title>
<style type="text/css">
/*元素选择器*/
p{
color:red
   }
 /*id选择器*/
#p1{
     color:red;
     font-size:50;
}
/*类选择器*/
.p2{
  font-size:50;
}
.hello{
  font-size:50;
}
/*选择器分组(并集选择器)*/
#p1,.p2,h1{
  background-color: green;
}
/*通配选择器*/
*{
  color: red;
}
/*复合选择器(交集选择器)*/
span.p3{
  background: yellow;
}
/*对于id选择器来说,不建议使用复合选择器*/
p#p1{
  background: red
}
</style>
</head>
<body>
<p id='p1'>书里总爱写到喜出望外的傍晚</p>
    <p> 骑的单车还有他和她的对谈</p>
    <!--指定多个样式用空格隔开-->
    <p class='p2 hello'>女孩的白色衣裳男孩爱看她穿</p>
    <p class='p2'>  好多桥段</p>
    <p class='p2'>  好多都浪漫</p>
    <p class='p2'>  好多人心酸</p>
    <p class="p3">好聚好散</p>
    <p class="p3">  好多天都看不完</p>
    <span class="p3">   好多天都看不完</spqn>
    <span class="p3">   好多天都看不完</spqn>
</body>
</html>

标签(元素)之间的关系

后代元素选择器

作用:选中指定元素的指定后代元素
语法:祖先元素 后代元素{}

    /*为div中的span设置一个颜色为绿色*/
    #d1 span{
        color: greenyellow;
    }

子元素选择器

作用:选中指定父元素的指定子元素
语法:父元素 > 子元素{}
IE6及以下的浏览器不支持子元素选择器

div > span{
    background-color: yellow;
    }

例示

 <!DOCTYPE html>
 <html lang="en">
 <head>
<meta charset="UTF-8">
<title>子元素和后代元素选择器</title>
<style type="text/css">
    /*后代选择器:为div中的span设置一个颜色为绿色*/
    #d1 span{
        color: greenyellow;
    }
    /*选中id为d1的div中的p元素中的span元素*/
    #d1 p span{
        font-size: 50px;
    }
    /*子元素选择器:为div的子元素span设置一个背景颜色为黄色*/
    div > span{
        background-color: yellow;
    }
</style>
 </head>
 <body>
<div id="d1">
    <span>我是div标签中的span</span>
    <p><span>我是p标签中的span</span></p>
</div>
<div>
    <span>我是body标签中的span</span>
</div>
</body>
</html>

伪类选择器

有四个伪类可以让根据访问者与该链接的交互方式,将链接设置成4种不同的状态。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>伪类选择器</title>
<style type="text/css">

/*伪类专门用来表示元素的一种特殊的状态
        比如:访问过的超链接、普通的超链接、获取焦点的文本框
        当我们需要为处在这些特殊状态的元素设置样式时,就可以使用伪类
        为没访问过的链接设置一个颜色为绿色
            :link   表示普通的链接(没访问过的链接)*/


    a:link{
        color: yellowgreen;
        font-size: 50px;
    }
 /*为访问过的链接设置一个颜色为红色
:visited    表示访问过的链接
浏览器是通过历史记录来判断一个链接是否访问过
由于涉及到用户的隐私问题,所以使用:visited伪类只能设置字体的颜色*/

    a:visited{
        color: red;
    }

/*表示鼠标移入的状态*/   
    a:hover{
        color: skyblue;
    }
/*表示超链接被点击的状态*/
    a:active{
        color: black;
    }

/* :hover和:active也可以为其它元素设置
IE6中,不支持对超链接以外的元素设置:hover和:active*/

    p:hover{
        background-color: gold;
    }
    p:active{
        background-color: orange;
    }
/*:focu 文本框获取焦点以后,修改背景颜色为黄色*/
    
 input:focus{
        background-color: yellow;
    }

/*为p标签中选中的内容使用样式可以使用::selection伪类
        注意:这个伪类在火狐中需要采用另一种方式编写兼容大部分浏览器的*/

    p::selection{
        background-color: orange;
    }
兼容火狐的前面加-moz-

    p::-moz-selection{
        background-color: orange;
    }
</style>
</head>
<body>
<a class="abc" href="http://www.baidu.com">访问过的链接</a>
<br /><br />
<a class="bcd" href="http://www.baidu123456.com">没访问过的链接</a>

<p>我是一个段落</p>

<!-- 使用input可以创建一个文本输入框 -->
<input type="text" />
</body>
</html>

其他选择器

给段落定义样式

属性选择器

属性选择器
作用:可以根据元素中的属性或属性值来选取指定元素
语法:
[属性名] 选取含有指定属性的元素
[属性名="属性值"] 选取含有指定属性值的元素
[属性名^="属性值"] 选取属性值以指定内容开头的元素
[属性名$="属性值"] 选取属性值以指定内容结尾的元素
[属性名*="属性值"] 选取属性值包含指定内容的元素

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>属性选择器</title>
<style type="text/css">
    /*为所有具有title属性的p元素,设置一个背景颜色为黄色*/
    p[title]{
        background-color: yellow;
    }
    
    /*为title属性值是hello的元素设置一个背景颜色为黄色*/
    p[title="hello"]{
        background-color: yellow;
    }
    
    /*为title属性值以ab开头的元素设置一个背景颜色为黄色*/
    p[title^="ab"]{
        background-color: yellow;
    }
    
    /*为title属性值以c结尾的元素设置一个背景颜色*/
    p[title$="c"]{
        background-color: yellow;
    }
    
    /*为title属性值包含c的元素设置一个背景颜色*/
    p[title*="c"]{
        background-color: yellow;
    }
</style>
</head>
<body>
<!-- 
    title属性,这个属性可以给任何标签指定
    当鼠标移入到元素上时,元素中的title属性的值将会作为提示文字显示
 -->
<p title="hello">我是一个段落</p>
<p>我是一个段落</p>
<p title="abbc">我是一个段落</p>
<p title="abccd">我是一个段落</p>
<p title="abc">我是一个段落</p>
</body>
</html>

子元素选择器

子元素选择器可以给另一个元素的子元素 设置样式。

  <!DOCTYPE html>
  <html lang="en">
  <head>
  <meta charset="UTF-8">
  <title>子元素选择器</title>
  <style type="text/css">

    body>p:first-child{
        background-color: yellow;
    }
    p:last-child{
        background-color: yellow;
    }
    p:nth-child(even){
        background-color: yellow;
    }

    p:first-of-type{
        background-color: yellow;
    }

    p:last-of-type{
        background-color: yellow;
    }
   </style>
   </head>
  <body>
       <span>我是span</span>
       <p>我是一个p标签</p>
       <p>我是一个p标签</p>
       <p>我是一个p标签</p>
       <p>我是一个p标签</p>
       <span>我是span</span>
       <div>
        <p>我是一个p标签</p>
       </div> 
     </body>
   </html>

兄弟选择器

除了根据祖先父子关系,还可以根据兄弟 关系查找元素。

否定伪类

否定伪类可以帮助我们选择不是其他东西 的某件东西。

继承

像儿子可以继承父亲的遗产一样,在CSS中,祖先元素上的样式,也会被他的后代元素所继承
利用继承,可以将一些基本的样式设置给祖先元素,这样所有的后代元素将会自动继承这些样式

但是,并不是所有的样式都会被子元素所继承,比如:背景、边框、定位相关的样式都不会被继承

  <!DOCTYPE html>
  <html lang="en">
   <head>
       <meta charset="UTF-8">
       <title>样式的继承</title>
       <style type="text/css">
    body{
        font-size: 30px;
    }
       </style>
   </head>
   <body>
       <div style="background-color: yellow;">
       <p>
         我是p标签中的文字
       <span>我是span中的文字</span>
       </p>
       </div>
      <span>我是p元素外的span</span>
   </body>
 </html>
image.png

图片中子元素背景也变成黄色,是因为字的背景默认值是透明的,背景颜色不是继承下来的,而是透过来的。

选择器优先级

当使用不同的选择器,选中同一个元素时,并且设置相同的样式时,这时样式之间产生了冲突,最终到底采用哪个选择器定义的样式,由选择器的优先级(权重)决定,优先级高的优先显示

    优先级的规则
        内联样式,优先级1000
        id选择器,优先级100
        类和伪类,优先级10
        元素选择器,优先级1
        通配*,优先级0
        继承的样式,没有优先级

    当选择器中包含多种选择器时,需要将多种选择器的优先级相加,然后再比较
    但是注意,选择器优先级计算不会超过他的最大的数量级
    如果选择器的优先级一样,则使用靠后的样式
    并集选择器的优先级是单独计算的
        div, p, #p1, .hello{}

    可以在样式的最后添加一个!important,则此时该样式将会获取一个最高的优先级,将会优先于所有的样式显示,甚至超过内联样式,但是在开发中,尽量避免使用!important

例:

<!DOCTYPE html>
<html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>选择器的优先级</title>
    <style type="text/css">
    .p1{
        background-color: yellow;
    }
    p{
        background-color: red;
    }
    #p2{
        background-color: yellowgreen;
    }
    p#p2{
        background-color: red;
    }
    
    *{
        font-size: 50px;
    }
    p{
        font-size: 30px;
    }
    .p3{
        color: green;
    }
    .p1{
        color: yellow;
        background-color: skyblue !important;
    }
      </style>
    </head>
<body>
    <p class="p1 p3" id="p2" style="background-color: orange;">
    我是一个段落
    <span>我是p标签中的span</span>
    </p>
</body>
</html>

a的伪类优先级

涉及到a的伪类一共有四个
a:link正常链接
a:visited(只能定义字体颜色)访问过的链接
a:hover鼠标滑过的链接
a:active正在点击的链接
这四个选择器的优先级是一样的,顺序不能更改

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>a的伪类</title>
    <style type="text/css">

    a:link{
        color: yellowgreen;
    }
    a:visited{
        color: red;
    }
    a:hover{
        color: orange;
    }
    a:active{
        color: cornflowerblue;
    }
    </style>
</head>
<body>
<a href="http://www.baidu.com">访问过的链接</a>
<br>
<a href="http://www.baidu123456.com">未访问过的链接</a>
</body>
</html>
上一篇 下一篇

猜你喜欢

热点阅读