我最初在这里发布了答案, Bootstrap v.4.x的解决方案。
Twitter Bootstrap 4.1.x 的 JS 断点检测
Bootstrap v.4.0.0(以及最新版本的Bootstrap 4.1.x)引入了更新的网格选项,因此旧的检测概念可能无法直接应用(参见迁移说明):
- 在下方添加了一个新的
sm
网格层768px
以进行更精细的控制。我们现在有xs
, sm
, md
, lg
, 和xl
;
xs
网格类已修改为不需要中缀。
我编写了尊重更新的网格类名称和新的网格层的小型实用程序函数:
/**
* Detect the current active responsive breakpoint in Bootstrap
* @returns {string}
* @author farside {@link https://stackoverflow.com/users/4354249/farside}
*/
function getResponsiveBreakpoint() {
var envs = {xs:"d-none", sm:"d-sm-none", md:"d-md-none", lg:"d-lg-none", xl:"d-xl-none"};
var env = "";
var $el = $("<div>");
$el.appendTo($("body"));
for (var i = Object.keys(envs).length - 1; i >= 0; i--) {
env = Object.keys(envs)[i];
$el.addClass(envs[env]);
if ($el.is(":hidden")) {
break; // env detected
}
}
$el.remove();
return env;
};
Bootstrap v4-beta 的 JS 断点检测
最新的Bootstrap v4-alpha和Bootstrap v4-beta在网格断点上有不同的方法,所以这里是实现相同的传统方法:
/**
* Detect and return the current active responsive breakpoint in Bootstrap
* @returns {string}
* @author farside {@link https://stackoverflow.com/users/4354249/farside}
*/
function getResponsiveBreakpoint() {
var envs = ["xs", "sm", "md", "lg"];
var env = "";
var $el = $("<div>");
$el.appendTo($("body"));
for (var i = envs.length - 1; i >= 0; i--) {
env = envs[i];
$el.addClass("d-" + env + "-none");;
if ($el.is(":hidden")) {
break; // env detected
}
}
$el.remove();
return env;
}
我认为它会很有用,因为它很容易集成到任何项目中。它使用 Bootstrap 本身的原生响应式显示类。