• css选择器


    ###CSS选择器

            CSS3选择器规范地址:          https://www.w3.org/TR/2011/REC-css3-selectors-20110929/

            CSS3选择最新选择器规范:  https://www.w3.org/TR/selectors 

           

            !---问题---!

                     1.css的全称是什么?

                     2.样式表的组成

                     3.浏览器读取编译css的顺序?

           

            1.基本选择器

                     /*通配符选择器*/          * { margin: 0; padding: 0; border: none; }

                     /*元素选择器*/              body { background: #eee; }

                     /*类选择器*/          .list { list-style: square; }

                     /*ID选择器*/         #list { 500px; margin: 0 auto; }

                     /*后代选择器*/              .list li { margin-top: 10px; background: #abcdef; }

                    

           

            2.基本选择器扩展

                     /*子元素选择器*/          #wrap > .inner {color: pink;}

                                            也可称为直接后代选择器,此类选择器只能匹配到直接后代,不能匹配到深层次的后代元素

                     /*相邻兄弟选择器*/     #wrap #first + .inner {color: #f00;}

                                              它只会匹配紧跟着的兄弟元素

                     /*通用兄弟选择器*/     #wrap #first ~ div { border: 1px solid;}

                                              它会匹配所有的兄弟元素(不需要紧跟)

                     /*选择器分组*/              h1,h2,h3{color: pink;} 

                                              此处的逗号我们称之为结合符

           

           

            3.属性选择器

                     /*存在和值属性选择器*/    

                             [attr]:该选择器选择包含 attr 属性的所有元素,不论 attr 的值为何。

                             [attr=val]:该选择器仅选择 attr 属性被赋值为 val 的所有元素。

                             [attr~=val]:表示带有以 attr 命名的属性的元素,并且该属性是一个以空格作为分隔的值列表,其中至少一个值为val。

                    

                     /*子串值属性选择器*/

                              [attr|=val] : 选择attr属性的值是val(包括val)或以val-开头的元素。

                              [attr^=val] : 选择attr属性的值以val开头(包括val)的元素。

                              [attr$=val] : 选择attr属性的值以val结尾(包括val)的元素。

                              [attr*=val] : 选择attr属性的值中包含字符串val的元素。

           

           

            4.伪类与伪元素选择器

                     /*链接伪类*/          注意:link,:visited,:target是作用于链接元素的!

                                      :link         表示作为超链接,并指向一个未访问的地址的所有锚

                                      :visited    表示作为超链接,并指向一个已访问的地址的所有锚

                                      :target    代表一个特殊的元素,它的id是URI的片段标识符

                     /*动态伪类*/          注意:hover,:active基本可以作用于所有的元素!

                                      :hover              表示悬浮到元素上

                                      :active              表示匹配被用户激活的元素(点击按住时)

                                     

    由于a标签的:link和:visited可以覆盖了所有a标签的状态,所以当:link,:visited,:hover,:active同时出现在a标签,:link和:visited不能放在最后!!!

    :target 其实表示的就是#div1,在a标签被点击, URI的片段标识符#div1->div1

    <!DOCTYPE html>

    <html>

       <head>

          <meta charset="UTF-8">

          <title></title>

          <style type="text/css">

              *{

                 margin: 0;

                 padding: 0;

              }

              a{

                 text-decoration: none;

                 color: deeppink;

              }

              div{

                 200px;

                 height: 200px;

                 background: pink;

                 display: none;

                 text-align: center;

                 font: 50px/200px "微软雅黑";

              }

              :target{

                 display: block;

              }

          </style>

       </head>

       <body>

          <a href="#div1">div1</a>

          <div id="div1">div1</div>

       </body>

    </html>

    //可以通过css来实现点击链接,div选项卡功能

    隐私与:visited选择器

                                              只有下列的属性才能被应用到已访问链接:

                                                      color

                                                      background-color

                                                      border-color

    /*表单相关伪类*/

                                      :enabled  匹配可编辑的表单

                                      :disable    匹配被禁用的表单

                                      :checked  匹配被选中的表单

                                      :focus               匹配获焦的表单

                                     

     5:自定义单选按钮

    <!DOCTYPE html>

    <html>

       <head>

          <meta charset="UTF-8">

          <title></title>

          <style type="text/css">

              /*自定义样式*/

              *{

                 margin: 0;

                 padding: 0;

              }

              label{

                 position: relative;

                 float: left;

                 200px;

                 height: 200px;

                 border: 2px solid;

                 border-right:1px ;

                 border-radius: 50%;

                 overflow: hidden;

              }

              input{

                 position: absolute;

                 left: -50px;

                 top: -50px;

                 /*隐藏掉选择框按钮*/

              }

              label > span{

                 position: absolute;

                 left: 0;

                 top: 0;

                 right: 0;

                 bottom: 0;

              }

              input:checked +span{

                 background-color: aqua;

              }

          </style>

       </head>

       <body>

          <!--

              自定义单选按钮

            -->

          <label >

              <input type="radio" name="class" />

              <span></span>

          </label>

          <label >

              <input type="radio" name="class" />

              <span></span>

          </label>

          <label >

              <input type="radio" name="class" />

              <span></span>

          </label>

          <label >

              <input type="radio" name="class" />

              <span></span>

          </label>

         

       </body>

      

    </html>

    6:结构性伪类

     结构性伪类

                 ele:nth-child(index)

                 ele:nth-of-type(index) 以元素为中心

                

                 区别:

                    1.nth-child找到第index个子元素  这个子元素必须满足ele的规则

                      nth-of-type找到底index个ele子元素

                    2.nth-of-type以元素为中心

                 注意:

                    index可以是变量n(只能是n  0到正无穷)

                           odd:奇数

                           even:偶数

    <!DOCTYPE html>

    <html>

       <head>

          <meta charset="UTF-8">

          <title></title>

          <style type="text/css">

              /*结构性伪类*/

            /* nth-child */

              #warp>li:nth-child(1){

                 background-color: pink;

              }

              /*表示#warp下所有的孩子,并且是第一个孩子,并且这个元素是li*/

              #warp>p:nth-child(2){

                 background-color: pink;

                 /*表示#warp下所有的孩子,并且是第二个孩子,并且这个元素是p*/

              }

              #warp p:first-child{

                 color: yellow;

                 /*#warp p:first-child warp下第一个孩子,而且第一个孩子是p元素*/

              }

              #warp p:only-child{

                 background-color: red;

                 /* #warp p:only-child warp只有一个孩子,孩子为p元素*/

              }

              /* nth-of-type 没有孩子的这个限制 */

              #warp p:first-of-type{

                 /*warp下的第一个p元素*/

                 color: hotpink;

              }

          </style>

       </head>

       <body>

          <ul id="warp">

              <p>frist-of-p</p>

              <li>1</li>

              <li>2</li>

              <li>3</li>

              <li>4</li>

              <li>5</li>

              <li>6</li>

              <li>7</li>

              <li>8</li>

          </ul>

       </body>

    </html>

    <!DOCTYPE html>

    <html>

       <head>

          <meta charset="UTF-8">

          <title></title>

          <style type="text/css">

              *{

                 margin: 0;

                 padding: 0;

              }

           #warp .inner:nth-of-type(1){

             background-color: red;

           }

           /*nth-of-type 是以元素为主体*/ 下方所有的元素都会被选中

          </style>

       </head>

       <body>

          <ul id="warp">

              <p class="inner">p</p> //RED

              <span class="inner">span</span>//RED

              <div class="inner">div</div> //RED 

          </ul>

       </body>

    </html>

    <!DOCTYPE html>

    <html>

       <head>

          <meta charset="UTF-8">

          <title></title>

          <style type="text/css">

              *{

                 margin: 0;

                 padding: 0;

              }

              ul>li{

                 list-style: none;

                 float: left;

                 200px;

                 height: 200px;

                 background-color: #000000;

              }

              /*所有li加上右边框,最后一个除外*/

              li:not(:last-of-type) {

                 border-right:#00FFFF 2px solid ;

              }

              /*empty 选中内容为空的元素*/

              li:empty{

                 background-color: hotpink;

              }

          </style>

       </head>

       <body>

          <ul>

              <li></li>

              <li></li>

              <li>3</li>

              <li></li>

          </ul>

       </body>

    </html>

    7:伪元素

                 ::after

                 ::before

    ::after 清除浮动

    8:声明的优先级

    css声明的优先级

          选择器的特殊性

              选择器的特殊性由选择器本身的组件确定,特殊性值表述为4个部分,如    0,0,0,0

              一个选择器的具体特殊性如下确定:

                     1.对于选择器中给定的ID属性值,加 0,1,0,0

                     2.对于选择器中给定的各个类属性,属性选择,或伪类,加 0,0,1,0

                     3.对于选择器中的给定的各个元素和伪元素,加0,0,0,1

                     4.通配符选择器的特殊性为0,0,0,0

                     5.结合符对选择器特殊性没有一点贡献

                     6.内联声明的特殊性都是1,0,0,0

                     7.继承没有特殊性

     

                 特殊性 1,0,0,0 大于所有以0开头的特殊性(不进位)

                 选择器的特殊性最终都会授予给其对应的声明

                 如果多个规则与同一个元素匹配,而且有些声明互相冲突时,特殊性越大的越占优势

     

                 注意:id选择器和属性选择器

                       div[id="test"](0,0,1,1) 和 #test(0,1,0,0)  

          重要声明

              有时某个声明比较重要,超过了所有其他声明,css2.1就称之为重要声明

              并允许在这些声明的结束分号之前插入  !important  来标志

              必须要准确的放置  !important 否则声明无效。

              !important 总是要放在声明的最后,即分号的前面

               

               标志为 !important的声明并没有特殊的特殊性值,不过要与非重要声明分开考虑。

               实际上所有的重要声明会被浏览器分为一组,重要声明的冲突会在其内部解决

               非重要声明也会被分为一组,非重要声明的冲突也会在其内部解决

               如果一个重要声明与非重要声明冲突,胜出的总是重要声明

          继承

              继承没有特殊性,甚至连0特殊性都没有

              0特殊性要比无特殊性来的强

          来源

              css样式的来源大致有三种

                创作人员

                读者

                用户代理  

               

              权重:

                 读者的重要声明

                 创作人员的重要声明

                 创作人员的正常声明

                 读者的正常声明

                 用户代理的声明

          层叠

              1.找出所有相关的规则,这些规则都包含一个选择器

              2.计算声明的优先级

                         先按来源排序

                         在按选择器的特殊性排序

                         最终按顺序

  • 相关阅读:
    ref与out的区别(C#)
    用MS SQL Server 2008修改数据库表时提示“不允许保存更改”的解决方法
    测试的职责
    性能测试新手误区(三):用户数与压力
    JAVA + LR实现apache流媒体的性能测试(LR部分)
    性能测试新手误区(二):为什么我模拟的百万测试数据是无效的
    JAVA + LR实现apache流媒体的性能测试(JAVA部分)
    性能测试新手误区(六):性能监控
    性能测试新手误区(五):这是性能问题么
    性能测试新手误区(四):一切来自录制
  • 原文地址:https://www.cnblogs.com/love-life-insist/p/9379892.html
Copyright © 2020-2023  润新知