为什么有些名称,如none和hidden以及href与src在CSS和HTML中如此不一致?

ncu*_*ica 5 html css w3c naming

嗨,这更像是一个概念性的问题.W3C是如何决定使用hiddenvs. none?我问,因为我是一名ESL人(英语作为第二语言).如果我正在使用overflow: hidden, overflow: none也可以使用.这同样适用于display: nonevisibility: hidden.不能只是一直display: nonevisibility: none,因为真正做不同的是性能displayvisibility而不是他们的价值.这更像是一个解释请求.例如,发生了类似的"奇怪"事情:

<script src="file.js">
Run Code Online (Sandbox Code Playgroud)

<link href="file.css">
Run Code Online (Sandbox Code Playgroud)

他们为什么不同?我理解所有这些在技术上如何工作,我只是好奇他们如何决定属性的名称.

谢谢.

Asb*_*erg 12

这些实体(元素,属性,属性等)被命名为不同的东西的原因是因为它们用于不同的目的.让我们从顶部开始,并通过您的示例.

显示与Visibiliy

display: none;
visibility: hidden;
Run Code Online (Sandbox Code Playgroud)

CSS 2.1规范中可以看出,该值none用于许多不同的属性,以指示不应显示属性的可视方面.因此,如果属性是float,则none表示元素不浮动.对于该属性display,none意味着它不显示.

因为visibility, hidden不同,因为它不同display,不影响元素流.元素的框仍将被渲染,但它将是不可见的.如果你给的值nonevisibility,这将意味着语义完全一样的东西display: none,它不是.

溢出

overflow: hidden;
overflow: none;
Run Code Online (Sandbox Code Playgroud)

这些意味着不同的东西 hidden表示溢出元素大小的内容将被剪切,同时none表示没有溢出控制; 实际上是关闭溢出.none不是有效值overflow,但在这种情况下,visible具有相同的效果.

Src vs. href

<script src="file.js">
<link href="file.css">
Run Code Online (Sandbox Code Playgroud)

script和之间的区别在于link,虽然script主要目的是src在HTML文档中嵌入(通过属性内联或通过引用引用)脚本,但目的link是引用万维网上的其他URI.您link用来引用CSS样式表的事实不是很直观; 一个更直观的解决方案可能是:

<style src="file.css" />
Run Code Online (Sandbox Code Playgroud)

我没有详细说明为什么HTML工作组选择使用link而不是style,但从一点点挖掘,似乎该link元素已经存在于HTML 1.0HTML 2.0中,并且style直到HTML 3.0才引入.

由于样式表语言的讨论早在1993年就开始了(同年HTML 1.0已经完成)并且HTML 3.0直到1995年才开始,因此他们找到了在style元素发明之前嵌入样式表的方法.

  • @asbjornu` <link href ="file.css"/>`实现根据规范不同.文件并行下载,页面处理(HTML)不会暂停.当使用`href`时,我们告诉*user-agent*(在这种情况下是浏览器)*file.css*是一个与`html`文档**相关的文件.如果我们使用`src`,就像告诉*user-agent*下载文件,将文件内容转储到标签内然后继续.这就是原因,`img`,`script`和`iframe`使页面加载速度变慢. (2认同)