我正在开发一个离线的网络应用程序,(目前)只针对iPhone/iPod上的Safari。主要是为了好玩,但也作为减少我对jQuery事件绑定的依赖(并因此希望加快UI响应速度)的一种方式,我尝试用一些CSS3代替基本的显示/隐藏功能。仅使用CSS3显示/隐藏元素 - 为什么这不起作用?
下面的代码是在Firefox 3.6.3,但不是在最新的Safari浏览器的工作原理,台式机和移动一个简单的例子:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<style type="text/css">
input:not(:checked) ~ select { display: none; }
input:checked ~ select { display: inline; }
</style>
</head>
<body>
<input type="checkbox" id="cb" /> <label for="cb">Toggle select</label>
<select id="sel"><option value="">Select Box</option></select>
</body>
</html>
我是不是真的希望这个工作,但我很高兴看到它,至少在Firefox中。任何想法为什么它不适用于Safari?其中,<select>
最初是隐藏的,这是正确的,并且Web Inspector告诉我在每次单击复选框时都会设置正确的显示值,但该元素无法显示。
我已经完成了一个类似的成功实验,其中我将中的文本包装在<a href="#sel>
标记中并使用select:target { display: inline; }
规则,但这不是我最终期望的行为。
我是否过分了?这种东西最好留给Javascript吗?
我会说这是努力去做一些你可以在js中轻松做到的事情..用户界面的响应增益可能不足以保证失去理智,试图使这种工作正常工作所有时间,特别是如果你试图变得更复杂:D – Jeriko 2010-04-15 16:00:57