CSS选择器

css的选择器(Selector)

“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素

1 基础选择器

* :           通用元素选择器,匹配任何元素                    * { margin:0; padding:0; }

E  :          标签选择器,匹配所有使用E标签的元素               p { color:green; }

.info和E.info: class选择器,匹配所有class属性中包含info的元素   .info { background:#ff0; }    p.info { background:blue; }

#info和E#info  id选择器,匹配所有id属性等于footer的元素         #info { background:#ff0; }   p#info { background:#ff0; }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

        /*标签选择器*/
        p{
            color: aqua;
        }

        /**为通配选择器,匹配所以标签*/
        *{
            color: antiquewhite;
        }

        /*id选择器,格式为 #id值 ,匹配所有id为big的标签,每个标签id值唯一*/
        #big{
            color: brown;
        }

        /*class类选择器,格式为 .classvalue或者标签.classvalue, 匹配class为back的标签,不同标签class值可以一样*/
        .back{
            color: cadetblue;
        }
    </style>
</head>

<body>

<p>hello world</p>
<div>hello world</div>
<div id="big">hello world</div>
<span class="back">hello world</span>
<div class="back">hello class back</div>

</body>
</html>
2 组合选择器
E,F         多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔         div,p { color:#f00; }

E F         后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔    li a { font-weight:bold;
E > F       子元素选择器,匹配所有E元素的子元素F                            div > p { color:#f00; }
 
E + F       毗邻元素选择器,匹配所有紧随E元素之后的同级元素F                  div + p { color:#f00; }  

注意嵌套规则:

  •      块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
  •      有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
  •       li内可以包含div
  •       块级元素与块级元素并列、内联元素与内联元素并列。
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*嵌套的标签只对父标签设置也会影响子标签*/

        /*多元选择器,同时匹配多个标签,不同标签之间用逗号隔开*/
        .div1,p{
            color: cadetblue;
        }

        /*后代元素选择器,可以匹配标签的所以后代,包括子代的子代,用空格分隔*/
        .div1 p{
            color: aqua;
        }

        /*子代选择器,只可以匹配子代,如果要匹配子代的子代要继续往下匹配,用>分隔*/
        .main2>div>div{
            color: bisque;
        }
    </style>
</head>
<body>

<div class="div1">hello1
          <div class="div2">hello2
              <div>hello4</div>
              <p>hello5</p>
          </div>
          <p>hello3</p>
      </div>
      <p>hello6</p>

<hr>

     <div class="main2">1
       <div>2
           <div>
               4
           </div>
       </div>
       <div>
               3
           </div>
     </div>
</body>
</html>
3 属性选择器
E[att]         匹配所有具有att属性的E元素,不考虑它的值。(注意:E在此处可以省略,比如“[cheacked]”。以下同。)   p[title] { color:#f00; }

 
 E[att=val]     匹配所有att属性等于“val”的E元素                                 div[class=”error”] { color:#f00; }

 
 E[att~=val]    匹配所有att属性具有多个空格分隔的值、其中一个值等于“val”的E元素      td[class~=”name”] { color:#f00; }

 E[attr^=val]    匹配属性值以指定值开头的每个元素                     div[class^="test"]{background:#ffff00;}

 E[attr$=val]    匹配属性值以指定值结尾的每个元素                     div[class$="test"]{background:#ffff00;}

 E[attr*=val]    匹配属性值中包含指定值的每个元素                     div[class*="test"]{background:#ffff00;}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

        /*属性选择器,如果属性唯一直接用标签E[attr]匹配所有具有att属性的E元素,不考虑它的值。*/
        p[nick]{
            color: aqua;
        }


        /*用E[attr='value']匹配所有att属性等于“val”的E元素*/
        div[alex='hello']{
            color: bisque;
        }

        /*E[attr~='value']表示匹配所有att属性等于“val”的E元素*/
        p[alex~=world]{
            color: cadetblue;
        }

        /*E[attr^=val]匹配属性值以指定值开头的每个元素*/
        p[alex^='h']{
            background-color: antiquewhite;
        }

        /*E[attr$=val]匹配属性值以指定值结尾的每个元素*/
        p[alex$='d']{
            font-size: 50px;
        }

         /*E[attr*=val]匹配属性值中包含指定值的每个元素*/
        p[alex*='wor']{
            font-family: Cambria;
        }

    </style>
</head>
<body>
<p nick="mike">hello world</p>
<div alex="hello">hello world</div>
<div alex="hello">hello world</div>
<p alex="hello world">hello world</p>
</body>
</html>
4 伪类(Pseudo-classes)

CSS伪类是用来给选择器添加一些特殊效果。

anchor伪类:专用于控制链接的显示效果

a:link(没有接触过的链接),用于定义了链接的常规状态。

a:hover(鼠标放在链接上的状态),用于产生视觉效果。

a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接。

a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态。

伪类选择器 : 伪类指的是标签的不同状态:

           a ==> 点过状态 没有点过的状态 鼠标悬浮状态 激活状态

a:link {color: #FF0000} /* 未访问的链接 */

a:visited {color: #00FF00} /* 已访问的链接 */

a:hover {color: #FF00FF} /* 鼠标移动到链接上 */

a:active {color: #0000FF} /* 选定的链接 */ 格式: 标签:伪类名称{ css代码; }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<style type="text/css">
    a:link{
        color: red;
    }
    a:visited {
        color: blue;
    }
    a:hover {
        color: green;
    }
    a:active {
        color: yellow;
    }
    .out{
        width: 150px;
        height: 300px;
        background-color: green;
    }
    .top,.bottom{
        width: 150px;
        height: 150px;
    }
    
    /*out悬浮时top变为黄色*/
    .out:hover .top{
        background-color: yellow;
    }
    
</style>
</head>
<body>
    <a href="1.html">hello-world</a>
<div class="out">
    <div class="top"></div>
    <div class="bottom"></div>
</div>
</body>
</html>
before after伪类 :
:before    p:before       在每个<p>元素之前插入内容
:after     p:after        在每个<p>元素之后插入内容

 p:before        在每个 <p> 元素的内容之前插入内容                    p:before{content:"hello";color:red}
 p:after         在每个 <p> 元素的内容之前插入内容                    p:after{content:"world";color:blue}
5 css优先级和继承

所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序。

样式表中的特殊性描述了不同规则的相对权重,它的基本规则是:
      1 内联样式表的权值最高       style=""-------------------1000;
   2 统计选择符中的ID属性个数。    #id    -------------100
  3 统计选择符中的CLASS属性个数。 .class  -------------10
 4 统计选择符中的HTML标签名个数。     p     --------------1

按这些规则将数字符串逐位相加,就得到最终的权重,然后在比较取舍时按照从左到右的顺序逐位比较。

附加说明:

1、文内的样式优先级为1,0,0,0,所以始终高于外部定义。这里文内样式指形如<div style="color:red>blah</div>的样式,而外部定义指经由<link>或<style>卷标定义的规则。

  2、有!important声明的规则高于一切。

  3、如果!important声明冲突,则比较优先权。

  4、如果优先权一样,则按照在源码中出现的顺序决定,后来者居上。

  5、由继承而得到的样式没有specificity的计算,它低于一切其它规则(比如全局选择符*定义的规则)。

CSS的继承性:

    继承是CSS的一个主要特征,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个BODY定义了的颜色值也会应用到段落的文本中。

    然而CSS继承性的权重是非常低的,是比普通元素的权重还要低的0。发现只需要给加个颜色值就能覆盖掉它继承的样式颜色。由此可见:任何显示申明的规则都可以覆盖其继承样式。 

      此外,继承是CSS重要的一部分,我们甚至不用去考虑它为什么能够这样,但CSS继承也是有限制的。有一些属性不能被继承,如:border, margin, padding, background等。

参考: 点击打开链接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值