博客列表 >CSS样式表快速入门之三种样式来源及选择器优先级解决方案

CSS样式表快速入门之三种样式来源及选择器优先级解决方案

导导的PHP学习笔记
导导的PHP学习笔记原创
2020年10月10日 17:17:08850浏览

样式表的三种来源及示例

外部引入公共样式

  • 语法:<link rel="stylesheet" href="引入的样式地址">

  • 说明:一般放在网页的<head>……</head>标签中

  • 示例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>样式表来源</title>
  7. <link rel="stylesheet" href="style.css">
  8. </head>
  9. <body>
  10. ……
  11. </body>
  12. </html>

在当前文档中

  • 语法:<style>……</style>

  • 说明:

    1. 一般放在网页的<head>……</head>标签中
    2. 具体的样式需要写在<style>……</style>标签中
  • 示例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>样式表来源</title>
  7. <style>
  8. .love {
  9. color: red;
  10. font-size: 20px;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <p class="love">我喜欢CSS</p>
  16. </body>
  17. </html>

行内样式(当前元素的属性)

  • 语法:style="具体的样式写在这里"

  • 说明:直接在对应的标签内写上对应的样式即可

  • 示例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>样式表来源</title>
  7. </head>
  8. <body>
  9. <p style="color: red; font-size: 20px">我喜欢CSS</p>
  10. </body>
  11. </html>

CSS 优先级冲突的解决方案

样式表的来源优先级

  • 规则:外部引用 < 文档中引用 < 行内引用

  • 冲突解决方案:

    1. 把多个文档都适用的公共的样式表通过外部引用的方法进行使用
    2. 把当前文档中多个元素公用的样式写在当前文档的样式(<style>……</style>)中
    3. 把某一个元素特有的样式在其行内样式标签中style="..."使用

选择器的优先级及其冲突解决方案

  • 选择器的优先级:id > class > tag
  • 选择器的优先级解决方案规则:
    • 只有 tag 便签的情况下,tag 的数量越多,就越优先
    • 只有 class 的情况下,class 的数量越多,就越优先
    • 只有 id 的情况下,id 的数量越多,就越优先
    • 有两个或两个以上的选择器时,id 的优先级最高,其次是 class,最后是 tag

      使用技巧:两组选择器都对应同一元素时,判断哪一组的优先级别最高,可以先分别统计出每一组选择器具体包含多少个 id、class 和 tag,然后就可以根据上面的解决方案来做出判断了

示例 1:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>样式表来源</title>
  7. <style>
  8. p {
  9. color: blanchedalmond;
  10. font-size: 10px;
  11. }
  12. p.love {
  13. color: blue;
  14. font-size: 50px;
  15. }
  16. main p.love {
  17. color: rgb(0, 255, 119);
  18. font-size: 30px;
  19. }
  20. div main p.love {
  21. color: rgb(80, 27, 194);
  22. font-size: 40px;
  23. }
  24. #lv {
  25. color: rgb(75, 54, 104);
  26. font-size: 60px;
  27. }
  28. div main p#lv {
  29. color: rgb(19, 226, 157);
  30. font-size: 80px;
  31. }
  32. .love {
  33. color: red;
  34. font-size: 20px;
  35. }
  36. </style>
  37. </head>
  38. <body>
  39. <div class="container">
  40. <main>
  41. <p class="love" id="lv">我喜欢CSS</p>
  42. </main>
  43. </div>
  44. </body>
  45. </html>
  • 分析:上面的代码中,一共出现了七组选择器样式,最终的样式到底以哪一组为准呢?我们具体来看:
编号 选择器 id class tag 标识 优先级别
1 p 0 0 1 0,0,1 7
2 p.love 0 1 1 0,1,1 5
3 main p.love 0 1 2 0,1,2 4
4 div main p.love 0 1 3 0,1,3 3
5 #lv 1 0 0 1,0,0 2
6 div main p#lv 1 0 3 1,0,3 1
7 .love 0 0 1 0,1,0 6

说明:按照上面所说的选择器的优先级解决方案规则,我们对上面七组选择器先进行统计,按照“同类型看数量(数量越多,级别越高),不同类型看优先级(id>class>tag)”的原则来判断即可,最终我们得出结论:编号为6的这一组(div main p#lv)选择器的级别是最高的,其次是编号为5的这一组(#lv)级别是第二高的,以此类推,编号为1的这一组(p)级别是最低的。

-最终显示ide效果如下所示(div main p#lv优先级最高,故最终以它为准):

源码的顺序

  • 规则:同等级别下,后面出现的样式会覆盖前面的样式
  • 示例:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>样式表来源</title>
  7. <style>
  8. .love {
  9. color: red;
  10. font-size: 20px;
  11. }
  12. .love {
  13. color: blue;
  14. font-size: 50px;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <p class="love">我喜欢CSS</p>
  20. </body>
  21. </html>

最终显示的效果如下所示:

注意事项

  • 选择器中最好少用id(级别太高,不够灵活)
  • 尽可能不用tag标签(为了更方便地复用)
  • 选择器尽可能推荐使用class来实现
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议