css 伪类选择器详解,如何引入字体图标库,盒模型


  • 伪类的定义

表示假的class 级权重

  • 伪类的类型

伪类的类型作用
结构伪类根据位置获取元素
状态伪类根据状态获取元素

结构伪类

  • 常用的语法

结构伪类语法代码用法
取指定位置的元素:nth-of-type()直接在“()”内填写要取第几个元素
倒着取指定位置的元素:nth-last-of-type()直接在“()”内填写要取倒数第几个元素
取第一个first-of-type取第一个元素
取倒数第一个last-of-type取倒数第一个元素

  • 伪类选择器的参数

    nth-of-type(an+b)


参数规则
a 系数[0,1,2,3…]
n 权数[0,1,2,3…]
b 偏移量从 0 开始

注:计算出来的索引必须是有效,从 1 开始

  • 选择元素只有两种情况: 1.选择一个 2.选择一组
    匹配单个元素 a=0
    匹配多个元素 a>=1

  • 匹配单个元素代码示例(a=0)
  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>伪类选择器匹配单个元素(a=0)</title>
  8. <style>
  9. /* 注:因为我们要取单个元素,所以a=0,n为从0开始自动计算,b为我们要找的元素的偏移量。
  10. 我们要取的是ul下的第三个li所以偏移量b=3。
  11. 匹配过程:a=0,n=【0,1,2,3...直到索引结束】,b=3
  12. a*n=0,b=3,an+b=3,因为0乘任何数都等一零,所以当a=0时只会索引一次 */
  13. .list > li:nth-of-type(0n + 3) {
  14. background-color: coral;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <ul class="list">
  20. <li>item1</li>
  21. <li>item2</li>
  22. <li>item3</li>
  23. <li>item4</li>
  24. <li>item5</li>
  25. <li>item6</li>
  26. <li>item7</li>
  27. <li>item8</li>
  28. </ul>
  29. </body>
  30. </html>
  • 匹配多个元素代码示例(a=1)
  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>伪类选择器匹配单个元素(a=0)</title>
  8. <style>
  9. /* 注:因为我们要取多个元素,所以a=1,n为从0开始自动计算,b为我们要找的元素的偏移量。
  10. 我们要取的是ul下的第三个包括下面的所有li元素,所以偏移量b=3。
  11. 匹配过程:a=1,n=【0,1,2,3...直到索引结束】,b=3
  12. 第一遍索引:1*0+3=0+3=3
  13. 第二遍索引:1*1+3=1+3=4
  14. 第三遍索引:1*2+3=2+3=5
  15. 第四遍索引:1*3+3=3+3=6
  16. 第五遍索引:1*4+3=4+3=7
  17. 第六遍索引:1*5+3=5+3=8
  18. 第七遍索引:1*6+3=6+3=9!索引到这里索引的到第九个元素,代码里没有第九个li,所以索引超纲自动停止,索引结束 */
  19. .list > li:nth-of-type(1n + 3) {
  20. background-color: coral;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <ul class="list">
  26. <li>item1</li>
  27. <li>item2</li>
  28. <li>item3</li>
  29. <li>item4</li>
  30. <li>item5</li>
  31. <li>item6</li>
  32. <li>item7</li>
  33. <li>item8</li>
  34. </ul>
  35. </body>
  36. </html>

如果我们想要向上取参数参数为:(-1n+b)
如果我们要取偶数参数为:(2n),但是这里我们有更简洁的方式,参数只需要填 even;
如果我们要取奇数参数为:(2n+1),但是这里我们有更简洁的方式,参数只需要填 odd;


表单伪类

  • 状态伪类

代码作用
disabled禁用状态
enabled启用状态
checked选中状态
hover鼠标悬停状态
focus获取焦点状态

以下时代码示例:

  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. <style>
  9. /* 所有开放的input的属性 */
  10. input:enabled {
  11. /* 背景色:绿 */
  12. background-color: green;
  13. border: 3px dotted green;
  14. }
  15. /* 所有未开放的input的属性 */
  16. input:disabled {
  17. /* 背景色:红 */
  18. background-color: red;
  19. /* 边框尺寸3px 虚线 绿色 */
  20. border: 3px dotted green;
  21. }
  22. /* 当男被选中后后面的label内的内容变为蓝色 */
  23. #male:checked + * {
  24. /* 文本色:蓝 */
  25. color: blue;
  26. }
  27. /* 当女被选中后后面label内的内容变为红色 */
  28. #female:checked + * {
  29. /* 文本色:红 */
  30. color: red;
  31. }
  32. /* input获取焦点时的样式 */
  33. input:focus {
  34. /* 背景色:royalblue */
  35. background-color: royalblue;
  36. }
  37. button {
  38. /* 高100 */
  39. width: 100px;
  40. /* 宽30 */
  41. height: 30px;
  42. /* 边框:无 */
  43. border: none;
  44. /* 轮廓线:无 */
  45. outline: none;
  46. /* 背景色:红 */
  47. background-color: red;
  48. /* 文本色:白 */
  49. color: white;
  50. }
  51. /* 鼠标悬停hover样式 */
  52. button:hover {
  53. background-color: seagreen;
  54. color: black;
  55. cursor: pointer;
  56. }
  57. </style>
  58. </head>
  59. <body>
  60. <div>
  61. <label for="username">username:</label>
  62. <input type="text" name="username" id="username" value="admin" disabled />
  63. </div>
  64. <div>
  65. <label for="">password:</label>
  66. <input type="password" name="password" id="password" />
  67. </div>
  68. <div>
  69. <input type="radio" name="gender" id="male" value="0" />
  70. <label for="male"></label>
  71. <input type="radio" name="gender" id="female" value="1" />
  72. <label for="female"></label>
  73. <p><button type="submit">提交</button></p>
  74. </div>
  75. </body>
  76. </html>

