高分辨率设备显示超小 bootstrap 布局
high resolution devices display extra small bootstrap layout
根据 browserstack,这些是三星 Galaxy S7 的规格:
Screen Size 5.1 in - 2.5 x 4.4 in
Resolution 1440 x 2560 px
Viewport 360 x 640 dp
在此设备上,我的页面显示在超小 bootstrap 布局或默认布局中,因为(我认为)该设备报告 360 像素的视口。
但由于高分辨率,我宁愿将平板电脑布局加载为 1440 / 1.5 -> 960
.
我的印象是 bootstrap 默认执行此操作。
我的实现有问题还是这是默认行为?
如果是默认值:
如何更改高分辨率设备的布局以在平板电脑中呈现,而不是使用 bootstrap 的超小屏幕布局?
(但当然要为真正的小设备(也就是旧手机)保留额外的小布局)
您回答了自己的问题,有效viewport size for Galaxy S7 is 360x640
. Thus, it falls within the xs
breakpoint of 768px
or less。
您可以使用的最简单的选择是 create a custom grid 通过官方生成器。
您有两种定位高 dpi 设备的方法:1) 使用 CSS,以及 2) 使用 JS。
1) 与 CSS
您应该添加一个媒体查询,根据您的需要更改 Bootstrap 的 类 的默认行为。因此,如果您的布局应该有 2 列(.col-sm-6 比 768px 高 50%),即使浏览器说您的高 dpi 设备应该呈现为一列(.col-sm-6 有 100 % 宽度低于 768px),你可以这样做:
@media only screen and (-webkit-min-device-pixel-ratio: 1.3),
only screen and (-o-min-device-pixel-ratio: 13/10),
only screen and (min-resolution: 120dpi)
{
.col-sm-6 {
float: left;
width: 50%;
}
}
您可以阅读有关此方法的更多信息in this Gist。
2)与JavaScript(个人选择)
您不必触摸任何 CSS,因此您很可能不会出现意外行为。在页面加载时,只需将视口 initial-scale 更改为设备的像素比。
假设你已经有了这个:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
你的脚本将是这样的:
document.addEventListener('load', function() {
var scale = 1 / (window.devicePixelRatio || 1);
var content = 'width=device-width, initial-scale=' + scale;
document.querySelector('meta[name="viewport"]').setAttribute('content', content)
}, false)
其中有this approach的精髓。
根据 browserstack,这些是三星 Galaxy S7 的规格:
Screen Size 5.1 in - 2.5 x 4.4 in
Resolution 1440 x 2560 px
Viewport 360 x 640 dp
在此设备上,我的页面显示在超小 bootstrap 布局或默认布局中,因为(我认为)该设备报告 360 像素的视口。
但由于高分辨率,我宁愿将平板电脑布局加载为 1440 / 1.5 -> 960
.
我的印象是 bootstrap 默认执行此操作。 我的实现有问题还是这是默认行为? 如果是默认值: 如何更改高分辨率设备的布局以在平板电脑中呈现,而不是使用 bootstrap 的超小屏幕布局? (但当然要为真正的小设备(也就是旧手机)保留额外的小布局)
您回答了自己的问题,有效viewport size for Galaxy S7 is 360x640
. Thus, it falls within the xs
breakpoint of 768px
or less。
您可以使用的最简单的选择是 create a custom grid 通过官方生成器。
您有两种定位高 dpi 设备的方法:1) 使用 CSS,以及 2) 使用 JS。
1) 与 CSS
您应该添加一个媒体查询,根据您的需要更改 Bootstrap 的 类 的默认行为。因此,如果您的布局应该有 2 列(.col-sm-6 比 768px 高 50%),即使浏览器说您的高 dpi 设备应该呈现为一列(.col-sm-6 有 100 % 宽度低于 768px),你可以这样做:
@media only screen and (-webkit-min-device-pixel-ratio: 1.3),
only screen and (-o-min-device-pixel-ratio: 13/10),
only screen and (min-resolution: 120dpi)
{
.col-sm-6 {
float: left;
width: 50%;
}
}
您可以阅读有关此方法的更多信息in this Gist。
2)与JavaScript(个人选择)
您不必触摸任何 CSS,因此您很可能不会出现意外行为。在页面加载时,只需将视口 initial-scale 更改为设备的像素比。
假设你已经有了这个:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
你的脚本将是这样的:
document.addEventListener('load', function() {
var scale = 1 / (window.devicePixelRatio || 1);
var content = 'width=device-width, initial-scale=' + scale;
document.querySelector('meta[name="viewport"]').setAttribute('content', content)
}, false)
其中有this approach的精髓。