css - 如果在通用选择器中声明,是否会继承框大小?
问题描述
这是否适用于每个元素?
示例“A”:
*
{
box-sizing: border-box;
}
我认为 box-sizing 不是继承的?
这是关于盒子尺寸重置的:
示例“B”:
*, *::before, *::after
{
box-sizing: inherit;
}
html
{
box-sizing: border-box;
}
这两个例子会有同样的效果吗?
解决方案
我认为 box-sizing 不是继承的?
不,这不对。您可以检查规范,您将看到继承为否。在示例 A 中,您只是使用通用选择器来选择所有元素并将其应用于box-sizing:border-box
它们,但它不针对伪元素,因此默认情况下它们不会box-sizing:border-box
被设置。
这两个例子会有同样的效果吗?
不,他们不会。即使我们认为它是唯一应用于您的文档的 CSS,示例 B 也将针对伪元素以使box-sizing
它们继承box-sizing:border-box
html
box-sizing:border-box
另一个区别是,使用inherit
将考虑父样式,这与在示例 A 中显式设置值不同。在示例 A 中,box-sizing
如果要覆盖由代码设置的元素,则必须为每个元素进行更改,而在示例 B 中,更改box-sizing
元素或任何祖先将覆盖您正在使用的代码。
一个基本的例子来说明差异。
用一个:
* {
box-sizing: border-box;
}
/* my code*/
body {
box-sizing: content-box;
}
.box {
width:100px;
height:100px;
border:10px solid;
padding:10px;
}
p {
padding:5px;
border:2px solid red;
}
<div class="box">
<p></p>
</div>
使用 B:
*,
*::before,
*::after {
box-sizing: inherit;
}
html {
box-sizing: border-box;
}
/* my code*/
body {
box-sizing: content-box;
}
.box {
width: 100px;
height: 100px;
border: 10px solid;
padding: 10px;
}
p {
padding: 5px;
border: 2px solid red;
}
<div class="box">
<p></p>
</div>
推荐阅读
- r - 隐藏 DT:: Datatable 的默认部分
- cloud - 在云端或本地共享文件?
- angular - 如何将两个相似的 RxJS 可观察对象数组组合成一个对象数组?
- php - AJAX POST 请求丢失
- javascript - 使用 javascript,如何将值设置为以小数点结尾的数字输入(即“100。”)
- reactjs - 为什么 React useState 钩子不能在 for 循环中工作?
- javascript - 添加履行代码为订单机器人制作购物车。给我未定义的数量参数
- grails - 在 Grails 4 中捕获请求正文内容以进行日志记录
- r - data.table 的列可以有更多类吗?我想将日期列中某些观察的日期更改为“越界”
- php - 为什么访问 .php 文件时会出现 503 错误?