css 初始值和未设置值之间的区别是什么?

gzjq41n4  于 2023-05-02  发布在  其他
关注(0)|答案(4)|浏览(147)

举个简单的例子:

超文本标记语言

<p style="color:red!important"> 
    this text is red 
    <em> 
       this text is in the initial color (e.g. black)
    </em>
    this is red again
</p>

CSS

em {
    color:initial;
    color:unset;
}

initialunset的区别是什么?仅支持浏览器
CanIUse: CSS unset value
Developer Mozilla Web CSS initial

sirbozc5

sirbozc51#

根据您的链接:
unset是一个CSS值,如果一个属性是继承的,它就相当于“inherit”,如果一个属性不是继承的,它就相当于“initial
下面是一个例子:

pre {
  color: #f00;
}
.initial {
  color: initial;
}
.unset {
  color: unset;
}
<pre>
  <span>This text is red because it is inherited.</span>
  <span class="initial">[color: initial]: This text is the initial color (black, the browser default).</span>
  <span class="unset">[color: unset]: This text is red because it is unset (which means that it is the same as inherited).</span>
</pre>

有一种情况是,如果您试图覆盖样式表中的某些CSS,但您更希望继承该值而不是将其设置回浏览器默认值,则会出现差异。
例如:

pre {
  color: #00f;
}
span {
  color: #f00;
}
.unset {
  color: unset;
}
.initial {
  color: initial;
}
<pre>
  <em>Text in this 'pre' element is blue.</em>
  <span>The span elements are red, but we want to override this.</span>
  <span class="unset">[color: unset]: This span's color is unset (blue, because it is inherited from the pre).</span>
  <span class="initial">[color: initial]: This span's color is initial (black, the browser default).</span>
</pre>
41ik7eoe

41ik7eoe2#

我想引用官方的CSS|MDN文档,供将来研究两者之间的差异时参考:

INITIAL

initial CSS关键字将属性的初始值应用于元素。每个CSS属性都允许使用它,并使指定它的元素使用属性的初始值。
根据你的例子:

em {
    color:initial;
    /* color:unset; */
}
<p style="color:red!important"> 
    this text is red 
    <em> 
       this text is in the initial color (e.g. black)
    </em>
    this is red again
</p>

注意 initial 属性如何保留元素的 initialcolor属性。

UNSET

unset CSS关键字是initial和inherit关键字的组合。像这两个CSS范围的关键字一样,它可以应用于任何CSS属性,包括CSS简写all。如果属性从其父级继承,则此关键字将属性重置为其继承值,否则重置为其初始值。换句话说,在第一种情况下,它的行为类似于inherit关键字,而在第二种情况下,它的行为类似于initial关键字。
根据你的例子:

em {
  /* color:initial; */
  color:unset;
}
<p style="color:red!important"> 
  this text is red 
  <em> 
    this text's color has been unset (e.g. red)
  </em>
  this is red again
</p>

注意 unset 属性是如何简单地 * 重置 * 元素的color属性的。

结论

这个想法非常简单,但在实践中,我建议在处理两个CSS属性的跨浏览器兼容性时要谨慎。从今天开始

xdyibdwo

xdyibdwo3#

CSS显示属性:unset=inherit

fykwrbwg

fykwrbwg4#

像这样使用unset。如果你有一个初始图像,请分享给每一个!

button { padding: 0; font: inherit; color: inherit; background: none; outline: none; border: none; }

它类似于:

button {all: unset;}

相关问题