【问题标题】:How to show desktop version on mobile screens, in Bootstrap 3?如何在 Bootstrap 3 中在移动屏幕上显示桌面版本?
【发布时间】:2014-07-01 23:03:19
【问题描述】:

如何在 Bootstrap 3 的移动屏幕上显示桌面版本? 我不需要链接来切换桌面/移动版本。我只想在移动屏幕上显示桌面版本。

明确地说,我希望网站在平板电脑上响应,但在 @media screen max-width: 360px 上显示桌面版本。我知道这很奇怪,但我的客户想要这样,我不知道为什么!

谢谢!

【问题讨论】:

  • 什么意思?什么链接?您是否看过使用Bootstrap 构建的网站示例?
  • 哦,是的。我想在平板电脑上做出响应。仅在移动屏幕上“@media screen max-width: 360px”来显示桌面版本。
  • 怎么样?它没有足够的空间。
  • 显示您想要的布局示例。
  • 是的,它没有足够的空间,用户必须左右移动屏幕才能显示完整的站点。我知道这很奇怪,但我的客户想要这样:)

标签: twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

如果你想这样做,你将不得不根据屏幕的宽度动态地改变你的视口标签。

viewport 元标记通过强制浏览器使用device-width 作为视口的宽度,使响应式设计在移动设备上成为可能。通过取消此限制,大多数移动设备将在其宽度上撒谎以获取完整的站点。使用 javascript,您可以根据页面宽度动态更改它

首先在您的 HTML head 元素中包含标记:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

然后我们将监听 resize 事件并根据您的业务规则更改视口:

$(window).resize(function() {
    var mobileWidth =  (window.innerWidth > 0) ? 
                        window.innerWidth : 
                        screen.width;
    var viewport = (mobileWidth > 360) ?
                    'width=device-width, initial-scale=1.0' :
                    'width=1200';
    $("meta[name=viewport]").attr('content', viewport);
}).resize();      

Here's a working Demo in Fiddle

注意:桌面浏览器会忽略视口标签,因此这不会对您的开发机器产生任何影响。为了测试这些更改,您可以打开 chrome 调试器工具并模拟移动设备。

这是截图:


话虽如此,我会与您的用户合作,建议不要这样做
这是我刚刚在Adding a Desktop Mobile Toggle Button 上发表的一篇快速文章

阻止最终用户做他们想做的事情通常不是一个好主意。您的首要目标应该是开发一个在小型设备上运行良好的网站。如果用户真的想看到缩小的视图,那么您可以在页面底部为他们提供一个切换开关。

【讨论】:

  • 谢谢,它有点工作,但有一个错误。首先是移动版,然后是桌面版,然后是移动版,等等。网站在移动版和桌面版之间切换。
  • @RahmanSharif,获取更新的代码。我也注意到了这个问题。 jQuery 使用视口宽度作为站点宽度,因此它会不断地来回切换。 window.innerWidth 抓取实际宽度,所以应该不错。
【解决方案2】:

是的,您显然可以编程 lgsmxs 以一种方式运行,而只有 md 以另一种方式运行。

所以你会得到类似的东西:

<div class="col-lg-12 col-md-6 col-sm-12 col-lx-12">...<div>

也不要忘记viewport meta tag。这对在小型设备上进行渲染会有所帮助。

<meta name="viewport" content="width=device-width, initial-scale=1.0">

或根据您的需要进行修改。

【讨论】:

    【解决方案3】:

    所以页面的实际宽度由.container 定义。所以,我从来没有尝试过这个,但我认为你应该做的而不是 JavaScript 修改:

    @media (max-width: 360px) {
      .container {
        width: 1170px;
      }
    }
    

    应该是 1170px 来匹配 col-lg 或 970px 来匹配 col-md。确保上述内容低于您的引导程序包含,以便它覆盖,这应该可以工作。

    然后,使您的 (col-md 或 col-lg) 和 col-xs 具有相同的列宽值,但与平板电脑的 col-sm 不同,并且应该排列整齐,例如

    <div class='col-md-6 col-xs-6 col-sm-12'>full-width tablet, half others</div>
    <div class='col-md-3 col-xs-3 col-sm-6'>half-width tablet, 1/4 others</div>
    <div class='col-md-3 col-xs-3 col-sm-6'>half-width tablet, 1/4 others</div>
    

    【讨论】:

    • 好主意,但不幸的是这行不通。 Bootstrap 的所有响应性都建立在针对页面/视口大小执行媒体查询的基础上,而不是 .container 元素。您的修复将保留网站的移动版本,但只是使其大部分内容不适合屏幕。这是example that includes your solution。请注意当您缩小浏览器窗口的宽度时会发生什么。
    • @KyleMit,当我缩小浏览器时,我看到的是我期望看到的……需要滚动桌面版本。我想我不明白他希望手机“成为”1200px 宽并缩小。所以,从这个角度来看,JS 解决方案是有意义的。
    • 凯文,这是screenshot comparison of the two。在您的容器中,较大的容器实际上并没有将视图更改为桌面的显示方式。它只是使一个更大的小视图。当您重新调整视口时,页面实际上会变得更大,并且您会获得完整的桌面元素,例如 visible-lg 类。
    • @KyleMit,再说一次,我没有看到任何我意想不到的东西。正如我试图用我的 HTML 来说明的那样,如果你按照我建议的方式进行操作,则必须将 col-xs-* 和 visible-xs 放在你有 col-lg-* 和 visible-lg 的任何地方,以便它们看起来一样。就你的观点而言(因为我承认了),我的方式可能需要为菜单系统等编写额外的媒体查询,这将比 JavaScript 视口调整方便得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2018-11-15
    相关资源
    最近更新 更多