何时应该使用属性而不是CSS样式?

5
有时候在xhtml中,我们会写下像这样的代码:<table border="1">,然后在css中再次编写代码table{border:2px solid black}。我对何时编写哪个代码深感困惑。什么时候使用属性,什么时候使用css。有时它们会让人感到混淆不清。

2
关于 border 属性:请勿使用此属性,因为它已被弃用:应使用 CSS 样式化 <table> 元素。https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/table#attr-border - showdev
2
同样适用于 cellpaddingcellspacing:https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/table#Attributes - showdev
3
这就是为什么你永远不应该注意w3schools所说的内容。它经常是错误的,而且与W3C没有任何关联。 - Alohci
2
@RandomUs1r ... 不要相信w3schools的准确性。去看官方文档吧。即使该网站已经纠正了一些问题,它仍然不如文档本身可靠,并且绝不是反对文档的有效论据。 - Brett Weber
@Alohci,我明白了,我不知道它与规范有差异,但这不会阻止我在我的标记中使用style="border: 1px"(不要仅使用'1')作为边框与显示有关而不是内容(HTML)。 - RandomUs1r
显示剩余4条评论
4个回答

6

如果您不确定使用哪个工具,请考虑它们的实际用途。

HTML是一种标记语言,用于描述您网页上的内容,以便浏览您网站的任何设备都能理解。它定义段落、引用、重要内容、导航等。

CSS是一种样式语言,它描述您的内容如何呈现。使用它可以使元素看起来符合您的期望,使您的网站成为视觉上令人愉悦的东西。

边框是您内容的视觉风格之一。您将内容放在表格中是因为这有意义,但如果您想向表格添加边框,则可以使用CSS规则使其看起来符合您的期望。

通常您会发现旧的HTML代码使用更多属性来样式化内容,以及<font><center>标签等将内容与呈现混合在一起的东西。您还可能发现,在纯CSS中无法实现您网站的某些视觉部分,需要额外的标记才能使其正常工作;这就是作为Web开发者所做出的权衡决策。


2
尽管边框属性 未被弃用,而对齐属性已经被弃用(为了强调该属性在HTML4推荐中的状态),但通常建议不要在标记中使用这些属性。
当查看XHTML表格文档时,我找不到有关这些属性的参考,因此我认为在那里不可接受。
作为替代,使用CSS消除了内容和样式的混合。XHTML似乎完全专注于内容而不是样式,因此我必须说,虽然可以接受,但在外部样式表中使用属性代替CSS并不是最佳选择。
一种情况下,我可以看到使用属性而不是CSS的地方是设计HTML电子邮件,因为大多数电子邮件客户端会剥离CSS,除非使用样式属性声明内联。在这种情况下,使用单独的属性可能更清晰,而不是将所有规则都塞入样式属性中。
更新

由于另一个用户的评论提供的信息,我发现我查看的XHTML规范已经过时。现代XHTML确实认可和支持诸如border之类的属性。该链接提供了HTML和XHTML之间差异的解释作为主题的介绍。很好的东西。 我参考的评论如下:

当提到XHTML文档时,您是指未完成的XHTML2规范。现代XHTML是XHTML5,具有与常规HTML5相同的属性和内容模型规则,只是语法不同。XHTML2的作者旨在清除多年来在HTML上积累的所有垃圾,因此采取了非常纯粹的方法。HTML5的作者采取了更加实用主义的态度,认识到某些奇怪的功能,例如border="1"实际上很有用,并允许它们在狭窄的情况下使用。

当你讨论XHTML文档时,指的是被放弃的XHTML 2规范。现代XHTML是XHTML5,它具有与常规HTML5相同的属性和内容模型规则,只是语法不同。XHTML 2的作者们试图消除多年来在HTML上积累的所有垃圾,因此采取了非常纯粹的方法。HTML5的作者们采取了更加实用主义的态度,认识到某些奇怪的特性(例如border="1")实际上很有用,并允许在那些狭窄的情况下使用它们。 - Alohci
@Alohci - 很棒的信息!我之前都不知道,谢谢你分享! - Brett Weber

1
你应该更倾向于使用样式而不是属性,特别是在这种情况下,因为根据W3C 属性索引<table> 上的 border= 属性已被弃用。虽然 Cellspacing 和 cellpadding 没有被正式弃用,但它们的使用被不鼓励,并在 HTML5 中列为 “过时特性”
尽可能地将所有样式/格式与文档分开 - 文档应该只包含内容和结构 - 然后使用 XSLT 或 CSS 样式化。

评论中已经指出,这个声明(“在<table>上使用border=属性已经被弃用。Cellspacing和cellpadding也被弃用。”)是无效的。如果您能提供可以覆盖W3C文档的文档,我将撤销我的反对票。 - Brett Weber
@Brett 当然,谢谢,我会引用来源...但是在我撰写这篇文章之前,至少在我点击“发布”之前还没有评论。 - Stephen P
没问题,我只是想保持这个问题的准确性,因为不久前我也有同样的问题。在看到这个之前,我对此仍感到困惑。虽然如此,我同意不应该使用这个属性。 - Brett Weber

0

表格属性已经过时。您应该始终使用CSS来为您的表格添加样式,无论是创建一个单独的样式表还是将其嵌入到HTML文件中。

任何HTML元素都可以使用CSS进行样式设置。

编辑:

有关已弃用属性的更多信息,请参阅此处:http://www.w3.org/TR/html4/index/attributes.html

祝您好运!


评论中已经指出这个语句(“表属性已被弃用”)是无效的。如果您能提供相关文档来覆盖W3C的文档,我将撤销我的反对票。 - Brett Weber
这是一个关于属性的链接。与表格相关的边框定义行未显示该属性已被弃用。应该表示此内容的空格为空白,不包含代表弃用属性的传说中的字符“D”。在HTML4的推荐版本和HTML5.1的草案中,此属性并未被弃用。除此之外,也没有显示出它将被逐步淘汰。很抱歉,这只是加强了对问题评论的看法。 - Brett Weber
不是要太过苛求,只是想保持这个问题的清晰,因为我也曾经对此感到困惑。虽然我同意不应该使用这个属性。 - Brett Weber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接