[英]conditionally display content based on Media Query
我有一个网站,在桌面版本中,侧边栏显示包含10到20个小图像。 到目前为止,在移动设备上,这个侧边栏只是隐藏了display: none
,这是性能最低的解决方案,因为无论如何都会加载所有图像。
我现在想知道在移动设备上完全禁用侧边栏的最佳方法是什么(不使用单独的AJAX请求)。
我能想到的最佳解决方案如下:
Modernizr.mq
左右) innerHTML
, jQuery.append
, jQuery.prepend
或类似 我知道RWD性能有时可能是一个非常复杂的主题,而且性能最高的解决方案通常并不明显。 那么有谁能想到比上面提到的解决方案更好的解决方案?
如果您不希望图像在移动设备上加载,而不是将图像放置为<img>
标签,您可以将div设置为所需的宽度和高度,并将图像作为背景图像。 在你的css中,默认隐藏侧边栏。 然后,无论您认为哪个宽度超出移动范围,都可以使用媒体查询来显示侧边栏并在div中加载背景图像。
#sidebar {
display: none;
}
#sidebar div#sidebar-img-1 {
width: 100px;
height: 100px;
}
/* ... */
@media only screen and (min-width: 480px) {
/* display sidebar */
#sidebar {
display: block;
}
/* set background image for sidebar items */
#sidebar div#sidebar-img-1 {
background-image: url("sidebar1.jpg");
}
/* ... */
}
缺点是通过在样式表中放置内容,您可以交换语义性能。
我正在做一些关于如何做到这一点的研究,并由灯丝组进行了讨论: https : //github.com/filamentgroup/Ajax-Include-Pattern/
似乎很容易设置。 它的工作原理类似于数据属性中设置的媒体查询。
因此,您不希望在移动设备上显示的侧边栏看起来像这样:
<aside href="..." data-append="articles/latest/fragment" data-media="(min-width: 40em)">Possible Mobile Content</aside>
因此,您的侧边栏只会出现在至少40帧(~640px)宽的屏幕上。 当然你也需要javascript文件并启动它,但这些看起来也很简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.