如何在没有CSS的情况下更改XHTML中<hr />元素的颜色?

时间:2017-01-21 05:17:39

标签: html tags xhtml

W3标记验证器显示以下错误:

  

第10行,第11栏:没有属性&#34;颜色&#34;   您已在文档中使用了上面提到的属性,但是   您正在使用的文档类型不支持该属性   这个元素。此错误通常是由于错误使用而导致的   &#34;严格&#34;文档类型与使用框架的文档(例如,您必须   使用&#34; Transitional&#34;获取&#34; target&#34;的文档类型属性),   或者使用供应商专有扩展,例如&#34; marginheight&#34; (这个   通常使用CSS来修复,以实现所需的效果。

     

如果不支持元素本身,也可能导致此错误   您正在使用的文档类型,因为未定义的元素将没有   支持的属性;在这种情况下,请参阅元素未定义的错误   有关进一步信息的信息   如何解决:检查拼写和   元素和属性的情况,(记住XHTML都是小写的)   和/或检查所选文档类型是否允许它们,   和/或使用CSS而不是此属性。如果您收到此错误   使用该元素将Flash媒体合并到Web中时   页面,请参阅有效闪存上的常见问题项目。

如何更正?

5 个答案:

答案 0 :(得分:3)

tl;博士:你不能。 hr不仅在XHTML中没有color属性,在任何版本的HTML中都没有颜色属性!只需使用CSS。

更长的回答:
我不知道你为什么不想使用CSS。但如果你真的认真对待它,那就是解决方案。

如果代码验证与否,对浏览器无关紧要。如果color属性有效,则无论DTD中是否有定义,它都可以正常工作。

所以你真正想要做的就是不去工作,而只是去验证。而且,使用XHTML完全可以实现这一点。不过不是HTML,请注意;那是XHTML中X的用途。它是可扩展的!

因此,只需使用DTD获取XHTML DOCTYPE声明,然后将color属性的定义附加到其中。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
  [
    <!ATTLIST hr color CDATA #IMPLIED>
  ]
>
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>Colored hr without CSS</title>
 </head>
 <body>
  <hr color="red"/>
 </body>
</html>

你去,一个正在运行的验证XHTML文档。 (请将其保存为.xhtml,而不是.html)

声明:
除了已经提到的原因之外,不使用color属性的另一个原因是它存在兼容性问题。例如,如果恰好有color属性和css的hr,则浏览器的结果会有所不同。

&#13;
&#13;
hr {color:blue}
&#13;
<hr color="red">
&#13;
&#13;
&#13;

Firefox中的蓝色,Chrome和IE中的红色。

答案 1 :(得分:1)

hr标记不支持颜色属性,这就是发生错误的原因。尝试使用hr标签的border属性,然后它将工作。你必须使用css。

<hr style="border: 1px solid #f00">

答案 2 :(得分:1)

您无法单独使用XHTML更改<hr>标记的颜色。

虽然有些答案建议使用style属性,但这可能是内联CSS,而不是纯粹的XHTML。

答案 3 :(得分:0)

您可以使用style属性更改hr标记的颜色。

<hr style="border-color: #f00">

我认为它应该按照你想要的方式工作。

答案 4 :(得分:0)

hr元素支持CSS background-color属性。它还支持CSS bordermarginpadding属性;可能position和相关属性虽然我高度建议考虑使用该属性的考虑因素对于大多数元素来说是90%的时间。

示例:

<hr style="background-color: #f00; height: 4px; width: 90%;" />