我遇到text:transform
的css属性问题。当我将其设置为大写时,它在IE7和IE8中的行为有所不同。页面[1]的产品标题在其他浏览器中显示apple tree 'Gala'
,而在IE中则显示apple tree 'gala'
。请注意引用后的'g'字母。我希望'g'在IE和其他浏览器中都是首都。
我需要做什么黑客或额外设置才能让它在IE中运行?
[1] - http://shop.shootcare.co.uk/pomonafruits/find/apple-tree-gala-apl026?path=&ref=mall
答案 0 :(得分:4)
CSS规范中的属性text-transform
严重欠定。它的CSS 2.1 definition甚至没有指明“单词”的含义。在计算机上下文中,作为文本单元的“单词”仅表示非空白字符的最大序列,因此在您的情况下,包含撇号的字符串“gala”将是一个单词,其第一个字符是撇号。因此可以说IE在这里是最正确的,但其他浏览器已采用其他解释。
CSS3 Text草案建议更改或澄清含义,以便第一个字母(实际上意为“字母或数字”!)会受到影响。所以这将使'gaia'中的g大写。但它仍然没有定义“单词”,例如“前沿”是两个单词还是一个单词,或者“摇滚”中有多少单词。
结论是,几乎所有用于大写单词的方法都比CSS方式更可靠。如果可能,请根据您喜欢的规则修改生成页面的软件,使其在服务器端执行所需的操作。即使使用JavaScript也比CSS更安全。
答案 1 :(得分:0)
大写变换在某些浏览器上的工作方式不同,例如对于某些浏览器,java-script会返回Java-Script,而其他浏览器则只返回Java脚本。
还要记住,大写不能与单词的其余字母一起使用,它只会更改第一个单词,所以如果你有单词intERNET,它将返回IntERNET,保留原样。
所以我的猜测是,ie7& ie8正在把'gala'作为一个单词,通过制作'第一个字符,所以他们试图将'返回同样'变成大写,我不知道是否存在黑客攻击,但这可能会让你开始,尝试使用gala而不是'gala'进行测试,然后看看是否有办法忽略'尽管大写。