欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CSS 样式来源、选择器和权重复习

程序员文章站 2022-03-03 21:30:25
...

CSS 样式来源、选择器和权重

一. 元素样式来源

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>元素样式来源</title>
  8. </head>
  9. <body>
  10. <!-- 1.继承样式 -->
  11. <style>
  12. .a1 {
  13. font-size: 40px;
  14. color: blue;
  15. }
  16. </style>
  17. <div class="a1">
  18. <p>这是P标签,样式继承div标签a1样式颜色、字号。</p>
  19. </div>
  20. <!-- 2.默认样式 -->
  21. <h2>这是h2标签的默认样式</h2>
  22. <h3>这是h3标签的默认样式</h3>
  23. <!-- 3.自定义样式 -->
  24. <!-- 3.1 行内样式 -->
  25. <p style="color: cadetblue; font-size: 30px">这是p标签定义了行内样式</p>
  26. <!-- 3.2 文档样式 -->
  27. <style>
  28. .aa {
  29. display: block;
  30. width: 600px;
  31. font-size: 30px;
  32. line-height: 60px;
  33. color: white;
  34. background-color: darkcyan;
  35. border: 1px solid coral;
  36. }
  37. </style>
  38. <p class="aa">这是p标签定义的文档样式</p>
  39. <!-- 3.3 外部样式 -->
  40. <link rel="stylesheet" href="/style.css" />
  41. <p class="wai">这是p标签定义的外部文档sytle.css样式</p>
  42. </body>
  43. </html>

二、选择器

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>选择器</title>
  8. </head>
  9. <body>
  10. <!-- 1. 标签选择器 -->
  11. <style>
  12. h2 {
  13. color: violet;
  14. }
  15. </style>
  16. <h2>通过标签选择器设置样式</h2>
  17. <!-- 2. 属性选择器 -->
  18. <style>
  19. button[value="2"] {
  20. display: block;
  21. padding: 15px;
  22. font-size: 30px;
  23. }
  24. </style>
  25. <button value="2">通过属性选择器设置样式</button>
  26. <!-- 3. 群组选择 -->
  27. <ul>
  28. <li class="qz1">群组选择1</li>
  29. <li class="qz2">群组选择2</li>
  30. <li class="qz3">群组选择3</li>
  31. </ul>
  32. <style>
  33. .qz1,
  34. .qz2,
  35. .qz3 {
  36. color: turquoise;
  37. }
  38. </style>
  39. <!-- 4. 通配选择 -->
  40. <ul class="tp">
  41. <li class="tp1">通配选择1</li>
  42. <li class="tp2">通配选择2</li>
  43. <li class="tp3">通配选择3</li>
  44. </ul>
  45. <style>
  46. .tp * {
  47. color: rgb(0, 89, 255);
  48. font-size: 35px;
  49. }
  50. </style>
  51. <!-- 5. 上下文选择器 -->
  52. <!-- 5.1 子元素 -->
  53. <div class="z1">
  54. <h2>子元素选择h2</h2>
  55. <p>子元素选择p</p>
  56. </div>
  57. <style>
  58. .z1 > h2 {
  59. color: tomato;
  60. }
  61. .z1 > p {
  62. font-size: 25px;
  63. }
  64. </style>
  65. <!-- 5.2 后代元素选择 -->
  66. <div class="hd">
  67. <div>
  68. <p>孙代元素选择</p>
  69. <div>
  70. <p>从孙代</p>
  71. </div>
  72. </div>
  73. </div>
  74. <style>
  75. .hd p {
  76. color: turquoise;
  77. }
  78. </style>
  79. <!-- 5.3 相邻兄弟元素选择 -->
  80. <div>
  81. <h1>老大</h1>
  82. <h2 class="xlxd">老二相邻的兄弟是老三,往后找最近的兄弟</h2>
  83. <h3>老三</h3>
  84. <h4>老四</h4>
  85. </div>
  86. <style>
  87. .xlxd + * {
  88. font-size: 60px;
  89. }
  90. </style>
  91. <hr />
  92. <!-- 5.4 所有兄弟元素选择 -->
  93. <div>
  94. <h1>老大</h1>
  95. <h2 class="xlxd">老二的所有兄弟是往后找所有的兄弟,因此老大不是</h2>
  96. <h3>老三</h3>
  97. <h4>老四</h4>
  98. </div>
  99. <style>
  100. .xlxd ~ * {
  101. font-size: 60px;
  102. }
  103. </style>
  104. </body>
  105. </html>

三、选择器的权重

1. 权重比较规则

- 把“id”,“class”,“标签” 看成一个三位数的整数

- “id”为百位数,有 1 个为 1,有 2 个为 2…

- “class”为十位数,有 1 个为 1,有 2 个为 2…

- “标签”为个位数,有 1 个为 1,有 2 个为 2…

- 三位数大的选择器权重大

  1. <!-- 选择器的权重 -->
  2. <div class="d"><h2 class="css" id="i">选择器的权重</h2></div>
  3. <style>
  4. /* 权重:110 */
  5. .d > #i {
  6. color: red;
  7. }
  8. /* 权重011 */
  9. div > .css {
  10. color: sandybrown;
  11. }
  12. /* 权重111,最大,所以显示该样式 */
  13. div > #i.css {
  14. color: skyblue;
  15. }
  16. /* 权重020 */
  17. .d .css {
  18. color: slateblue;
  19. }
  20. </style>

2. 不推荐用 id 和标签作为选择器

  • id 权重太高, 为了让你的代码具有弹性,尽可能用 class。
  • 标签数量太少了, 而 class 可以有多种命名,使用方便。