博客列表 >css 选择器组合提权与盒模型常用属性缩写

css 选择器组合提权与盒模型常用属性缩写

祥子弟弟
祥子弟弟原创
2020年12月18日 15:41:50660浏览

一、动态伪类选择器

  • 超链接标签\<a>的四种状态(按照先后顺序,顺序固定)
伪类表示 效果
:link 默认状态
:visited 已经访问过的状态
:hover 鼠标悬停状态
:active 鼠标点击状态

样式案例(在本篇中,所有的 css 样式表代码均写在 style 标签中):

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>a标签状态匹配</title>
  6. <style>
  7. /* 1. 默认状态:link */
  8. a:link {
  9. color: violet;
  10. text-decoration: none;
  11. }
  12. /* 2. 已经访问过状态:visited */
  13. a:visited {
  14. color: lightblue;
  15. }
  16. /* 3. 悬停状态:hover */
  17. a:hover {
  18. color: orange;
  19. /* 添加下划线 */
  20. text-decoration: underline;
  21. }
  22. /* 4. 点击(激活)状态:active */
  23. a:active {
  24. color: red;
  25. }
  26. </style>
  27. </head>
  28. <body>
  29. <a href="https://www.php.cn/index.php">php中文网</a>
  30. </body>
  31. </html>

注:在 visited 状态下,只能设置 color 属性。

  • 表单中的几种状态
伪类表示 效果
readonly 只读属性
required 不能为空
disabled 此项禁用
:focus 聚焦

样式案例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>input标签状态匹配</title>
  6. <style>
  7. input:read-only {
  8. background-color: orange;
  9. }
  10. input:required {
  11. background-color: lightblue;
  12. }
  13. input:disabled {
  14. background-color: lightgreen;
  15. }
  16. input:focus {
  17. background-color: #aaa;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <form action="" method="">
  23. <p>
  24. <!-- readonly只读属性 -->
  25. <label for="username">用户名:</label
  26. ><input
  27. type="text"
  28. name="username"
  29. id="username"
  30. value="admin"
  31. placeholder="username"
  32. readonly
  33. />
  34. </p>
  35. <p>
  36. <!-- required不能为空 -->
  37. <label for="email">邮箱:</label
  38. ><input
  39. type="email"
  40. name="email"
  41. id="email"
  42. value=""
  43. placeholder="admin@email.com"
  44. required
  45. />
  46. </p>
  47. <p>
  48. <!-- disabled禁用此选项 -->
  49. <label for="psd">密码:</label
  50. ><input
  51. type="password"
  52. name="password"
  53. id="psd"
  54. value="123456"
  55. placeholder="不少于6位"
  56. disabled
  57. />
  58. </p>
  59. <p><button>提交</button></p>
  60. </form>
  61. </body>
  62. </html>

在表单的状态匹配中,仅列举出了四个常用的状态。

我们知道在 css 基础选择器中,权重高低如下:
id(id 选择器) > class(类选择器) > tag(标签选择器)
它的基础权重比较遵循:

  1. 当选择器相同时,与书写顺序有关,后面样式覆盖前面样式;

  2. 当选择器类型不同时,与优先级相关,级别高的覆盖级别低的。

当不再是简单的单一 tag 或者是 id 又或者是 calss,而是多种选择器的组合时,我们假设有规则:
规则设置:[0, 0, 0] ==> [id, calss, tag]
同级权重可以相加,但是永远不能进位,也就是说无限个 tag 相加也不能往 class 进一位。
提权应用场景:在不修改原始的样式表的情况下,可以用自己的样式表去更新页面,以达到自己的目的。
以下为提权示例:(style 标签中的权重关系是最上边的优先级最高,依次递减,这样写是为了过滤掉上下文同级,下文覆盖掉上文的情况)

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>选择器组合提权</title>
  6. <style>
  7. /* [1,0,0] */
  8. #p {
  9. color: pink;
  10. }
  11. /* [0,2,0] */
  12. .p.pp {
  13. color: brown;
  14. }
  15. /* [0,1,3] */
  16. html body p.p {
  17. color: lightcoral;
  18. }
  19. /* [0,1,2] */
  20. body p.p {
  21. color: orange;
  22. }
  23. /* [0,1,1] */
  24. p .p {
  25. color: lightskyblue;
  26. }
  27. /* [0,1,0] */
  28. .p {
  29. color: green;
  30. }
  31. /* [0,0,3] */
  32. /* 也可以用:root表示html,不过:root是一个伪类,这样的操作会使权重直接进位。 */
  33. html body p {
  34. color: red;
  35. }
  36. /* [0,0,2] */
  37. body p {
  38. color: skyblue;
  39. }
  40. /* [0,0,1] */
  41. p {
  42. color: violet;
  43. }
  44. </style>
  45. </head>
  46. <body>
  47. <p class="p pp" id="p">测试小段落</p>
  48. </body>
  49. </html>

二、盒模型常用属性的缩写

1.字体属性的缩写

  • 字体属性
属性 含义
font-family 字体名称
font-size 字体大小
font-style 字体样式
font-weight 字体粗细

