博客列表 >CSS基础1:元素样式来源,选择器,权重

CSS基础1:元素样式来源,选择器,权重

超的php学习历程
超的php学习历程原创
2022年01月14日 17:05:18461浏览

CSS基础1

1.CSS是什么

Cascading Style Sheets(CSS)既层叠样式表。
主要功能:1. 设置元素样式(翻译:长什么样子) 2.元素布局(翻译:在哪里显示)。

2.元素样式来源有哪些

2.1 CSS工作流:1.找到元素 2.设置样式。

2.2 CSS元素样式来源:

  1. 默认样式:用户代理样式(既浏览器样式)。
  2. 自定义样式:分为行内样式(style=“…”),文档样式(style标签),外部样式(style.css使用link标签引用外部文件)
  3. 继承样式:(关键词inhert),通常关于文本的颜色,字体,字号可以继承,而盒模型样式不能继承。

2.3 元素样式优先级排序

行内样式 > 文档样式 > 外部样式 > 默认样式 > 继承样式

2.4实例演示几种样式来源:

  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. <link rel="stylesheet" href="css/style1.css" />
  8. <title>实例演示样式来源</title>
  9. </head>
  10. <body>
  11. <!-- 1.默认样式来源 -->
  12. <h1>默认样式</h1>
  13. <!-- 2.自定义样式 -->
  14. <!-- 2.1 行内样式 -->
  15. <h2 style="color: brown">行内样式</h2>
  16. <!-- 2.2 文档样式 -->
  17. <h3>文档样式</h3>
  18. <style>
  19. h3 {
  20. color: cadetblue;
  21. }
  22. </style>
  23. <!-- 2.3 外部样式 -->
  24. <h4>外部样式</h4>
  25. <!-- 继承样式 -->
  26. <div>
  27. div父样式
  28. <p>p标签继承父样式</p>
  29. <h5>h5继承父样式</h5>
  30. </div>
  31. <style>
  32. div {
  33. color: yellowgreen;
  34. }
  35. p {
  36. color: thistle;
  37. color: inherit;
  38. }
  39. h5 {
  40. color: tomato;
  41. color: inherit;
  42. }
  43. </style>
  44. </body>
  45. </html>

效果图:

3. 选择器

什么是选择器,理解就是要设置css样式的对象,可以作为选择器的对象有以下几种:
3.1基本选择器:tag,例如h1
3.2属性选择器:例如 <h1 title="a"> hello </h1> 种的title,应用中使用h1[titile=”a”]来选择引用。其中 id和class属于高频属性,简化用法为id用”#”代替,class用“.” 代替。推荐是用class,因为在后面权重中id得权重过高,无进一步提升空间。
3.3群组选择器:多个选择器并列,用逗号隔开,例如.a,p {color:red}
3.4通配符选择器:用*号表示,例如 html body *{color:red}
3.5上下文选择器/层级选择器:其中,子元素用”>”表示;后代元素用“空格”表示;邻居兄弟元素用“+ *”表示;所有兄弟元素用“~ *” 表示。
实例代码

  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>CSS选择器的种类及用法</title>
  8. </head>
  9. <body>
  10. <!-- 1. 基本选择器 tag -->
  11. <h1>这是基本选择器,使用h1标签</h1>
  12. <style>
  13. h1 {
  14. color: khaki;
  15. }
  16. </style>
  17. <!-- 2. 属性选择器 -->
  18. <h2 title="a">这是属性选择器,h2[title="a"]</h2>
  19. <style>
  20. h2[title="a"] {
  21. color: red;
  22. }
  23. </style>
  24. <h3 id="a">这是属性选择器,h3#id</h3>
  25. <style>
  26. h3#a {
  27. color: saddlebrown;
  28. }
  29. </style>
  30. <h4 class="a">这是属性选择器,h4.class</h4>
  31. <style>
  32. h4.a {
  33. color: skyblue;
  34. }
  35. </style>
  36. <!-- 3. 通配符选择器 -->
  37. <div>
  38. <ul class="list">
  39. <li class="item1">item1</li>
  40. <li class="item2">item2</li>
  41. <ul class="list2">
  42. <li class="item">item1</li>
  43. <li class="item second">item2</li>
  44. <ul class="list3">
  45. <li class="item">item1</li>
  46. <li class="item">item2</li>
  47. <li class="item">item3</li>
  48. </ul>
  49. <li class="item">item3</li>
  50. </ul>
  51. <li class="item3">item3</li>
  52. <li class="item4">item4</li>
  53. </ul>
  54. <style>
  55. /* 子元素选择器“>” */
  56. .list > li {
  57. border: 1px solid slateblue;
  58. }
  59. /* 后代元素选择器用“空格” */
  60. .list2 li {
  61. border: tomato solid 1px;
  62. }
  63. /* 邻居兄弟元素选择器用“+ *” */
  64. .item2 + * {
  65. background-color: green;
  66. }
  67. /* 所有兄弟元素选择器用“~ *” */
  68. .item.second ~ * {
  69. color: turquoise;
  70. }
  71. </style>
  72. </div>
  73. </body>
  74. </html>

