博客列表 >css中的伪类选择器,字体图标与盒模以及常用单位px,em,rem,vh,vm

css中的伪类选择器,字体图标与盒模以及常用单位px,em,rem,vh,vm

moon
moon原创
2021年12月27日 16:32:09582浏览

伪类选择器

伪类选择器类型

  • 结构伪类:根据元素位置获取元素
  • 状态伪类:根据状态来获取元素

    结构伪类选择器

  • 该类选择器根据元素位置来获取元素例如下列代码中
  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>Document</title>
  8. </head>
  9. <body>
  10. <ul class="list">
  11. <li class="first">Item1</li>
  12. <li>Item2</li>
  13. <li>Item3</li>
  14. <li>Item4</li>
  15. <li>Item5</li>
  16. <li>Item6</li>
  17. <li>Item7</li>
  18. <li>Item8</li>
  19. </ul>
  20. <style>
  21. .list > :nth-of-type(5) {
  22. background-color: blue;
  23. }
  24. </style>
  25. </body>
  26. </html>

上述代码中.list > :nth-of-type(5),使用伪类选择器选择了,第五个列表元素,执行代码结果如下:

伪类选择器1

  • 伪类选择器nth-of-type(an+b),该选择器会对传入的参数进行计算,根据计算结果进行元素选择,当a为0时,选择单个,但a>0时,选择多个,上述代码中nth-of-type(5),a为0,b=5,所以选择了第五个元素。
  • 当a>0时,伪类选择器伪类选择器将n依次从0开始递增到超出范围,根据计算结果选择元素,例如下列代码
  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>Document</title>
  8. </head>
  9. <body>
  10. <ul class="list">
  11. <li>item1</li>
  12. <li>item2</li>
  13. <li>item3</li>
  14. <li>item4</li>
  15. <li>item5</li>
  16. <li>item6</li>
  17. <li>item7</li>
  18. <li>item8</li>
  19. <li>item9</li>
  20. </ul>
  21. <style>
  22. .list :nth-of-type(n+3) {
  23. background-color: red;
  24. }
  25. </style>
  26. </body>
  27. </html>

上述代码中,伪类选择器nth-of-type(n+3),选择了第3个元素开始的所有元素,下面用表格来演示计算过程:

n n+3 计算结果
0 3 选择第3个元素
1 4 选择第4个元素
2 5 选择第5个元素
3 6 选择第6个元素
4 7 选择第7个元素
5 8 选择第8个元素
9 9 无第9元素,结束

该代码执行结果如下:
伪类选择器2

字体图标

引入字体图标

  • 打开网页输入iconfont.cn阿里字体图标库,选择自己想要的图标,加入购物车
  • 新建项目,将购物车的字体图标导入项目
  • 将字体图标下载至本地
  • 将字体图标导入你需要使用的项目中
  • 开始使用字体图标

Unicode 引用

Unicode 是字体在网页端最原始的应用方式,特点是:

  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • 默认情况下不支持多色,直接添加多色图标会自动去色。

Unicode 使用步骤如下:

  • 1.拷贝项目下面生成的 @font-face代码如下
  1. @font-face {
  2. font-family: 'iconfont';
  3. src: url('iconfont.woff2?t=1640351169736') format('woff2'),
  4. url('iconfont.woff?t=1640351169736') format('woff'),
  5. url('iconfont.ttf?t=1640351169736') format('truetype');
  6. }
  • 2.定义使用 iconfont 的样式
  1. .iconfont {
  2. font-family: "iconfont" !important;
  3. font-size: 16px;
  4. font-style: normal;
  5. -webkit-font-smoothing: antialiased;
  6. -moz-osx-font-smoothing: grayscale;
  7. }
  • 3.挑选相应图标并获取字体编码,应用于页面
    <span class="iconfont">&#x33;</span>

font-class 引用

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

与 Unicode 使用方式相比,具有如下特点:

  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。

使用步骤如下:

  • 1.引入项目下面生成的 fontclass 代码:
    <link rel="stylesheet" href="./iconfont.css">
  • 2.挑选相应图标并获取类名,应用于页面:
    <span class="iconfont icon-xxx"></span>

  • 3.使用font-class方式引入一个购物车字体图标示例

  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=, initial-scale=1.0">
  7. <title>Document</title>
  8. <link rel="stylesheet" href="./font_icon/iconfont.css">
  9. </head>
  10. <body>
  11. <span class="iconfont icon-gouwuchekong"></span>
  12. </body>
  13. </html>

Symbol 引用

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

  • 支持多色图标了,不再受单色限制。
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • 浏览器渲染 SVG 的性能一般,还不如 png。

使用步骤如下:

  • 1.引入项目下面生成的 symbol 代码:
    <script src="./iconfont.js"></script>
  • 2.加入通用 CSS 代码(引入一次就行):
  1. <style>
  2. .icon {
  3. width: 1em;
  4. height: 1em;
  5. vertical-align: -0.15em;
  6. fill: currentColor;
  7. overflow: hidden;
  8. }
  9. </style>
  • 3.挑选相应图标并获取类名,应用于页面:
  1. <svg class="icon" aria-hidden="true">
  2. <use xlink:href="#icon-xxx"></use>
  3. </svg>

-4.使用Symbol方式,引入一个购物车字体图标示例

  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>Document</title>
  8. <script src="./font_icon/iconfont.js"></script>
  9. </head>
  10. <body>
  11. <svg class="icon" aria-hidden="true">
  12. <use xlink:href="#icon-gouwuchekong"></use>
  13. </svg>
  14. </body>
  15. </html>

盒模型

盒模型常用属性

  • width(宽度),heigh(高度),border边框,padding(内边框,内边距),margin(外边框,外边距)

  • 下列代码将展示盒模型的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>Document</title>
  8. </head>
  9. <body>
  10. <div class="box"></div>
  11. <style>
  12. .box {
  13. width: 200px;
  14. height: 200px;
  15. background-color: violet;
  16. border: 10px dashed currentColor;
  17. background-clip: content-box;
  18. padding: 20px;
  19. }
  20. </style>
  21. </body>
  22. </html>

执行代码后,结果如下:
合模型2

下图表示上述代码盒模型的计算方式
盒模型3
上述代码虽然定义盒模型,宽,高为200200,但是实际上生成了260260的盒模型,使用box-sizing: border-box;属性可以准确生成200*200的盒模型,看如下代码

  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>Document</title>
  8. </head>
  9. <body>
  10. <div class="box"></div>
  11. <style>
  12. .box {
  13. width: 200px;
  14. height: 200px;
  15. background-color: violet;
  16. border: 10px dashed currentColor;
  17. background-clip: content-box;
  18. padding: 20px;
  19. box-sizing: border-box;
  20. }
  21. </style>
  22. </body>
  23. </html>

执行如下代码后结果:
盒模型4
使用box-sizing: border-box属性后计算方式如下图:
盒模型5
实际生成了200*200的盒模型

常用单位

绝对单位

  • px表示像素, 1in = 96px

    相对单位

  • em,rem, vh, vw为相对单位
  • em:受到当前元素font-size属性的影响,默认html的font-size属性为16px,在不指定font-size的情况下,1em=16px,永远和当前或父级的font-size进行绑定
  • rem:只与html元素的font-size属性相关联,与当前元素的font-size属性无关,永远和html(根元素)中的font-size绑定
  • vh:将视口高宽分为100份, 1vh = 1/100
  • vw: 将视口宽度分为100份, 1vw = 1/100
上一条:细说伪类选择器下一条:css基础知识
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议