为了账号安全,请及时绑定邮箱和手机立即绑定

CSS 媒体查询不足以检测超大型移动/平板设备与台式机

CSS 媒体查询不足以检测超大型移动/平板设备与台式机

大话西游666 2021-11-25 16:37:14
通常,在针对台式机检测移动或平板电脑设备时,我使用以下媒体查询。@media only screen and (min-width: 991px)我有一个表格组件,它使用 CSS 中的可见性设置在悬停时呈现每行中的操作按钮。但是,当设备低于 min-width 991px 时,图标始终可见,因为移动设备不使用悬停。现在的问题是横向和 iPad 专业版中的 iPad 比宽度 991 更重要。是否有更高级的媒体查询或 Javascript 代码我可以用来检测它是移动/iPad 设备还是桌面浏览器。我正在使用 React 并为应用动态样式的内联媒体查询创建了自定义钩子,但这有同样的问题。感谢 Jonas 添加了一些关于使用屏幕尺寸的媒体查询的建议,但这并没有涵盖我的问题。我正在使用媒体查询来关闭悬停模式,一些大型平板电脑的屏幕尺寸低于笔记本电脑的屏幕尺寸。下面提供了一个很好的答案。
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

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


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; }

}

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


查看完整回答
反对 回复 2021-11-25
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信