【问题标题】:Styles based on touch capabilities rather than viewport media queries?基于触摸功能而不是视口媒体查询的样式?
【发布时间】:2014-01-31 00:50:56
【问题描述】:

tl;dr: 将“移动”CSS 限定在 .touch 类下(由 Modernizr 添加)而不是基于视口大小的媒体查询是否有意义?

我正在为仅设计为桌面的网站创建移动样式(即页面固定在 ~900 像素宽,许多目标太小而无法触摸等)。该网站有 很多 表格、一些表格,但没有图像/视频/图表。我无法控制 HTML 结构(我想避免使用 JS 除外),也无法对现有桌面样式进行有意义的更改。

我编写了一个新的样式表,它在必要时覆盖了那些样式,以使其在手机和平​​板电脑上使用max-width 媒体查询以纵向模式正常工作。

问题在于,当您将平板电脑切换到横向模式时,屏幕会变为 1024 像素宽,而这正是桌面样式应该接管的地方。然而,平板电脑仍然是一种触摸设备,我觉得“移动”风格更适合平板电脑(更大的点击目标、更好的表单字段和标签布局、非画布菜单等)。仅仅因为您旋转了设备,网站就突然发生变化,这似乎非常笨拙和迷失方向。

我是否应该在 Modernizr 添加的 .touch 类而不是视口宽度下限定移动样式?从表面上看,这听起来不是一个坏主意,但是我再次知道基于视口的媒体查询是编写样式的正确方法,所以我不禁觉得我会遇到麻烦。

【问题讨论】:

    标签: css touch media-queries


    【解决方案1】:

    您可以使用 Modernizr 在要加载的两个样式表之间进行选择。

    在一个名为 small-enough.css 之类的文件中,根据平板电脑纵向尺寸和向下的媒体查询导入您的移动样式。发现文档here。只要有这一行就行了。

        @import path/your-mobile-styles.css @media (max-width: [tablet portrait width]);
    

    如果是触摸设备,那么使用modernizr 只需加载移动样式即可。如果不是触摸加载,则使用媒体查询决定加载移动样式的文件。

        Modernizr.load({
          test: Modernizr.touch,
          yep : 'your-mobile-styles.css',
          nope: 'small-enough.css'
        });
    

    【讨论】:

    • 我试过了(我想避免在桌面浏览器上加载所有移动 CSS/JS),但由于桌面 CSS/JS 首先加载,FOUC 太多。我得看看我是否也可以将 Modernizr 用于桌面 CSS,然后加载其中一个,但不能同时加载两者。
    【解决方案2】:

    您可能可以使用媒体查询来定位这些设备

    @media only screen and and (min-device-width:~whatever~) and (max-device-width:1024px) and (orientation:landscape) {
      styles
    }
    

    我们还应该记住,并非所有移动设备都支持触控,例如某些黑莓手机,因此基于modernizr 添加的 .touch 类启用某些功能/样式也会有所帮助。

    【讨论】:

    • 宽于(max-device-width:1024px)的平板电脑怎么样?
    • 同样的语法也适用,例如@media (max-device-width: 1280px) and (orientation: landscape) {} 一个方便的资源可以在nmsdvid.com/snippets找到
    • 我的意思是 AFAIK,大多数现代桌面浏览器也支持媒体查询(例如 max-device-widthorientation)。所以一个 1024px 或 1280px 的桌面显示器会得到这些样式,但我想不理会桌面。
    • 查看cssmediaqueries.com,它将帮助您根据需要定制查询。您还可以在 mydevice.io 找到有用的信息。您也可以尝试在样式表的链接中使用 media="handheld"
    猜你喜欢
    • 1970-01-01
    • 2016-02-15
    • 2021-11-27
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    相关资源
    最近更新 更多