CSS媒体查询不足以检测超大型移动设备/平板电脑,而不是台式机[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS媒体查询不足以检测超大型移动设备/平板电脑,而不是台式机[重复]相关的知识,希望对你有一定的参考价值。

此问题已经在这里有了答案:

通常,当在台式机上检测到移动设备或平板电脑时,我使用以下媒体查询。

@media only screen and (min-width: 991px) 

我有一个表格组件,该组件使用CSS中的可见性设置在悬停时在每一行中呈现操作按钮。但是,当设备的最小宽度小于991px时,这些图标始终可见,因为移动设备不使用悬停。

现在的问题是,横向iPad和iPad Pro的宽度要比991宽得多。是否可以使用更高级的媒体查询或javascript代码来检测其是移动设备还是iPad设备还是台式机浏览器?

我正在使用React,并为内联媒体查询创建了自定义钩子,以应用动态样式,但这存在相同的问题。

[谢谢乔纳斯(Jonas)添加了一些有关屏幕尺寸媒体查询的建议,但这并不涵盖我的问题。我正在使用媒体查询来关闭悬停模式,某些大型平板电脑属于笔记本电脑的屏幕尺寸。下面提供了一个很好的答案。

答案

我不会尝试深入检测设备。更好的主意是寻求支持。在这种情况下,您想知道设备是否支持指针设备并且是否能够悬停。如果不能悬停,那么至少它应该支持触摸。通过触摸,您仍然可以访问焦点状态。

HTML

<div class="row">
    <div class="td">
        <a class="btn btn-primary" title="buy">
            <i class="fa fa-shopping-cart" aria-hidden="true"></i>
            <span>Add to shopping cart</span>
        </a>
    </div>
</div>

CSS

.row .btn span  display: none;  // mobile first don't display the button text
.row .btn .fa  display: inline-block;  // mobile first display icon

@media (any-hover: hover) 
    .row .btn span  display: inline-block; 
    .row .btn .fa  display: none; 
    .row .btn:hover .fa,
    .row .btn:active .fa,
    .row .btn:focus .fa  display: inline-block; 

尚未测试此代码,但这是我将开始研究解决方案的方式。

以上是关于CSS媒体查询不足以检测超大型移动设备/平板电脑,而不是台式机[重复]的主要内容,如果未能解决你的问题,请参考以下文章

css 桌面,平板电脑,移动设备的CSS媒体查询。

css 桌面,平板电脑,移动设备的CSS媒体查询。

css 桌面,平板电脑,移动设备的CSS媒体查询。

css 桌面,平板电脑,移动设备的CSS媒体查询。

css 桌面,平板电脑,移动设备的CSS媒体查询。

css 桌面,平板电脑,移动设备的CSS媒体查询。