CSS没有条件语句,因为它不是一种编程语言如Javascript。虽然,我相信在CSS的作品中可能会有某种条件陈述。
您将不得不依赖JavaScript来实现CSS的任何一种条件测试用例。
含义,你不能直接检测到对CSS的支持。
但是,CSS确实有一个“技巧”,这要归功于它的“级联”性质,但它只有在用相同样式的新代码替换一些旧代码时才有用。
这听起来很有趣,这里有几个例子:
-moz-border-radius: 6px;
-o-border-radius: 6px;
-webkit-border-radius: 6px;
-ms-border-radius: 6px;
border-radius: 6px;
在确实支持官方CSS的浏览器,它会在旧版本中表示第5行的风格说火狐,1号线将被应用,第2-5行将被忽略,因为它们是未知的。
另一个(也许是更好的)例子是:
background-color: #AAA;
background-color: rgba(0, 0, 0, 0.5);
此代码会给背景为灰色,而新的浏览器会给它一个黑色的色彩搭配50%的透明度,覆盖旧的颜色。
希望有所帮助。
干杯!
- 更新-
我只是遇到了一些可能有所帮助。在Aaron Gustafson的“自适应网页设计”一书中,他提到如果给定的浏览器/渲染器不支持给定的选择器,CSS将如何忽略整个规则。
通过上面的概念,如果你能找到,这不是在旧版本中实现,但在较新的版本,你可以做一些这样的选择:
/* fake CSS */
.sprite {
background-image: url(sprite90x38.png);
}
[[ selector that is supported by newer browser/OS ]],
.sprite {
background-image: url(sprite180x76.png);
/* 180/2 = 90 */
background-size: 90px auto;
}
的想法是对的“旧”浏览器,您可以加载旧的PNG,但对于较新的浏览器,它将加载较大的PNG并应用背景大小。
我会关心的唯一的事情是,如果这会导致支持的浏览器加载两个图像,但应用之一。
而这仍然需要在另外一个版本,找到不支持的选择。 Quicksmode.com可能会帮助你找到一个:
http://www.quirksmode.org/css/contents.html
- UPDATE 2 -
我把这个意见,但我会在这里,因为它可能会有所帮助。我花了一些时间试图找出哪些浏览器版本支持iOS 3.1.3,因此使用上述技巧时可能使用哪些选择器。
我发现,这款苹果开发者网站:http://developer.apple.com/library/safari/#documentation/appleapplications/reference/SafariCSSRef/Articles/StandardCSSProperties.html
如果你做一个页面搜索(CTR + F)为背景的尺寸,它表明的iOS 1+支持一种叫做私有版本:
-webkit-background-size: length
-webkit-background-size: length_x length_y
这可能是一个可能的解决方案。如果您在真实之前添加,可以确保向后兼容。
-webkit-background-size: length
background-size: length
希望帮助因为这样一个条件测试,看是否有规则支持的原来的问题找到替代解决方案,现在是不是在CSS可能。
根据你的链接,新的背景属性(包括背景大小)完全支持早在iOS 4.0和Android 2.1。你真的会在操作系统上有很多(任何?)用户吗?这可能不值得担心。 – daGUY 2012-01-10 21:37:59
办公室里有一个人在使用iOS 3.1.3,他不会批准网站,直到他的手机上的网站看起来不错。 – JoJo 2012-01-10 22:53:37
然后他使用原始iPhone吗?我相信即使是iPhone 3G也可以升级到iOS 4.尝试解释说因为他使用的是5年前的手机,它根本无法支持你想要做的事情...... – daGUY 2012-01-11 16:15:36