博客列表 >css 元素样式来源,基本选择器,上下文选择器与权重(重要)解析

css 元素样式来源,基本选择器,上下文选择器与权重(重要)解析

小柯
小柯原创
2021年12月24日 22:16:24446浏览

元素样式来源:

  1. 浏览器默认样式

  2. 用户自定义样式

  • 行内样式:
    style=“ ”
  • 文档样式
    <style></style>
  • 外部样式(使用 link 标签引入)
    style.css

3 优先级:行内样式>文档样式>外部样式
另外样式优先级还与书写顺序有关,后写的会覆盖前面写的(权重一样的情况下)

基本选择器:根据元素自身特点来选择

以下面实例代码来演示各个类型的基本选择器:

  1. <h2>item1</h2>
  2. <h2 title="hello">item2</h2>
  3. <h2 id="a">item3</h2>
  4. <h2 id="a">item4</h2>
  5. <h2 class="b">item5</h2>
  6. <h2 class="b">item6</h2>
  1. 标签选择器
  1. <style>
  2. h2 {
  3. color: red;
  4. }
  5. </style>
  1. 属性选择器
  1. <style>
  2. 属性写到中括号里面
  3. h2[title="hello"] {
  4. color: green;
  5. }
  6. 可以简化不写属性值也有效
  7. h2[title] {
  8. color: green;
  9. }
  10. id: 用于唯一元素
  11. id 的唯一性由开发者确保
  12. h2[id="a"] {
  13. color: blue;
  14. }
  15. class: 用于多个元素
  16. h2[class="b"] {
  17. color: violet;
  18. }
  19. id, class 是高频属性(用的特别多)
  20. id 简写使用 “#”
  21. h2#a {
  22. color: cyan;
  23. }
  24. class 简写使用 “.”
  25. h2.b {
  26. color: orange;
  27. }
  28. 推荐尽可能只用 class 权重比较低
  29. </style>
  1. 群组选择器
    中间使用逗号隔开,选择多个
  1. <style>
  2. h2#a,
  3. h2.b {
  4. background-color: yellow;
  5. }
  6. </style>
  1. 通配选择器:
  1. <style>
  2. html body {
  3. background-color: gray !important;
  4. }
  5. </style>

如果需要调试,加高权重,使用“!important”,优先级别最高

上下文选择器(也叫层级选择器):

以下面实例代码来演示上下文选择器:

  1. <ul class="list">
  2. <li class="item">item1</li>
  3. <li class="item second">item2</li>
  4. <li class="item">
  5. item3
  6. <ul class="inner">
  7. <li>itemsun-1</li>
  8. <li>itemsun-2</li>
  9. <li>itemsun-3</li>
  10. </ul>
  11. </li>
  12. <li class="item">item4</li>
  13. <li class="item">item5</li>
  14. <li class="item">item6</li>
  15. <li class="item">item7</li>
  16. <li class="item">item8</li>
  17. </ul>
  1. 子元素:
    只选择子元素,不选择孙元素,如不选择 item3 下面的 itemsun-1 到 3 使用 “>” 号
  1. <style>
  2. .list > li {
  3. border: 1px solid #000;
  4. }
  5. </style>
  1. 后代元素: 使用空格
  1. <style>
  2. .list li {
  3. border: 1px solid #000;
  4. }
  5. </style>
  1. 相邻兄弟: 使用 “+” 号
    .item 中间空格去掉 second 换成“.”链接起来,否则就是后代元素了
    如果用的背景色,内部的孙元素会继承背景色,使用其他属性则不会。
  1. <style>
  2. .item.second + * {
  3. background-color: lightcyan;
  4. }
  5. </style>
  1. 所有兄弟: 使用 “~” 号
    从某个起到后面所有的选中,例如第二个起到后面所有。
  1. <style>
  2. .item.second ~ * {
  3. background-color: yellow;
  4. }
  5. </style>

选择器的权重

最高级:!important
第一等:内链 style=””
第二等:id 选择器 #h3
第三等:class 选择器 .h3
第四等:空格选择器 div h3
通配符:子选择器、相邻选择器等

1 示例:<h3 id="a" class="b" ></h3>
选择当前的 h3 有 3 种选择器,我们将 id,class,tag 想象成三位整数,初始为 0,0,0

id class tag
百位 十位 个位
0 0 0

由示例可看出大致权重

  1. <style>
  2. /* 权重:(1,1,1) */
  3. h3.b#a {
  4. background-color: red;
  5. }
  6. /* 权重:(0,1,1) */
  7. h3.b {
  8. background-color: green;
  9. }
  10. /* 权重:(0,0,1) */
  11. h3 {
  12. background-color: blue;
  13. }
  14. </style>

2 为什么不推荐使用id和tag,而是class

  • 为什么不推荐用 id?
    因为权重太高, 为了让你的代码具有弹性,尽可能用 class

  • 为什么不用权重最低的标签呢?
    语义化标签太少了,数量有限,class 可以无限数量,任意命名

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议