当前位置:   article > 正文

CSS三大特性_父元素添加类名 影响子元素样式

父元素添加类名 影响子元素样式

四、CSS三大特性

1.1 继承性的介绍

特性:子元素有默认继承父元素样式的特点(子承父业)

 

可以继承的常见属性:

  1. color
  2. font-style、font-weight、font-size、font-family
  3. text-indent、text-align
  4. line-height
  5. ......

注意点:

  • 可以通过调试工具判断样式是否可以继承 

拓展 继承的应用

好处:可以在一定程度上减少代码

常见应用场景:

  1. 可以直接给ul设置list-style:none 属性,从而去除列表默认的小圆点样式(li继承自ul)
  2. 直接给body标签设置统一的font-size,从而统一不同浏览器默认文字大小
  1. <style>
  2. /* 1、直接给ul设置list-style:none 去除无序列表的小圆点 */
  3. ul {
  4. list-style: none;
  5. }
  6. /* 2、统一不同浏览器默认文字大小,直接给body标签设置统一的font-size */
  7. body {
  8. font-size: 20px;
  9. }
  10. </style>
  11. <body>
  12. <ul>
  13. <li>我是第1个li</li>
  14. <li>我是第2个li</li>
  15. <li>我是第3个li</li>
  16. <li>我是第4个li</li>
  17. <li>我是第5个li</li>
  18. <li>我是第6个li</li>
  19. <li>我是第7个li</li>
  20. <li>我是第8个li</li>
  21. <li>我是第9个li</li>
  22. <li>我是第10个li</li>
  23. </ul>
  24. </body>

 

 拓展 继承失败的特殊情况

如果浏览器有默认样式,此时继承性依然存在,但是优先显示浏览器的默认样式

  1. a标签的color会继承失效
  2. h系列标签的font-size会继承失效
  3. div的高度不能继承,但是宽度有类似于继承的效果

 2.1 层叠性的介绍

特性:

  • 给同一个标签设置不同的样式-->此时样式会层叠叠加-->会共同作用在标签上
    1. <style>
    2. p {
    3. color: red;
    4. }
    5. p {
    6. font-size: 30px;
    7. }
    8. </style>
    9. <body>
    10. <p>
    11. 我是一个文字 </p>
    12. </body>

  • 给同一个标签设置相同的样式-->此时样式会层叠覆盖-->最终写在最后的样式会生效
    1. <style>
    2. p {
    3. color: red;
    4. }
    5. p {
    6. color: blue;
    7. }
    8. </style>
    9. <body>
    10. <p>
    11. 我是一个文字 </p>
    12. </body>

注意点:

  1. 当样式冲突时,只有当选择器优先级相同时,才能通过层叠性判断结果 
    1. <style>
    2. .orange {
    3. color: orange;
    4. }
    5. p {
    6. color: red;
    7. }
    8. p {
    9. color: blue;
    10. }
    11. </style>
    12. <body>
    13. <p class="orange">我是一个文字 </p>
    14. </body>

3.1 优先级的介绍

特性:不同选择器具有不同的优先级,优先级高的选择器样式会覆盖优先级低的选择器样式

优先级公式:

  • 继承<通配符选择器<标签选择器<类选择器<id选择器<行内样式<!important
    1. <style>
    2. /* 7、!important */
    3. p {
    4. color: saddlebrown !important;
    5. }
    6. /* 5、id选择器 */
    7. #one {
    8. color: pink;
    9. }
    10. /* 4、类选择器 */
    11. .son {
    12. color: orange;
    13. }
    14. /* 3、标签选择器 */
    15. p {
    16. color: blue;
    17. }
    18. /* 2、通配符选择器 */
    19. * {
    20. color: green;
    21. }
    22. /* 1、继承 */
    23. .father {
    24. color: red;
    25. }
    26. </style>
    27. <div class="father">
    28. <!-- 6、行内样式 -->
    29. <p class="son" id="one" style="color: purple;">我是一个标签</p>
    30. </div>

     

注意点:

  1. !important写在属性值的后面,分号的前面
  2. !important不能提升继承的优先级,只要是继承优先级最低
  3. 实际开发中不建议使用!important 

3.2权重叠加计算

场景:如果是复合选择器,此时需要通过权重叠加计算方法,判断最终哪个选择器优先级最高会生效

权重叠加计算公式:(每一级之间不存在进位)

 比较规则:

  1. 先比较第一级数字,如果比较出来了,之后的统统不看
  2. 如果第一级数字相同,此时再去比较第二级数字,如果比较出来了,之后的统统不看
  3. ....
  4. 如果最终所有数字都相同,表示优先级相同,则比较层叠性(谁写在下面,谁说得算)

注意点:!important如果不是继承,则权重最高 

  1. <style>
  2. /* #one {
  3. color: red;
  4. }
  5. .son {
  6. color: blue;
  7. }
  8. p {
  9. color: green;
  10. } */
  11. /* 0,1,0,1 权重最高 */
  12. div #one {
  13. color: orange;
  14. }
  15. /* 0,0,2,0 */
  16. .father .son {
  17. color: skyblue;
  18. }
  19. /* 0,0,1,1 */
  20. .father p {
  21. color: purple;
  22. }
  23. /* 0,0,0,2 */
  24. div p {
  25. color: pink;
  26. }
  27. </style>
  28. <body>
  29. <div class="father">
  30. <p class="son" id="one">我是一个标签</p>
  31. </div>
  32. </body>

 

 

拓展 权重叠加计算案例

权重计算题解题步骤:

  1. 先判断选择器是否能直接选中标签,如果不能直接选中 -->是继承,优先级最低-->直接pass
  2. 通过权重计算公式,判断谁权重最高

注意点:

  • 实际开发中选择选择标签需要精准,尽量避免多个选择器同时选中一个标签的情况,不要自己为难自己 
  • 如果全是继承的情况,就找父元素
  1. <style>
  2. /* 对span来说是继承 */
  3. /* ========================= */
  4. /* 可以直接选中p标签 */
  5. div p {
  6. color: red;
  7. }
  8. /* 对span来说是继承 */
  9. /* ========================= */
  10. /* 不可以直接选中p标签,对p标签来说是继承 */
  11. .father {
  12. color: blue;
  13. }
  14. </style>
  15. <body>
  16. <div class="father">
  17. <!-- 2、p标签的文字颜色:red -->
  18. <p class="son">
  19. <!-- 1、span的样式肯定是继承得来的,子承父业 span标签继承了父标签p的颜色 -->
  20. <span>我是奥特曼</span>
  21. </p>
  22. </div>
  23. </body>

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号