禁用 :hover CSS 在移动设备上

Posted

技术标签:

【中文标题】禁用 :hover CSS 在移动设备上【英文标题】:Disable :hover CSS on Mobile 【发布时间】:2016-12-02 21:10:16 【问题描述】:

我在页面上的一些 img 元素上定义了以下 CSS。

.my-image 
    width: 100% !important;
    height: auto;
    -webkit-transition: all .5s ease;
    -moz-transition: all .5s ease;
    -ms-transition: all .5s ease;
    transition: all .5s ease;


.my-image:hover 
    -webkit-transform:scale(1.5);
    -moz-transform:scale(1.5);
    -ms-transform:scale(1.5);
    transform:scale(1.5);

由于某种原因,每当我滚动经过它时,悬停类就会在 iPhone 上激活(也就是说,沿着图像移动我的手指以滚动经过它们)。有什么方法可以禁用仅适用于移动设备的悬停 CSS?

【问题讨论】:

您可以添加媒体标签,但这适用于屏幕尺寸 是的,这可能就是我想要的。 How to remove/ignore :hover css style on touch devices的可能重复 【参考方案1】:

添加媒体查询,如

@media screen and (min-width: 1024px)
.my-image:hover 
    -webkit-transform:scale(1.5);
    -moz-transform:scale(1.5);
    -ms-transform:scale(1.5);
    transform:scale(1.5);


【讨论】:

有趣,我最终得到了类似的东西......很好奇,这也能处理 iPad 吗? ipad 屏幕尺寸 1024x768 横向 & 768x1024 纵向【参考方案2】:
@media handheld 
.my-image:hover 
    -webkit-transform: none;
    -moz-transform: none;
    -ms-transform: none;
    transform: none;


更新:2017 年 9 月 5 日,媒体查询 4 ​​规范被采用,其中 handheld 标记已被弃用。建议使用 hover 媒体查询 - 对于可以悬停的设备和无需单击的项目,以及不能单击的 not hover

@media (not hover) 
.my-image:hover 
    -webkit-transform: none;
    -moz-transform: none;
    -ms-transform: none;
    transform: none;


您也可以使用媒体查询pointer:(coarse|fine|one)coarse — 用于手指控制的触摸屏,fine 用于鼠标或触控笔,none 用于其他触摸屏。

@media (pointer:coarse) 
.my-image:hover 
    -webkit-transform: none;
    -moz-transform: none;
    -ms-transform: none;
    transform: none;


【讨论】:

哇,手持是真正的媒体标签吗? 媒体类型列表:***.com/documentation/css/317/media-queries/7625/… 手持设备比瞄准屏幕尺寸更受欢迎吗? 我认为这与屏幕尺寸无关 不推荐使用“手持”媒体类型:developer.mozilla.org/es/docs/CSS/Media_queries

以上是关于禁用 :hover CSS 在移动设备上的主要内容,如果未能解决你的问题,请参考以下文章

在移动设备上禁用所有 CSS [重复]

CSS:悬停在移动设备或其他设备上作为切换

移动设备上的悬停效果

更改:悬停以触摸/单击移动设备

.hover 的替代方案,可在移动设备上启用更好的功能

CSS:触摸屏设备上的悬停行为