开发小技巧-引用字体图标库

  • 什么是字体图标?
    图标样式的字体,本质上仍然是字体/文本
  • 阿里矢量图标库
  • 如何引用图标库?

    1.使用 link 标签链接到图标库
    <link rel="stylesheet" href="./图标库文件地址/" />

    2.使用图标库(class 里填写相对应的图标名称即可)
    <span class="iconfont WIFI icon-WIFI"></span>

  • 完整引入演示代码如下

  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. <!-- 引入字体图标库css文件 -->
  8. <link rel="stylesheet" href="./font_icon/iconfont.css" />
  9. <title>引入字体图标库</title>
  10. <style>
  11. /* 设置字体图标的样式:大小,颜色; */
  12. div.iconfont.qrcode.icon-qrcode {
  13. font-size: 100px;
  14. color: red;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <!-- 使用字体图标 -->
  20. <div class="iconfont qrcode icon-qrcode"></div>
  21. </body>
  22. </html>

盒模型

  • 盒模型的常用属性

序号代码作用备注
1width
2height
3border边框可视化属性,有多种样式,solid实线,dashed虚线
4pandding内边距
5margin外边距

1.通常情况下我们给一个元素边框和背景色,背景色会融入到边框内,这时我们只需要给该元素一个样式就可以了。背景色裁切:background-clip: content-box;这个代码的意思是内容在盒子中心。
2.通常我们在布局中给的widthheight都是希望这是盒子的大小,但是通常会因为边框,内边距和外边距等等的因素出现撑大了盒子的宽和高,所以这里我们要用到一个代码 box-sizing:border-box,此时的widthheight设置的宽高就是我们盒子计算的宽高,不会因为盒子的其他元素改变盒子的尺寸。

  • padding 语法

类型语法解释
单值语法padding:20px上下左右四个值都是 20px
双值语法padding:20px 30px左右 20px 上下 30px
三值语法padding:20px 30px 20px左 20px 上下 30px 右 20px
四值语法padding:30px 20px 30px 20px顺时针语法:上 30px 右 20px 下 30px 左 20px

  • 以下是代码详情示例以及解析
  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. <style>
  9. /* 初始化所有元素的内边距和外边距,并且设置盒子的大小不受内外边距和边框的影响,只由width和height决定大小 */
  10. * {
  11. /* 内边距padding */
  12. padding: 0px;
  13. /* 外边距margin */
  14. margin: 0px;
  15. /* 设置元素大小只能由width和height决定 */
  16. box-sizing: border-box;
  17. /* 边框=1px 实现边框 红色 */
  18. outline: 1px solid red;
  19. }
  20. /* 盒模型常用属性
  21. 1.width
  22. 2.height
  23. 3.border
  24. 4.padding
  25. 5.margin */
  26. /* 这里是class=box的div标签的样式声明 */
  27. .box {
  28. /* 宽:200px */
  29. width: 200px;
  30. /* 高:200px */
  31. height: 200px;
  32. /* 边框:10px 虚线 红色(已被下方的边框声明覆盖) */
  33. border: 10px dashed red;
  34. /* 背景色:黑色 */
  35. background-color: black;
  36. /* 背景裁切:在盒子内 */
  37. background-clip: content-box;
  38. /* 内边距:20px(因为.box的权重为(0,1,0) 所以覆盖了全局设置的padding) */
  39. padding: 20px;
  40. /* 外边距:20px */
  41. margin: 20px-;
  42. /* 这里我们在全局设置中设置了box-sizing:border-box,所以元素的宽度为左右border(边框的大小)+左右padding(内边距的大小)+width=10(左边框)+20(左padding)+140(元素内容部分的宽度)+10(右边框)+20(右padding)=200 */
  43. /* 元素的宽度为上下border(边框的大小)+上下padding(内边距的大小)+height=20(上边框)+20(上padding)+120(元素内容部分的高度)+20(下边框)+20(下padding)=200 */
  44. /* 设置元素大小只能由width和height决定(由于上方全局设置已经设置过了,这里省略也可以) */
  45. box-sizing: border-box;
  46. /* 为了记忆padding的四值语法,我们这里的边框单独设置也采用了上右下左的顺序 */
  47. /* 单独设置边框上方:20px 实线 红色 */
  48. border-top: 20px solid red;
  49. /* 单独设置边框右方:10px 虚线 蓝色 */
  50. border-right: 10px dashed blue;
  51. /* 单独设置边框下方:20px 实线 红色*/
  52. border-bottom: 20px solid red;
  53. /* 单独设置边框左方:10px 虚线 蓝色 */
  54. border-left: 10px dashed blue;
  55. }
  56. /* 这里是class=box1的div标签的样式声明 */
  57. /* 这个样式声明主要是为了测试上面的全局声明,看下是否生效,元素的大小是否只由width和height来决定而不是会收到padding(内边距)和margin(外边距)的影响 */
  58. .box1 {
  59. /* 宽:300px */
  60. width: 300px;
  61. /* 高:300px */
  62. height: 300px;
  63. /* 内边距:100px */
  64. padding: 100px-;
  65. /* 外边距:100px */
  66. margin: 100px-;
  67. }
  68. </style>
  69. </head>
  70. <body>
  71. <!-- 这里是class=box的div标签 -->
  72. <div class="box"></div>
  73. <!-- 这里是class=box1的div标签 -->
  74. <div class="box1">aaaaa</div>
  75. </body>
  76. </html>

常用单位

  • 常用单位的种类

序号单位类型符号
1绝对单位px(像素): 1lin(英寸)=96px
2相对单位em:永远和当前或父级的 font-size(字号)进行绑定
3相对单位rem:永远和 html(根元素)中的 font-size 进行绑定
4相对单位vw:常用在响应式布局(多在移动端),指把视口宽度分为 100 份,1vw=1/100
5相对单位vh:常用在响应式布局(多在移动端),指把视口高度分为 100 份,1vh=1/100

  • 以下是 px,em,rem,vw,vh 代码的示例
  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. <style>
  9. * {
  10. padding: 0px;
  11. margin: 0px;
  12. box-sizing: border-box;
  13. }
  14. html {
  15. /* 这里我们给html(根元素)设置一个统一的字号:10px */
  16. font-size: 10px;
  17. }
  18. .box {
  19. /* 这里我们给div.box一个单独的字号 */
  20. font-size: 20px;
  21. /* 宽=5em=5*20px=100px */
  22. width: 5em;
  23. /* 高=10rem=10*10px=100px */
  24. height: 10rem;
  25. border: 1px solid red;
  26. background-color: black;
  27. background-clip: content-box;
  28. }
  29. .box {
  30. /* 这里我们把视窗宽度分为100份,100vw=100%宽度 */
  31. width: 100vw;
  32. /* 这里我们把视窗高度分为100份,10vh=10%高度 */
  33. height: 10vh;
  34. }
  35. </style>
  36. </head>
  37. <body>
  38. <div class="box">aaaaa</div>
  39. </body>
  40. </html>

更多相关文章

  1. Android应用开发之RelativeLayout (相对布局)+梅花效果案例
  2. Android自定义View(1):对话框-Dialog
  3. 面试题
  4. Android布局文件的属性值解析
  5. 系出名门Android(2) - 布局(Layout)和菜单(Menu)
  6. 浅谈Android五大布局
  7. gravity和android:layout_gravity区别
  8. Android商城购物车页面实现和逻辑实现
  9. 浅谈Android五大布局

随机推荐

  1. Android UI主线程与子线程
  2. Android屏幕适配攻略
  3. 如果你现在学Android---学习使用Kotlin进
  4. 修改Android Studio下的AVD的下载路径
  5. Android声音管理方法
  6. 从创建flutter到打包成aar,并运行,这之间踩
  7. EditText 焦点控制,进入界面时不弹出键盘
  8. 进入android项目组的第一天
  9. Android SDK Manager国内无法更新的解决
  10. Android自定义Transition动画