3

我的 css 属性有问题text:transform。当我将它设置为大写时,它在 IE7 和 IE8 中的行为不同。page[1] 的产品标题apple tree 'Gala'在其他浏览器中显示,而在 IE 中显示apple tree 'gala'。请注意引用后的“g”字母。我希望 'g' 在 IE 和其他浏览器中都是大写字母。

我需要做任何 hack 或额外的设置,让它在 IE 中工作吗?

[1] - http://shop.shootcare.co.uk/pomonafruits/find/apple-tree-gala-apl026?path=&ref=mall

4

2 回答 2

4

该属性text-transform在 CSS 规范中的定义严重不足。它的CSS 2.1 定义甚至没有指定“单词”的含义。在计算机上下文中,作为文本单位的“单词”仅表示非空白字符的最大序列,因此在您的情况下,包含撇号的字符串“gala”将是一个单词,其第一个字符是撇号。所以可以说 IE 在这里是最合适的,但其他浏览器采用了其他解释。

CSS3 文本草案建议更改或澄清含义,以便第一个字母实际上意味着“字母或数字”!)会受到影响。所以这将使'gaia'中的g大写。但它仍然没有定义“词”,例如“尖端”是两个词还是一个词,或者“摇滚”有多少个词。

结论是几乎任何大写单词的方法都比 CSS 方法更可靠。如果可能,根据您喜欢的规则修改生成页面的软件,使其在服务器端执行所需的操作。即使在这里使用 JavaScript 也比 CSS 更安全。

于 2012-11-26T08:33:50.690 回答
0

好吧,大写转换在某些浏览器上的工作方式不同,例如,对于某些浏览器,java-script 会返回 Java-Script,而另一些则只会返回 Java-script。

还请记住,大写字母不适用于单词的其余字母,它只会更改第一个字母,因此如果您有单词 intERNET,它将返回 IntERNET,而其余部分则保持原样。

所以我的疯狂猜测是,ie7 和 ie8 将 'gala' 作为一个单词,将 ' 作为第一个字符,所以他们试图将 ' 返回相同 ' 大写,我不知道它是否有破解,但这可能会让你开始,尝试使用 gala 而不是 'gala' 只是为了测试,然后看看是否有办法在大写时忽略 '。

于 2012-11-26T08:16:55.193 回答