• CSS选择器


    CSS选择器

    一、基础选择器

    1、通配选择器

    - {
       border: solid;
    }
    匹配文档中所有标签:通常指html、body及body中所有显示类的标签

    2、标签选择器

    div {
       background-color: yellow;
    }
    匹配文档中所有与标签名匹配的标签:如div{}会匹配文档中全部div,span{}会匹配文档中所有span

    3、类选择器

    .red {
       color: red;
    }
    匹配文档中所有拥有class属性且属性值为red的标签:如<sup class="red"></sup> <sub class="red"></sub>均会被匹配

    4、id选择器

    #div {
       text-align: center;
    }
    匹配文档中所有拥有id属性且属性值为div的标签:如<div id="div"></div> <section id="div"></section>均会被匹配

    二、基础选择器优先级

    • 基础选择器优先级大致与选择器匹配范围成反比,匹配范围越小,优先级越高

    • 基础选择器优先级大致与选择器匹配精度成正比,匹配精度越高,优先级越高

    • 基础选择器优先级:id选择器 > 类选择器 > 标签选择器 > 通配选择器

    v_hint:id选择器必须保证单文档的唯一性

    三、组合选择器

    1、群组选择器

    div, span, .red, #div {
       color: red;
    }
    • 一次性控制多个选择器

    • 选择器之间以,隔开,每一个选择器位均可以为任意合法选择器或选择器组合

    2、子代(后代)选择器

    子代选择器用>连接
    body > div {
       color: red;
    }
    后代选择器用空格连接
    .sup .sub {
       color: red;
    }
    • 一次性控制一个选择器(逻辑最后的那个选择器),前置位的选择器为修饰性选择器

    • 每一个选择器位均可以为任意合法选择器或选择器组合

    • 子代选择器必须为一级父子嵌套关系,后代选择器可以为一级及多级父子嵌套关系

    3、相邻(兄弟)选择器

    相邻选择器用+连接
    .d1 + .d2 {
       color: red;
    }
    兄弟选择器用~连接
    .d1 ~ .d3 {
       color: red;
    }
    • 一次性控制一个选择器(逻辑最后的那个选择器),前置位的选择器为修饰性选择器

    • 每一个选择器位均可以为任意合法选择器或选择器组合

    • 相邻选择器必须为直接相邻关系,兄弟选择器可以为直接相邻或间接相邻关系

    4、交集选择器

    <div class="d" id="dd"></div>
    div.d#dd {
       color: red;
    }

    <div class="d1 d2 d3"></div>
    .d1.d2.d3 {
       color: red;
    }

    四、组合选择器优先级

    • 组合选择器优先级与权值相关,权值为权重和

    1. 权重对应关系

    选择器权重
    通配 1
    标签 10
    类、属性 100
    id 1000
    !important 10000
    • 选择器权值比较,只关心权重和,不更新选择器位置

    • 不同级别的选择器间不具备可比性:1个类选择器优先级高于n个标签选择器的任意组合

    五、属性选择器

    • [attr]:匹配拥有attr属性的标签

    • [attr=val]:匹配拥有attr属性,属性值为val的标签

    • [attr^=val]:匹配拥有attr属性,属性值以val开头的标签

    • [attr$=val]:匹配拥有attr属性,属性值以val结尾的标签

    • [attr*=val]:匹配拥有attr属性,属性值包含val的标签

    ==============================================================================================================================================================

    笔记

    基础选择器:

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>css选择器</title>
      <style type="text/css">
      /*基础选择器*/
      /*1.通配选择器(*): 匹配所有(html,body,body中的所有子标签)(具有显示效果的所有标签)*/
      /** {
      border: solid;
      }*/

      /*2.标签选择器(标签名):匹配指定标签名的对应所有标签*/
      div {
       100px;
      height: 100px;
      background-color: red;
      }
      section {
       200px;
      height: 200px;
      background-color: yellow;
      }

      /*3.类选择器(.):匹配指定类名对应的所有标签*/
      .dd {
      font-size: 50px;
      }

      /*4.id选择器(#):匹配指定id名对应的唯一标签*/
      /*html,css都是标记语言,所有对id可以进行多匹配,但js是编程语言.只能匹配到一个*/
      #ele {
      color: blue;
      }

      /*总结:*/
      /*1.通配选择器一般用于整体reset操作(reset操作:清除系统自定义样式)*/
      /*
      * {
      margin: 0;
      }
      */
      /*2.标签与id选择器运用场景并不多,一般不提倡采用id选择器进行布局*/
      /*3.类选择器为布局首选(建议基本全用class选择器进行布局)*/

      /*基本选择器优先级:id > class > 标签 > 通配*/
      /*目标对象:<div class="d" id="ele">d_2</div>*/
      * {
      text-align: left;
      }
      div {
      text-align: right;
      }
      .d {
      text-align: center;
      }
      #ele {
      text-align: left;
      }

    </style>
    </head>
    <body>
      <div class="dd">d_1</div>
      <section>s_1</section>
      <div class="d" id="ele">d_2</div>
      <section class="dd">s_2</section>
      <span></span>
    </body>
    </html>

    组合选择器:

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>组合选择器</title>
      <style type="text/css">
      /*组合选择器*/
      /*特性:每个选择器位可以为任意基本选择器或选择器组合*/

      /*群组选择器: ,隔开*/
      /*控制多个*/
      div, .s, section {
      color: red;
      }
      /*子代选择器: >连接*/
      body > div {
      color: orange;
      }
      /*div > a {
      text-decoration: none;
      }*/
      /*后代选择器: 空格连接*/
      /*包含子代选择器*/
      body a {
      text-decoration: none;
      }
      /*相邻选择器: +连接*/
      span + section {
      background-color: pink;
      }
      /*兄弟选择器: ~连接*/
      /*包含相邻选择器*/
      div ~ section {
      background-color: brown;
      }

      /*交集选择器*/
      /*即是选择器1又是选择器2*/
      i.s {
      color: yellow;
      }

      /*多类名选择器*/
      .d1 {
      color: blue;
      }
      .d1.d2 {
      color: tan;
      }
      .d1.d2.d3 {
      color: #780;
      }
      </style>
    </head>
    <body>
      <!-- div{div}+span{span}+section{section} -->
      <div>div</div>
      <span class="s">span</span>
      <section>section</section>
      <div>
      <a href="">a标签</a>
      </div>
      <i class="s">iiii</i>
      <div class="d1 d2 d3">呵呵</div>

    </body>
    </html>

     组合选择器优先级:

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>组合选择器优先级</title>
      <style type="text/css">
      /*同目录结构下*/
      /*1.子代与后代优先级相同*/
      /*body > div == body div*/
      /*2.相邻与兄弟优先级相同*/
      /*div + span == div ~ span*/
      /*3.最终样式采用逻辑后的样式值*/

      /*不同目录结构下*/
      /*1.根据选择器权值进行比较*/
      /*2.权值为标签权重之和*/
      /*3.权重: *:1 div:10 class:100 id:1000 !important:10000 */
      /*4.权值比较时,关心的是值大小,不关心位置与具体选择器名*/
      /*5.id永远比class大,class永远比标签大*/
      /*注:控制的是同一目标,才具有可比性*/
      /*div>div>div>div>...>div {} 11 < .div{}*/

      /*10*/
      div {
      color: red;
      }
      /*20*/
      div div {
      color: yellow;
      }
      /*大于一切标签*/
      .d2 {
      color: blue;
      }
      /*.d2抵消,剩权重10*/
      div .d2 {
      color: orange;
      }
      /*等价于div .d2,权值相同,位置决定*/
      .d1 div {
      color: pink;
      }
      /*又多10*/
      div .d1 div {
      color: tan;
      }
      /*不具有可比性*/
      div .d1 > div{
      color: green;
      }
      /*高于一切class及标签*/
      #dd1 div {
      color: #000;
      }
    </style>
    </head>
    <body>
      <!-- div>.d1>#dd1>div>.d2 -->
      <div>
        <div class="d1">
          <div id="dd1">
            <div>
              <div class="d2">12345</div>
            </div>
          </div>
          <!-- <div id="dd2">
            <div>
              <div class="d2">12345</div>
            </div>
          </div> -->
        </div>
      </div>
    </body>
    </html>

    属性选择器:

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>属性选择器</title>
      <style>
        .d2 {
        color: red;
        }
        /*属性选择器权重 == class选择器权重*/
        /*有属性class的所有标签*/
        [class] {
        color: orange;
        }

        /*有属性class且值为d2的所有标签(值不影响权重)*/
        [class="d2"] {
        color: pink;
        }

        /*是div且class='d2',增加了权重*/
        div[class='d2'] {
        color: blue;
        }

        /*属性以什么开头: ^= */
        /*属性以什么结尾: $= */
        /*属性模糊匹配: *= */
        [class ^= 'he'] {
        color: yellow;
        }
        [class $= 'ld'] {
        color: tan;
        }
        [class *= 'ow'] {
        color: cyan;
        }
        [class][dd] {
        color: brown;
        }

      </style>
    </head>
    <body>
      <!-- div.d1>.d2 -->
      <div class="d1">00000
      <div class="d2">12345</div>
      <!-- dd与do为自定义属性 -->
      <div class="helloworld" dd do="do something">helloworld</div>
      </div>
    </body>
    </html>

  • 相关阅读:
    设计模式详解(图码)
    设计模式详解(图)
    Zookeeper学习
    取消单元格的点击事件
    ios 中生成随机数
    IOS 时间和时间戳之间转化
    偏好存空判断
    限制textfield的文字长度
    tabBar的图标不被系统渲染
    (转)IOS http请求的get 和 post的请求的区别
  • 原文地址:https://www.cnblogs.com/zhangpang/p/9720397.html
Copyright © 2020-2023  润新知