选择退出响应式设计?

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费积分!

读者 Glynn 写道

我想知道您是否曾经见过响应式网页设计,其中包含一个“查看完整网站”链接。 我知道在开发响应式设计时,我们应该避免完全隐藏内容,但是一些用户可能实际上更喜欢捏合缩放和在他们的设备上使用传统的水平菜单。

您见过这种设计示例吗? 您认为如何实现它?

我认为这是一个非常有趣的问题。

曾经有一段时间,我们嘲笑任何没有提供“完整网站”链接的移动版本网站。 但是随着响应式设计开始流行,我们看到这种情况越来越少。 事实上,我不确定我是否在使用响应式设计专门适应移动屏幕尺寸的网站上见过这种设计。

为什么我们看不到选择退出响应式设计? 我认为有两个原因

  1. 在技术上实现起来比较困难,而且没有太多先例。
  2. 这表明您在响应式设计方面做得不好。

后者可能是更重要的因素。 就像:如果我们不确定它是否是一种更好的体验,为什么要创建这种响应式设计呢?

一种可能合理的场景是不同用户有不同的用例。 也许大多数用户访问该网站是为了阅读,而您的响应式设计很好地适应了阅读。 但是有些用户是为了完成其他任务,对于他们来说,响应式设计反而是一种阻碍。

实现它

我还没有真正做过,但理论上我会这样做。 如果你选择了桌面优先而不是移动优先的方法,这会更容易(我认为)。

1. 查询参数切换

也许

http://yoursite.com/?resp=no

2. 删除视口元数据并对主体进行分类

然后您测试该参数。 我将在这里使用 PHP,因为它可以是任何东西。 我们只会在他们不想使用响应式设计时删除视口元标记,并向主体添加一个类。

<head>

   <title>My cool site huzzah</title>

   <?php
     if (!$_GET['resp'] == 'no') { ?>
       <meta name="viewport" content="width=device-width">
   <?php } ?>

</head>

<body class="<?php if (!$_GET['resp'] == 'no') { echo "resp"; } ?>">

您可能希望在这里更复杂一点。 您将需要设置一个 cookie(或使用 localStorage)来记住用户的偏好。 然后您不要只测试查询参数,还要测试该 cookie 的值,然后再决定是否排除视口元数据(以及主体类)。

3. 限定您的媒体查询样式

一种方法是排除加载包含所有响应式样式的单独样式表。 这可能适合您,但我通常喜欢将尽可能多的 CSS 保留在一个文件中。 如果您确实将其保存在一个文件中,您可以使用“resp”主体类来确保媒体查询样式不会在不应该的地方生效。

.page-wrap { width: 80%; }

@media (max-width: 600px) {
  .resp .page-wrap { width: 100%; }
}

这样,响应式样式只有在媒体查询匹配且主体上有适当的类,表明可以使用响应式样式时才会生效。

4. 拥有良好的 UI 来在两者之间切换

无论您想出什么方法,都要确保它能够清楚地表明如何在这两种网站样式之间切换,并且能够正确设置 cookie。