我正在查看w3schools上的border-width
页面,它说:
注意:始终在border-width属性之前声明border-style属性。在设置宽度之前,元素必须具有边框。
我试图找到一个参考证实了这个陈述。似乎在border-width
工作之前声明border-style
就好了。
.demo {
width: 100px;
height: 100px;
margin: 10px auto;
}
.ten-red-solid {
border-width: 10px;
border-color: red;
border-style: solid;
}
.red {
border-color: red;
}
.ten {
border-width: 10px;
}
.solid {
border-style: solid;
}
<div class="ten-red-solid demo"></div>
<div class="ten red solid demo"></div>
答案 0 :(得分:6)
事实并非如此。
W3Schools不是官方文档来源,因此不应过于重视任何建议。
W3Schools针对学习,测试和培训进行了优化。例子 可能会简化以提高阅读和基本理解。 我们会不断审查教程,参考资料和示例以避免使用 错误,但我们无法保证所有内容的完整正确性。
浏览器在加载所有样式后对其进行评估,无论它们的声明顺序如何。
为清楚起见,以下两种风格相同:
div{
border-width:2px;
border-style:solid;
border-color:#000;
}
div{
border-style:solid;
border-width:2px;
border-color:#000;
}
答案 1 :(得分:1)
元素当然可以具有border-width
值,而不是border-style
(或者更确切地说,border-style
默认为none
)。你只是看不到边界。
我怀疑W3Schools 真正意味着你应该确保在给元素边框时始终声明border-style
,因为在默认情况下,你不会看到边框,无论边框宽度和颜色是什么,如果你忘了给它一个边框样式,你给它一个元素。 1
或者,如果该页面的作者确实认为声明的顺序很重要,那么作者就错了。 border
速记可以按任意顺序接受值,只要它们对应border-color
,border-style
和border-width
中的每一个,因为任何值之间都没有词汇歧义。组件属性(即border-color
的值永远不会被误认为是其他两个属性的值)。
1 另一方面,单独声明border-style
就足以让元素生成边框。这是因为border-width
的初始值实际上是medium
,而不是零,而border-color
的初始值是currentColor
,而不是transparent
。
div {
border: solid;
}
<div>Text</div>