为什么style * {display:*}包含在HTML体中?

当我将这样的CSS添加到< style>标签
* {
    display:block;
}

它从来没有正确解释。相反,我看到什么?不知何故,< style>成为html体的一部分。例如。:

* {
    display:block;
}
<p>paragraph</p>
<phrase>phrase</phrase>
<pet>pet</pet>

这发生在任何地方。第一次,我认为这是StackSnippets的问题。 (即Stack Overflow的现场演示,我上面提供的),但后来我用代码笔检查。然后用jsfiddle。然后我走了,在我的服务器上做了一个文件,给我的插入在上面的代码片段的所有内容

结果总是相同的。 CSS被包括在html中,虽然它被应用。 (唯一的解决方法是创建一个样式表,并使用< link>)

最有趣的是,它似乎只发生在显示:*。例如,以下作品:

* {
    color:green;
    background:red;
    border:2px solid orange;
    border-radius:5px;
}
<p>paragraph</p>
<phrase>phrase</phrase>
<pet>pet</pet>

但是一旦我把最后一个片段显示的样式:*,这些样式再次神奇地包含在HTML中。

* {
    color:green;
    background:red;
    border:2px solid orange;
    border-radius:5px;
    display:inline-block;
}
<p>paragraph</p>
<phrase>phrase</phrase>
<pet>pet</pet>

为什么会发生?

解决方法

它的样式< head>元素和其中的一切,包括非常< style>元素,因为CSS显示为字符数据在< style>元件。 A< link>元素另一方面没有任何内容 – 它指向一个单独的资源,所以元素本身没有什么要显示

大多数浏览器都会实现< head>作为display:none(和一些传播该值到每个后代),您可以通过使用显示样式定位它们来覆盖。其余属性仍适用于< head>和它的后代无论你是否这样做,但没有它,他们根本不会出现在你的页面,所以你不会真的看到它发生。这真的是所有的东西 – 没有任何其他特别的< head>或其相关元素。

换句话说,就CSS而言,以下(是,具有样式属性的< style>元素…):

<style style="display: block; font-family: monospace">
p { color: red; }
</style>

与此没有什么不同:

<code style="display: block; font-family: monospace">
p { color: red; }
</code>

相关文章

前言 最近项目做完,用户需要兼容IE,于是开展了兼容性的调整工作。边调整边想感叹IE真是个沙雕。。特将...
前言 有些属性不是很常用,但是工作中遇到了,记录一下,方便学习。 1、text-indent text-indent 属性规...
前言 政府网站会遇到公祭日的时候,网站整体颜色变灰的情况。今天正好调了一下。在此把解决方案分享给大...
需求 项目里有个消息中心,当有消息的时候,小铃铛图标可以晃两下,提示当前有信息。 实现过程 书写css...
html代码 css代码 效果图
在一些界面上 , 如果每个icon都去找图片还是相当麻烦的 , 直接使用css画出icon就方便的多了 , 下面两个...