效果图:

4.选择器权重

CSS规则是同样名称后写的覆盖前面的,为了保证前面的能生效,产生出权重的概念,权重是由specificity(0,0,0)表示的,个位代表tag数量,十位代表class数量,百位代表id数量,这也是为什么程序员在代码中将id认为成唯一的原因,因为id权重过高,很有可能遇到提权重的瓶颈,tag的语义化标签数量有限,不能满足复杂度需求,class没有数量限制,可以自定义,所以成为代码中最常用的属性,其对增加代码的弹性起到了重要作用。
最重要的是要学会权重的计算,并在实际编程中使用权重。
实例

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  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. <h1 class="title" id="active">Hello</h1>
  11. <style>
  12. /* 1 1 2 */
  13. /* 2: 表示2个标签,
  14. 1: 表示1个class
  15. 1: 表示1个id */
  16. body h1.title#active {
  17. color: red;
  18. }
  19. /* 0 1 2 */
  20. /* 2: 表示2个标签,
  21. 1: 表示1个class
  22. 0: 表示没有id */
  23. body h1.title {
  24. color: blue;
  25. }
  26. /* 就想放在第一行,又想让它生效,只有提权 */
  27. /* 0 0 2 */
  28. /* 2: 表示2个标签,
  29. 0: 表示没有class
  30. 0: 表示没有id */
  31. body h1 {
  32. color: green;
  33. }
  34. /* 相同的权重,由位置决定样式 */
  35. /* 0 0 1 */
  36. /* 1: 表示只有一个标签,
  37. 0: 表示没有class
  38. 0: 表示没有id */
  39. h1 {
  40. color: darkorange;
  41. }
  42. /* 三个权重的位置, 从右到左
  43. 第1位: 标签数量
  44. 第2位: class数量
  45. 第3位: id数量 */
  46. /* css 将 id, class, tag 看成一个"三位整数", id -> 百位, class -> 十位, tag -> 个位 */
  47. /* h1 {
  48. color: violet !important;
  49. } */
  50. /* id : 为什么不推荐用? 因为权重太高, 为了让你的代码具有弹性,尽可能用class */
  51. /* 为什么不用权重最低的标签呢? 只是标签的数量太少了, 而class可以任何命名 */
  52. /* bootstrap , element ui */
  53. </style>
  54. <div class="col-md-3 vip">Bootstrap</div>
  55. <style>
  56. /* 0 2 1 */
  57. div.col-md-3.vip {
  58. border: 5px solid red;
  59. }
  60. /* 0 1 1 */
  61. div.col-md-3 {
  62. border: 1px solid #000;
  63. }
  64. </style>
  65. </body>
  66. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议