博客列表 >选择器的权重

选择器的权重

恒儿哥哥
恒儿哥哥原创
2022年03月26日 13:26:58508浏览

1.上下文选择器/层级选择器
css语法表达
1.子元素:>
2.后代元素: 空格
3.相邻兄弟:+
4.所有兄弟:~
层级:>,空格
平级:+,~
2.选择器权重
页面元素:标签+属性 样式规则:选择器{声明}

1.选择器的权重,计算过程

  1. <div class="a">
  2. <h1 id="b" class="c">hello world</h1>
  3. </div>
  4. css文件
  5. div {
  6. background-color: red;
  7. width: 200px;
  8. }
  9. div > h1 {
  10. color: blue;
  11. }

div标签的样式的权重是:0个id,0个class,1 个标签 ——(0,0,1)
h1标签的权重是: 0个id,0个class,2 个标签(div+h1) ——(0,0,2)

  1. 现在改变字的颜色
    1. div {
    2. background-color: red;
    3. width: 200px;
    4. }
    5. div > h1 {
    6. color: blue;
    7. }
    8. div > h1 {
    9. color: cyan;
    10. }
    这里通过后写样式覆盖先前的样式将字的颜色经行改变
  2. 现在想将字改回原来的颜色
    有两种方法:
    1.第一种是继续使用后写的样式去覆盖先前的样式
    2.第二种就是改变样式的权重
    1. div {
    2. background-color: red;
    3. width: 200px;
    4. }
    5. div > h1.leteracy {
    6. color: blue;
    7. }
    8. div > h1 {
    9. color: cyan;
    10. }
    现在div > h1.leteracy的权重是:0个id,1个class,2个tagName —— (0,1,2)
    而先前div > h1的权重是:0个id,0个class,2个tagName —— (0,0,2)
    显然(0,1,2) > (0 , 0 ,2)
    通过这样的写法,css通过选择器的权重从而可以忽略书写的顺序
  3. 调试样式
    在样式后加 !important 从而忽略样式的权重
    1. div {
    2. background-color: red;
    3. width: 200px;
    4. }
    5. div > h1.leteracy {
    6. color: blue;
    7. }
    8. div > h1 {
    9. color: cyan !important;
    10. }
    此时虽然上一个h1的权重大于后一个的权重,但是后一个样式中加了!important就只显示后一个的样式
    伪类选择器
    1.计算权重,伪类也算是class
    结构伪类
    1.生成无序列表
    1. <ul class="list">
    2. <li class="item1">item1</li>
    3. <li class="item2">item2</li>
    4. <li class="item3">item3</li>
    5. <li class="item4">item4</li>
    6. <li class="item5">item5</li>
    7. <li class="item6">item6</li>
    8. <li class="item7">item7</li>
    9. <li class="item8">item8</li>
    10. <li class="item9">item9</li>
    11. <li class="item10">item10</li>
    12. <li class="item11">item11</li>
    13. <li class="item12">item12</li>
    14. <li class="item13">item13</li>
    15. <li class="item14">item14</li>
    16. <li class="item15">item15</li>
    17. </ul>
    2.改变全部样式CSS写法
    写法1:
    1. ul {
    2. width:100px;
    3. background-color: black;
    4. }
    5. ul>li {
    6. color:aqua;
    7. background-color: violet;
    8. }
    9. // 写法2:使用伪类:匹配分组的任意位置的子元素th-of-type(n)
    10. ul {
    11. width:100px;
    12. background-color: black;
    13. }
    14. ul>:nth-of-type(n) {
    15. color:aqua;
    16. background-color: violet;
    17. }
    效果是一样的
    参数解释:
    1. :nth-of-type(an+b):
    2. a=[0,1,2….]
    3. n=[0,1,2,….]
    b为偏置量
    如 -n+3 :
    -n result
    0 5
    -1 4
    -2 3
    -3 2
    -4 1
    忽略 =< 0 的数字
    即改变前五个的样式
    将其改成:nth-last-type-(an+b):一样的参数就会变成后五个
    又如:
    :nth-of-type(-2n+15)
    -n -2n+15
    0 15
    1 13
    2 11
    3 9
    4 7
    5 5
    6 3
    7 1
    将选中这些样式
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议