博客列表 >CSS 基础(伪类选择器、字体图标、盒模型)

CSS 基础(伪类选择器、字体图标、盒模型)

赵大叔
赵大叔原创
2021年12月25日 23:31:16513浏览

CSS 基础(伪类选择器、字体图标、盒模型)

1. 伪类选择器

1.1 不分组匹配(不能区分元素种类,只根据顺序)

序号 选择器 描述 举例
1 :first-child 匹配第一个子元素 div :first-child
2 :last-child 匹配最后一个子元素 div :last-child
3 :only-child 选择元素的唯一子元素 div :only-child
4 :nth-child(n) 匹配任意位置的子元素 div :nth-child(n)
5 :nth-last-child(n) 匹配倒数任意位置的子元素 div :nth-last-child(n)

1.2 分组匹配

  • 选择一个,参数是具体数字,():`第个`
  • 选择一组,参数是公式,(a * n + b): 按条件循环着匹配
序号 选择器 描述 举例
1 :first-of-type 匹配按类型分组后的第一个子元素 div :first-of-type
2 :last-of-type 匹配按类型分组后的最后一个子元素 div :last-of-type
3 :only-of-type 匹配按类型分组后的唯一子元素 div :only-of-type
4 :nth-of-type() 匹配按类型分组后的任意位置的子元素 div :nth-of-type(n)
5 :nth-last-of-type()/:nth-of-type(-n) 匹配按类型分组后倒数任意位置的子元素 div :nth-last-of-type(n)
6 :nth-of-type(2n)/even 匹配按类型分组后偶数位置的子元素 div :nth-last-of-type(n)
7 :nth-of-type(2n+1)/odd 匹配按类型分组后奇数位置的子元素 div :nth-last-of-type(n)

1.3 其它伪类

序号 选择器 描述
1 :active 向被激活的元素添加样式
2 :focus 向拥有键盘输入焦点的元素添加样式
3 :hover 当鼠标悬浮在元素上方时,向元素添加样式
4 :link 向未被访问的链接添加样式
5 :visited 向已被访问的链接添加样式
6 :root 根元素,通常是html
7 :empty 选择没有任何子元素的元素(含文本节点)
8 :not() 排除与选择器参数匹配的元素
9 :disabled 禁用的表单元素
10 :enabled 有效的,允许提交的表单元素
11 :checked 选中的表单元素

CSS 选择器应用实例

  1. <!--伪类选择器-->
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>CSS伪类选择器:参数说明</title>
  8. <style>
  9. /* 参数:
  10. :nth-of-type(an+b)
  11. 1. a: 系数, [0,1,2,...]
  12. 2. n: 每次都从0开始取, 到an+b超出元素索引
  13. 3. b: 偏移量, 从0开始
  14. 注: 计算出来的索引,必须是有效, 从1开始
  15. */
  16. /* 匹配偶数: 2n + 0
  17. n = 0, ==> 2 * 0 = 0; 第0个元素,参数无效
  18. n = 1, ==> 2 * 1 = 2; 第2个元素
  19. n = 2, ==> 2 * 2 = 4; 第4个元素
  20. n = 3, ==> 2 * 3 = 6; 第6个元素
  21. n = 4, ==> 2 * 4 = 8; 第8个元素
  22. n = 5, ==> 2 * 5 = 10; 元素索引越界,结束匹配
  23. */
  24. div > :nth-of-type(2n) {
  25. background-color: #f30909;
  26. }
  27. /* 匹配奇数: 2n + 1
  28. n = 0, ==> 2 * 0 + 1 = 1; 第1个元素,参数无效
  29. n = 1, ==> 2 * 1 + 1 = 3; 第3个元素
  30. n = 2, ==> 2 * 2 + 1 = 5; 第5个元素
  31. n = 3, ==> 2 * 3 + 1 = 7; 第7个元素
  32. n = 4, ==> 2 * 4 + 1 = 9; 元素索引越界,结束匹配
  33. */
  34. div > :nth-of-type(2n + 1) {
  35. background-color: #09f357;
  36. }
  37. /* 匹配第三个后所有: 1n + 3
  38. n = 0, ==> 1 * 0 + 3 = 3; 第1个元素,参数无效
  39. n = 1, ==> 1 * 1 + 3 = 4; 第3个元素
  40. n = 2, ==> 1 * 2 + 3 = 5; 第5个元素
  41. n = 3, ==> 1 * 3 + 3 = 6; 第7个元素
  42. n = 4, ==> 1 * 4 + 3 = 7; 元素索引越界,结束匹配
  43. */
  44. div > :nth-of-type(n + 3) {
  45. font-size: 20px;
  46. color: #f7f30b;
  47. }
  48. /* 匹配第3、6、9、12个: 3n + 3
  49. n = 0, ==> 3 * 0 + 3 = 3; 第1个元素,参数无效
  50. n = 1, ==> 3 * 1 + 3 = 6; 第3个元素
  51. n = 2, ==> 3 * 2 + 3 = 9; 第5个元素
  52. n = 3, ==> 3 * 3 + 3 = 12; 第7个元素
  53. n = 4, ==> 3 * 4 + 3 = 15; 元素索引越界,结束匹配
  54. */
  55. div > :nth-of-type(3n + 3) {
  56. border: 2px solid #0a0a0a;
  57. }
  58. /* 匹配倒数第二个起之前所有: 1n + 2
  59. n = 0, ==> 1 * 0 + 2 = 2; 倒数第2个元素
  60. n = 1, ==> 1 * 1 + 2 = 3; 倒数第3个元素
  61. n = 2, ==> 1 * 2 + 2 = 4; 倒数第4个元素
  62. n = 3, ==> 1 * 3 + 2 = 5; 倒数第5个元素
  63. n = 4, ==> 1 * 4 + 2 = 6; 倒数第6个元素
  64. n = 4, ==> 1 * 4 + 2 = 7; 倒数第7个元素
  65. n = 4, ==> 1 * 4 + 2 = 8; 倒数第8个元素
  66. n = 4, ==> 1 * 4 + 2 = 9; 倒数第9,元素索引越界,结束匹配
  67. */
  68. div > :nth-last-of-type(n + 2) {
  69. margin-left: 20px;
  70. }
  71. </style>
  72. </head>
  73. <body>
  74. <div class="item">
  75. <div>item1</div>
  76. <div>item2</div>
  77. <div>item3</div>
  78. <div>item4</div>
  79. <div>item5</div>
  80. <div>item6</div>
  81. <div>item7</div>
  82. <div>item8</div>
  83. <div>item9</div>
  84. <div>item10</div>
  85. <div>item11</div>
  86. <div>item12</div>
  87. <div>item13</div>
  88. <div>item14</div>
  89. </div>
  90. </body>
  91. </html>

