以井号(#)开头的CSS属性是否有效?

10

以下CSS代码是什么作用?这段代码是否有效?

h4 {
    width: 83%;
    #width: 75%;
}

那不是一个可以接受的黑客手段。还有其他(类似的)黑客手段已经经过测试并更为广泛地知晓。 - thirtydot
6个回答

6
这不是有效的。#width: 75%; 是一个语法错误,因为在 CSS 属性名称中不使用 #(虽然它用于 CSS 选择器,以选择具有特定 id 的元素)。大多数浏览器将忽略它(希望如此),只应用第一个规则。
可能有人试图编写 CSS 注释。这是有效的方式:/*This is a comment*/ 编辑
我建议使用CSS重置文件来解决浏览器差异。

1
顺便说一下,CSS选择器中使用“#”,但我相信你已经知道了。 - Delan Azabani
3
但是原帖并没有涉及到选择器。 - BoltClock
2
不,我有人写CSS来解决IE问题,像这样的事情很多,我需要知道这是否可行,我不是CSS专家。 - rick schott
嗯,黑客通常是有效的,但我不建议使用它们。为了考虑到浏览器之间的差异,最好使用CSS重置文件:http://yuilibrary.com/yui/docs/cssreset/ - Chris Laplante

5
显然,有一个哈希hack看起来与你所拥有的完全相同,但我不知道作者试图针对或过滤哪些特定浏览器,因为没有可靠的结果表明哪些浏览器应用规则,哪些不应用(那个漫长的用户代理字符串列表不是我所说的可靠;我称之为不一致)。
无论如何,哈希符号不是属性名称的有效字符。我相信任何不是IE的人都会直接忽略它。

1
在任何人开始讨论安全的CSS hack之前,请看一下那个链接中的用户代理字符串列表,然后告诉我你是否认为它是安全的。再说一遍,我非常喜欢这篇文章开头所说的话:"请忽略:这不是一个hack,因为它指定的CSS是无效的。"——大多数hack都是无效的,但仍然是hack。 - BoltClock
我认为没有人会说#是一种安全的黑客技巧。 - thirtydot

3

在属性前使用#,可以为ie7应用不同的css样式。这是一种类似于*的css hack。为了使其有效,您可以使用条件注释来针对ie。


2

2

顺便提一下,如果第二个宽度没有在#之前出现,它将采用宽度为75%而不是83%。最后一个值始终覆盖所有先前的值。正如其他人指出的那样,这可能是一种hack方法,我不确定,但很可能是语法错误。


2

基本上回答你的两个问题。

  • 属性前的#针对IE7和IE6(以及更低版本)
  • 不,这是无效的。

我问过同样的问题,那里有更多信息可能对其他人有帮助:

帖子:“CSS - "#" sign before property


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