我正在try 制作一个按钮,这样当用户单击它时,它会在按住鼠标按键的同时更改其样式.如果它在移动浏览器中被touch ,我也希望它以类似的方式改变它的风格.对我来说,看似显而易见的事情是使用css:active伪类,但这不起作用.我试过了:集中注意力,但也不管用.我试过了:悬停,它似乎起作用了,但在我把手指从按钮上拿开后,它保持了原来的风格.所有这些观察都是在iPhone4和Droid2上进行的.

有没有办法在移动浏览器(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类用于touch 浏览器.

我想知道有没有一种更简单的方法来做这件事,而不涉及Javascript.

推荐答案

W3C规范中没有:touch这样的东西,http://www.w3.org/TR/CSS2/selector.html#pseudo-class-selectors

我想:active个应该行得通.

:active/:hover伪类上的顺序对于其正常运行非常重要.

以下是上述链接引述

交互式用户代理有时会响应用户操作更改呈现.CSS为常见情况提供了三个伪类:

  • 当用户指定元素时,将应用:HOVER伪类 (使用一些定点设备),但确实 而不是激活它.例如,一个可视的 用户代理可以应用此 当光标(鼠标)出现时的伪类 指针)悬停在生成的框上 通过元素.用户代理注意事项 支持交互式媒体不需要 必须支持这个伪类. 一些一致性用户代理支持 交互式媒体可能无法 支持该伪类(例如,笔 设备).
  • :Active伪类在由激活元素时应用 用户.例如,在 用户按下鼠标的时间 按钮,然后松开它.
  • :focus伪类在元素具有焦点时应用

Html相关问答推荐

每次在视口中运行动画

如何阻止Chromecast图标出现在HTML5视频

为所有必填字段添加所需的占位符文本(Angular Material)

R-markdown中的非顺序列表

是否可以部分列出一个HTML有序列表

更改垫子输入的涟漪 colored颜色

Style=背景图像URL引用变成&;Quot;

禁用所有行,但在16角中单击编辑按钮的行除外

如何删除FONT创建的文本下方的空格

如何在小屏幕中制作水平滚动div

网格项未在同一行上对齐

标题在实时网站上闪烁

嵌入最近的 YOUTUBE 视频(不是短片,视频)

用于表行组标题的正确 HTML 标记是什么?

在包含 html 标签的字符串的子字符串中应用不同的样式

防止 HTML 表格在 Quarto 中使用全页宽度

不理解 CSS 中的 General sibling combinator (~)

为什么 `html` 上的 overflow: hidden 将滚动框移动到正文?

如何向弹出窗口添加 sanitize: false 选项?

html tailwindcss 给 li 标签添加边框