CSS关键字:initial、revert、unset傻傻分不清

前言

每个CSS属性都有一个默认值,比如background-color的默认值是transparentmargin的默认值是auto,这些常见的属性我们都知道它们的默认值,但是有些不常见的属性,我们可能就不知道它们的默认值了,那么如何获取这些属性的默认值呢?

这时候就要用上initialrevertunset这三个CSS关键字了。有些前端开发者可能分不清3个关键字的区别,下面详细介绍下。

initial

initial 表示CSS属性的初始值,可以将某个 CSS 属性恢复到其初始状态。

比如一段这样的 HTML 结构:

html 复制代码
<div class="parent">
  parent
  <div class="child">
    child
  </div>
</div>

如果给它父元素添加font-size: 30px,那么 childfont-size 会继承父元素,也是 30px

css 复制代码
.parent {
  font-size: 30px;
}

如果给子元素 child 加上 font-size: initial,那么它的字体大小就会使用 CSS 属性的初始值,也就是 16px

css 复制代码
.parent {
  font-size: 30px;
}
.child {
  font-size: initial;
}

initial用途:不知道 CSS 属性的初始值时,我们可以直接使用它进行还原

注意点:initial 代表的是 CSS 属性的初始值,而不是浏览器中该属性的初始值,因为浏览器会自带一些样式表,会覆盖 CSS 属性的初始值。比如 display 属性的初始值是 inline,而浏览器样式表将 <div> 的值设置为 block,将 <table>display 默认值设置为 table等。

revert

revert 表示浏览器样式表中该 css 属性的默认值 。HTML 在浏览器渲染中,会默认增加一个样式表 user agent stylesheet,比如我们都知道 body标签会有一个默认 8pxmargin,这个就是浏览器默认增加的样式。

举个常见的例子,无序列表 ul li 会有默认样式,每个 li 前面会出现一个小圆点,这个是因为浏览器内置样式表给 ul 加了一个 list-style-type: disc 的样式。

我们在实际项目开发中,一般会使用 list-style-type: none 把这个默认样式给重置掉,然而某些场景,我们可能又想用到这个浏览器默认样式,这时候我们就可以借助 revert 关键字来实现。

css 复制代码
ul {
  list-style-type: revert;
}

unset

unset,顾名思义就是 该 css 属性未设置,它有如下特点:

  • 如果当前使用的CSS属性具有继承特性,等同于 inherit 关键字。有继承特性的属性包括文本与字体相关,比如 font-family、font-size、font-weight、color、white-space等,列表相关比如 list-style-type、list-style-position 等。
  • 如果当前使用的CSS属性没有继承特性,等同于 initial 关键字。

使用小技巧

initialrevertunset 关键字都支持用在 css 属性 all 上,对该元素所有的 css 属性生效。

css 复制代码
.box {
  all: initial;
}

inset

这里顺便提一下 inset,它是一个简写属性,对应 toprightbottomleft,比如我们写一个垂直居中一般会这么写:

css 复制代码
.parent {
  position: absolute;
}
.child {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  margin: auto;
}

其实这里子元素的样式可以简写为:

css 复制代码
.child {
  position: absolute;
  inset: 0;
  margin: auto;
}

小结

initialrevertunset 是 css 中三个关键字,它们的区别如下:

  • initial: 表示 css 属性的初始值。
  • revert: 浏览器样式表中该 css 属性的默认值。
  • unset: 当前的 css 属性具有继承特性,相当于 inherit,否则相当于 initial

另外 unset 是一个简写属性,可以表示 toprightbottomleft 的值。

相关推荐
浮生望6 分钟前
BFF架构实战:用Express+SSE为Vue3搭建安全的流式对话中间层
前端
先吃饱再说30 分钟前
React 组件通信:从 Props 单向传递到自定义事件
前端·react.js·前端框架
swipe35 分钟前
05|(前端转后全栈)不手写一堆 SQL,后端怎么操作数据库?MyBatis-Plus 入门
前端·后端·全栈
swipe39 分钟前
04|(前端转后全栈)前端状态为什么不够用?从页面数据到 MySQL 持久化
前端·后端·全栈
橘子星40 分钟前
别光看教程!手把手拆解 React Todo 项目,一文吃透 5 个核心概念
前端·javascript
大白要努力!1 小时前
纯前端实现 PDF 加水印工具 —— 零后端、支持中文、实时预览
前端·pdf·html
石小石Orz1 小时前
TRAE SOLO实战:实现一个桌面3D助手
前端·人工智能
蜡台1 小时前
使用 uni-popup 实现数据选择器Data-Picker
前端·javascript·html·uniapp·uni-popup·data-picker
拆房老料1 小时前
BaseMetas FileView 1.2.0 发布:Office/WPS 大文件预览与内存安全优化实测
前端·产品运营·开源软件
blns_yxl1 小时前
Promise封装Fetch + 重试机制(HTML+JS)
前端·javascript·html