具体实例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>字体属性简写</title>
  6. <style>
  7. h1.title {
  8. /* 字体名称 */
  9. font-family: sans-serif;
  10. /* 字体大小 */
  11. font-size: 24px;
  12. /* 字体样式 */
  13. /* italic斜体 */
  14. font-style: italic;
  15. /* 字体粗细 */
  16. font-weight: border;
  17. }
  18. h1.title {
  19. /* 属性简写:先是字体样式,再是字体粗细,接下来是字体大小,最后是字体名称 */
  20. /* 这个顺序应该是不能变的,我尝试变过,样式也跟着变了 */
  21. font: italic border 24px sans-serif;
  22. }
  23. </style>
  24. </head>
  25. <body>
  26. <h1 class="title">这是一个大标题</h1>
  27. </body>
  28. </html>
  • 字体图标的引用

在平时的网页中,我们经常会看到一些具有代表意义的字体图表,这些图表是可以通过 link 的方式引入的。

首先可以直接去阿里巴巴矢量图标库点击里边的一个项目,选中你需要的图标,添加入库,然后下载代码。
代码下载好之后,就可以将源代码文件夹的链接通过 link 标签导入到你的 html 页面中。
以下是字体图标引入示例:(在这里,我是把我下载好的代码文件夹放在了和我的 html 文件同级的文件夹下)

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>字体图表引入</title>
  6. <style></style>
  7. <link rel="stylesheet" href="iconfont/iconfont.css" />
  8. </head>
  9. <body>
  10. <span class="iconfont icon-weibiaoti-4"></span>
  11. </body>
  12. </html>

浏览器显示效果:(在这里我将页面放大到了 500 才得到这个图片)

文字图标

你还可以通过修改它的样式来得到你想要的结果,例如:你可以修改字体大小属性 font-size 来修改图标的大小,可以修改 color 属性来更改为你喜欢的颜色,也可以修改 box-shadow 属性来给图表添加一个阴影等等。

2.盒子边框,内边距,外边距的属性缩写

  • 边框
    边框是 border 属性定义的,我们可以将一个盒子的边框分为上、右、下、左四个边。
定义
border-top
border-right
bottom
left

每个边框可以设置三个属性:宽度(weight)、颜色(color)、样式(style)

示例如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>边框属性缩写</title>
  6. <style>
  7. /* 先定义一个盒子的样式 */
  8. .box {
  9. width: 200px;
  10. height: 200px;
  11. background-color: lightblue;
  12. box-sizing: border-box;
  13. }
  14. .box {
  15. /* 边框 */
  16. /* 每个边框可以设置三个属性:宽度、颜色、样式 */
  17. /* 宽度 */
  18. border-top-width: 3px;
  19. /* 颜色 */
  20. border-top-color: red;
  21. /* 样式(solid 实线; dashed 虚线) */
  22. border-top-style: solid;
  23. /* 简写 */
  24. border-top: 3px red solid;
  25. /* border-top上边框;border-right右边框;border-bottom下边框;border-left左边框 */
  26. }
  27. .box {
  28. /* 简写 */
  29. /* border-top: 3px red solid; */
  30. border: 3px #111 solid;
  31. }
  32. </style>
  33. </head>
  34. <body>
  35. <div class="box"></div>
  36. </body>
  37. </html>
  • 内边距属性的缩写

内边距是用属性 padding 定义的,同样的,我们可以将其分为上、右、下、左四个边距,四个边距可以都不相同,也可以是左右相等,上下不等的情况,还可以是上下相等,左右相等的情况,也可以是都相等的情况。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>边框属性缩写</title>
  6. <style>
  7. /* 先定义一个盒子的样式 */
  8. .box {
  9. width: 200px;
  10. height: 200px;
  11. background-color: lightblue;
  12. box-sizing: border-box;
  13. }
  14. .box {
  15. /* 内边距 */
  16. /* padding:顺时针方向,上右下左 */
  17. padding: 5px 10px 15px 20px;
  18. /* 页面中看不到是因为padding是透明的,且背景色会自动延伸扩展到padding,
  19. 将背景色裁切到内容区就可以看到padding */
  20. /* 背景色裁切 */
  21. background-clip: content-box;
  22. /* 三值语法:上下不相等,左右相等(排在第二个的是左右) */
  23. padding: 10px 15px 20px;
  24. /* 二值语法:上下相等,左右相等 */
  25. padding: 10px 20px;
  26. /* 单值语法:四个方向都相等 */
  27. padding: 10px;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <div class="box"></div>
  33. </body>
  34. </html>
  • 外边距属性的缩写

内边距是用属性 margin 定义的,同样的,我们可以将其分为上、右、下、左四个边距,四个边距可以都不相同,也可以是左右相等,上下不等的情况,还可以是上下相等,左右相等的情况,也可以是都相等的情况。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>边框属性缩写</title>
  6. <style>
  7. /* 先定义一个盒子的样式 */
  8. .box {
  9. width: 200px;
  10. height: 200px;
  11. background-color: lightblue;
  12. box-sizing: border-box;
  13. }
  14. .box {
  15. /* 外边距 */
  16. /* margin:顺时针方向,上右下左 */
  17. margin: 5px 10px 15px 20px;
  18. /* 三值语法:上下不相等,左右相等(排在第二个的是左右) */
  19. margin: 10px 15px 20px;
  20. /* 二值语法:上下相等,左右相等 */
  21. margin: 10px 20px;
  22. /*单值语法:四个方向都相等 */
  23. margin: 10px;
  24. }
  25. </style>
  26. </head>
  27. <body>
  28. <div class="box"></div>
  29. </body>
  30. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议