当前位置: 首页 > 面试题库 >

如何使用JavaScript检测Twitter Bootstrap 3的响应断点?

平光明
2023-03-14
问题内容

目前,TwitterBootstrap 3具有以下响应断点:768px,992px和1200px,分别代表小型,中型和大型设备。

如何使用JavaScript检测这些断点?

我想用JavaScript监听屏幕变化时触发的所有相关事件。并能够检测屏幕是用于小型,中型还是大型设备。

已经做过什么了吗?您有什么建议?


问题答案:

编辑:现在可以通过Bower和NPM使用此库。 有关详细信息,请参见github repo。

您可以使用最新版本(Responsive Bootstrap Toolkit 2.5.0)执行以下操作:

// Wrap everything in an IIFE
(function($, viewport){

    // Executes only in XS breakpoint
    if( viewport.is('xs') ) {
        // ...
    }

    // Executes in SM, MD and LG breakpoints
    if( viewport.is('>=sm') ) {
        // ...
    }

    // Executes in XS and SM breakpoints
    if( viewport.is('<md') ) {
        // ...
    }

    // Execute only after document has fully loaded
    $(document).ready(function() {
        if( viewport.is('xs') ) {
            // ...
        }
    });

    // Execute code each time window size changes
    $(window).resize(
        viewport.changed(function() {
            if( viewport.is('xs') ) {
                // ...
            }
        })
    );

})(jQuery, ResponsiveBootstrapToolkit);

从2.3.0版开始,您不需要<div>下面提到的四个元素。

原始答案:

我认为您不需要任何庞大的脚本或库。这是一个相当简单的任务。

在下面插入以下元素</body>

<div class="device-xs visible-xs"></div>
<div class="device-sm visible-sm"></div>
<div class="device-md visible-md"></div>
<div class="device-lg visible-lg"></div>

这4个div允许您检查当前活动的断点。为了方便地进行JS检测,请使用以下功能:

function isBreakpoint( alias ) {
    return $('.device-' + alias).is(':visible');
}

现在,仅在最小的断点上执行特定操作即可:

if( isBreakpoint('xs') ) {
    $('.someClass').css('property', 'value');
}

在DOM准备就绪后检测更改也非常简单。您需要的是一个像这样的轻量级窗口调整大小侦听器:

var waitForFinalEvent = function () {
      var b = {};
      return function (c, d, a) {
        a || (a = "I am a banana!");
        b[a] && clearTimeout(b[a]);
        b[a] = setTimeout(c, d)
      }
    }();

var fullDateString = new Date();

一旦配备了它,就可以开始侦听更改并执行特定于断点的功能,如下所示:

$(window).resize(function () {
    waitForFinalEvent(function(){

        if( isBreakpoint('xs') ) {
            $('.someClass').css('property', 'value');
        }

    }, 300, fullDateString.getTime())
});


 类似资料:
  • 问题内容: 我的控制器中有以下代码: 在我的RSpec控制器测试中,我想验证某个场景确实收到了成功的json响应,因此我有以下内容: 尽管在运行测试时出现以下错误: 我是否检查响应不正确? 问题答案: 您可以检查响应对象并验证它是否包含期望值: 编辑 将此更改为a 会比较麻烦。这是一种处理方法: 请注意,它不会响应,因此需要一个或真实的模型实例。

  • 问题内容: 我有一个AJAX请求,期望以JSON作为响应。 但是有可能返回的内容可能不是JSON,而是HTML错误页面(不幸的是,响应类型为200)。 如何确定响应是否为JSON? (如果有帮助,我正在使用jQuery。但是我不能使用任何插件。) 问题答案: 好吧,如果您使用的是jQuery并指定了对调用的属性,那么jQuery将尝试解析JSON,如果不是,则JSON应该调用回调。 编辑 对于不使

  • 问题内容: 如何使用Javascript 检测+ ,+ ? 我需要限制粘贴到我的文本区域中,最终用户不应复制和粘贴内容,用户只能在文本区域中键入文本。 如何实现呢? 问题答案: 我只是出于兴趣而这样做。我同意这是不正确的事情,但我认为它应该是OP的决定......另外,代码可以很容易地扩展到增加功能,而不是把它拿走(如更先进的剪贴板,或+ 触发服务器-端保存)。 还要澄清一下,该脚本需要jQuer

  • 下面是我的控制器代码: 上面的代码给了我一个例外:

  • 问题内容: 有没有一种方法可以适用于所有浏览器? 问题答案: 原始答案 是。 更新 要获得移动设备的原始分辨率,您必须乘以设备像素比率:和。比率也为1的台式机也可以使用。 从本(Ben)得到另一个答案: 在原始JavaScript中,这将为您提供可用的宽度/高度: 对于绝对宽度/高度,请使用:

  • 问题内容: 如何检测用户是否没有使用JavaScript或PHP使用任何浏览器Chrome,Firefox或Internet Explorer? 问题答案: 我发现在JS中执行此操作的最佳方法是在Quirksmode上。我为PHP制作了一个应与常见浏览器一起使用的PHP: