我正在尝试制作一个按钮,这样当用户单击它时,它会在按住鼠标按钮的同时更改其样式。

有没有办法在移动浏览器(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>

:active 伪类适用于桌面浏览器,而 active 类适用于触摸浏览器。

我想知道是否有一种更简单的方法来做到这一点,而不涉及 Javascript。

答案

不存在这样的事情:touch在 W3C 规范中,http://www.w3.org/TR/CSS2/selector.html

:active我想应该可以。

订购于:active/:hover伪类对于它的正确运行很重要。

这是上面链接的引用

交互式用户代理有时会更改呈现以响应用户操作。

  • :hover 伪类在用户指定元素(使用某些指点设备)时应用,但不会激活它。
  • :active 伪类在用户激活元素时应用。
  • :focus 伪类在元素具有焦点时应用(接受键盘事件或其他形式的文本输入)。

来自: stackoverflow.com