我正在为移动和桌面构建一个应用程序。有些资产我不想在移动设备上显示或加载。使用 Bootstrap 的响应式设计,有一个名为的标签hidden-phone
,用于在手机上隐藏资产。但是,它们似乎仍在后台加载并使用带宽。有没有办法防止这种情况?
2 回答
我在 Bootstrap Responsive Utilities 中遇到了同样的问题。问题是浏览器将首先加载所有 HTML 图像,然后应用 Bootstrap 使用的 CSS 规则,该规则适用于display:none
您告诉它隐藏的特定元素。
一种可能的解决方案是避免使用这些实用程序,而是使用 CSSbackground-image
属性显示图像。然后,您可以选择 Bootstrap 与他们的响应实用程序一起使用的相同屏幕断点,或者自己制作。下面是我过去使用的一个简化示例(一组图像用于移动设备,一组图像用于其他所有内容)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<style>
#image {
background-image: url(largeimage.jpg);
}
@media only screen and (max-width: 480px) {
#image {
background-image: url(mobileimage.jpg);
}
}
</style>
</head>
<body>
<div id="image"></div>
</body>
</html>
您可以在此处找到有关 Bootstrap 断点的更多信息:http: //getbootstrap.com/css/#grid-media-queries
您是否在标题中包含视口标签?
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
如果不是,您可能会渲染到 1024px 宽,这会影响输出。此外,大小取决于屏幕分辨率,而不是使用的设备类型。
如果你想更多地询问浏览器,这需要用JS来完成。我在几个地方这样做,并将类注入到 HTML 元素中,以便以有限的方式与设备/浏览器特定目标一起使用。您可能还想看看 Modernizr。
鉴于下面的评论,并且您的目标是您不希望为移动浏览器加载的 iframe,我建议使用 JavaScript 测试非移动平台,并通过 JS 注入您的 iframe,而不是使用 Bootstrap 来“隐藏”内容。