显示效果

2.字体图标引用说明

  • 登陆阿里字体图标官网: https://www.iconfont.cn/
  • 挑选需要的字体图标,加入购物车
  • 打开购物车选择下载代码;选择添加到项目再下载可以方便以后修改项目中的字体图标

  • 解压下载好的代码,复制到项目
  • 打开下载项目文件夹中的说明文件;文件中有引入字体图标的方法:Unicode、Font class、Symbol
  • 一般使用 Font class 比较直观
  • 引入字体图标样式 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. <link rel="stylesheet" href="font_icon/iconfont.css">
  8. <script src="font_icon/iconfont.js"></script>
  9. <style>
  10. .iconfont, .icon{
  11. color: red;
  12. font-size: 38px;
  13. }
  14. </style>
  15. <title>字体图标引用</title>
  16. </head>
  17. <body>
  18. <!-- 使用Font class引入字体图标 -->
  19. <span class="iconfont icon-data-view"></span>
  20. <span class="iconfont icon-favorite"></span>
  21. <span class="iconfont icon-email"></span>
  22. <!-- 使用Unicode引入字体图标 -->
  23. <span class="iconfont">&#xe66e</span>
  24. <span class="iconfont">&#xe66b</span>
  25. <!-- 引入项目下面生成的 symbol 代码 -->
  26. <!-- 加入通用 CSS 代码(引入一次就行) -->
  27. <svg class="icon" aria-hidden="true">
  28. <use xlink:href="#icon-email"></use>
  29. </svg>
  30. <svg class="icon" aria-hidden="true">
  31. <use xlink:href="#icon-data-view"></use>
  32. </svg>
  33. </body>
  34. </html>

显示效果

3.盒模型

3.1 盒模型常用属性

序号 属性 备注
1 width 盒模型宽度
2 height 盒模型高度
3 border 盒模型边框
4 padding 盒模型内边距,透明只有宽度可设置
5 margin 盒模型外边距
  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. <style>
  9. /* 样式重置的简化通用方案 */
  10. * {
  11. padding: 0;
  12. margin: 0;
  13. box-sizing: border-box;
  14. }
  15. .box {
  16. background-color: #7ef8d0;
  17. box-sizing: border-box;
  18. /* 背景色裁切 */
  19. background-clip: content-box;
  20. width: 180px; /*10 + 5 + 150 + 5 + 10 = 180*/
  21. height: 180px;
  22. border: 10px dashed red;
  23. padding: 18px;
  24. margin-top: 28px;
  25. /* 确保设置盒子宽高是盒子不被撑开,设置padding、margin前都要设置这个属性 */
  26. /* padding、margin 值设置,上 右 下 左的顺序,第2个表示左右 */
  27. /* 四值 , 顺时针 */
  28. padding: 5px 10px 15px 20px;
  29. /* 三值 , 中间表示左右*/
  30. padding: 5px 10px 15px;
  31. /* 双值: 第1个上下,第2个左右 */
  32. padding: 5px 10px;
  33. /* 单值, 四个方向全一样 */
  34. padding: 5px;
  35. /* padding: 是透明的,只有宽度可以设置 */
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <div class="box"></div>
  41. </body>
  42. </html>

显示效果

3.1 盒模型属性常用单位

序号 单位 备注
1 px 绝对单位: px , 1in = 96px
2 em 和当前或父级的 font-size 进行绑定,1em = 当前字号
3 rem 和 html(根元素)中的 font-size 绑定,1rem = 根元素字号
4 vw 宽度视口,使用于响应式布局,1vw = 1/100
5 vh 高度视口,使用于响应式布局,1vh = 1/100
  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. <style>
  9. /* 样式重置的简化通用方案 */
  10. * {
  11. padding: 0;
  12. margin: 0;
  13. box-sizing: border-box;
  14. font-size: 10px;
  15. }
  16. .box1 {
  17. background-color: #7ef8d0;
  18. width: 180px;
  19. height: 100px;
  20. }
  21. .box2 {
  22. background-color: #220af5;
  23. font-size: 20px;
  24. width: 10em;
  25. height: 20em;
  26. }
  27. .box3 {
  28. background-color: #0af551;
  29. width: 10rem;
  30. height: 20rem;
  31. }
  32. .box4 {
  33. background-color: #f50aa7;
  34. width: 10vw;
  35. height: 20vh;
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <div class="box1"></div>
  41. <div class="box2">当前字号</div>
  42. <div class="box3">根元素自豪</div>
  43. <div class="box4"></div>
  44. </body>
  45. </html>

显示效果


总结

第一次接触伪类选择器的时候觉得很难,基本靠硬记和逐个尝试了解清楚参数远离后瞬间就明白了。

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