当我看到网站的初始代码和示例时,CSS总是在一个单独的文件中,命名为“main.css”,“default.css”或“Site.css”。然而,当我编写一个页面时,我经常试图将CSS与DOM元素放在一起,例如在图像上设置“float: right”。我觉得这是“糟糕的编码”,因为在示例中很少这样做。

我明白,如果样式将应用于多个对象,明智的做法是遵循“不要重复自己”(Don't Repeat Yourself, DRY),并将其分配给每个元素引用的CSS类。然而,如果我不会在另一个元素上重复CSS,为什么不内联CSS,因为我写HTML?

问题是:使用内联CSS被认为是不好的,即使它只用于该元素?如果有,为什么?

例子(这样不好吗?)

<img src="myimage.gif" style="float:right" />

当前回答

根据AMP HTML规范,为了性能目的,有必要将CSS放在HTML文件中(而不是外部样式表)。这并不意味着内联CSS,但它们确实没有指定外部样式表。

这样一个服务系统可能做的优化的不完整列表是: 将图像引用替换为符合查看器视口大小的图像。 内联图像在折页上方可见。 内联CSS变量。 预加载扩展组件。 精简HTML和CSS。

其他回答

我们已经创建了一个模板驱动的工件生成器,它为任何类型的文本工件——HTML、XML、计算机语言、非结构化文本、DSV等——提供了包含文件的功能(例如,它非常适合处理普通Web或手动页面的页眉和页脚,而无需脚本)。

一旦你有了它,并使用它在你的“head”标签中提供“style”标签,“关注点分离”参数就消失了,取而代之的是“我们必须在对模板的每次更改后重新生成”和“我们必须从它生成的内容中调试模板”。自从第一种计算机语言获得预处理器(或者有人开始使用M4)以来,这些抱怨就一直存在。

总的来说,我们认为CSS文件或“style”标签的元化功能比元素级样式化更简洁,更不容易出错。但这确实需要一些专业判断,所以新手和散漫的人不必费心。

根据AMP HTML规范,为了性能目的,有必要将CSS放在HTML文件中(而不是外部样式表)。这并不意味着内联CSS,但它们确实没有指定外部样式表。

这样一个服务系统可能做的优化的不完整列表是: 将图像引用替换为符合查看器视口大小的图像。 内联图像在折页上方可见。 内联CSS变量。 预加载扩展组件。 精简HTML和CSS。

内联CSS总是优先于任何链接样式表CSS。如果您编写了一个合适的级联样式表,而您的属性没有正确应用,这会让您非常头疼。

它还在语义上损害了应用程序:CSS是关于将表示与标记分离的。当您将两者纠缠在一起时,事情就变得更加难以理解和维护。这与在服务器端将数据库代码与控制器代码分离的原理类似。

最后,假设您有20个这样的图像标记。当你决定它们应该向左浮动时会发生什么?

当你想让网站看起来不一样时,不得不修改100行代码。这可能不适用于你的例子,但如果你使用内联css的事情

<div style ="font-size:larger; text-align:center; font-weight:bold">

在每个页面上表示一个页眉,这样维护起来会容易得多

<div class="pageheader">  

如果pageheader定义在一个单独的样式表中,那么如果你想改变整个站点的页面header的外观,你只需在一个地方更改CSS。

然而,我要说的是,在你的例子中,我认为没有问题。您针对的是单个图像的行为,它可能必须在单个页面上显示正确,因此将实际的css放在样式表中可能会过度。

除了其他答案,你不能针对内联CSS中的伪类或伪元素