:触摸CSS伪类或类似的东西?
我试图做一个button,这样当用户点击它时,鼠标button被按下时,它会改变它的样式。 如果在移动浏览器中触摸,我也希望它以类似的方式改变它的风格。 看似明显的事情是使用CSS:active伪类,但是这并不起作用。 我尝试过:专注,而且没有工作。 我试过:盘旋,它似乎工作,但它保持了我的手指离开button后的风格。 所有这些观察都在iPhone 4和Droid 2上。
有没有什么办法可以在手机浏览器(iPhone,iPad,Android和其他人)上复制效果? 现在,我正在做这样的事情:
<style type="text/css"> #testButton { background: #dddddd; } #testButton:active, #testButton.active { background: #aaaaaa; } </style> ... <button type="button" id="testButton">test</button> ... <script type='text/javascript' src='http://code.jquery.com/jquery-1.6.1.min.js'></script> <script type='text/javascript'> $("*").live("touchstart", function() { $(this).addClass("active"); }).live("touchend", function() { $(this).removeClass("active"); }); </script>
:活动的伪类适用于桌面浏览器,活动类适用于触摸浏览器。
我想知道是否有一个更简单的方法来做到这一点,而不涉及Javascript。
没有这样的事情:touch
W3C规范, http://www.w3.org/TR/CSS2/selector.html#pseudo-class-selectors
:active
应该工作,我会想。
在:active
/ :hover
伪类上的顺序对于它正常工作是非常重要的。
这是来自上述链接的报价
交互式用户代理有时会根据用户操作更改呈现。 CSS为常见情况提供了三个伪类:
- :hover伪类适用于用户指定一个元素(带有一些指针设备),但不激活它。 例如,当光标(鼠标指针)hover在由元素生成的框上时,可视用户代理可以应用这个伪类。 不支持交互媒体的用户代理不必支持这个伪类。 支持交互媒体的一些符合的用户代理可能不能支持这个伪类(例如,笔设备)。
- :当用户激活一个元素时,激活的伪类应用。 例如,在用户按下鼠标button并释放它的时间之间。
- 焦点伪类适用于元素具有焦点(接受键盘事件或其他forms的文本input)。
由于手机不提供hover反馈,作为用户,我希望在点击链接时看到即时反馈。 我注意到-webkit-tap-highlight-color
是响应速度最快的(主观的)。
将以下内容添加到您的身体,并且您的链接将具有水龙头效果。
body { -webkit-tap-highlight-color: #ccc; }