我正在尝试创建一个响应式图像墙 - 仅限 CSS。每个图像都是 float:left li 的背景 (background-size:cover)。
这里的例子:http ://www.tourdumonde.fr/dev/tiles.php
我的目标是能够根据屏幕宽度调整 li 宽度。
我希望能够显示:
如果在任何智能手机上(纵向和横向):每行 2 li(浮动:左;宽度:50%;最小高度:300 像素;)
ELSE(任何其他设备):
- 如果屏幕宽度 < 481px,每行 2 li
- 如果屏幕宽度 < 600 像素,则每行 3 li
- 如果屏幕宽度 < 767px,每行 4 li
- 如果屏幕宽度 < 1100 像素,则每行 5 li
这是我的媒体查询:
ul, ul li { margin:0; padding:0; list-style-type:none; }
ul { width:100%; }
li { float:left; overflow:hidden; background-size:100% auto; border:none;}
/* LAPTOP / DESKTOP RULES */
@media (max-width: 480px) {
li { width:100%; min-height:300px;}
}
@media (min-width: 481px) {
li { width:50%; min-height:175px;}
}
@media (min-width: 600px) {
li { width:33%; min-height:150px;}
}
@media (min-width: 767px) {
li { width:25%; min-height:150px;}
}
@media (min-width: 1100px) {
li { width:20%;min-height:150px; }
}
/* SMARTPHONES RULE */
@media (orientation: portrait) and (max-device-width: 360px), (orientation: landscape) and (max-device-width: 640px) {
li { width:50%; min-height:310px;}
}
目前,我在笔记本电脑(IE、Firefox、Chrome)上尝试并测试了它,通过调整大小来测试它的调整方式:似乎工作得很好。
我还在我的三星 Galaxy S3 (Chrome) 上进行了测试,我确实得到了我的 2-per-row lis。
但我觉得我的媒体查询的逻辑可以改进(这是我第一次使用它们,所以我很确定它们很笨拙)。
=> 我怎样才能使这些媒体查询更有效率?你看到那里有什么缺点吗?智能手机的规则是否足够通用?
(现在,我注意到一个“错误”:在智能手机(SGS3)上时:如果我以横向模式加载页面,我会得到每行 2 个 li。但如果我改变方向,它会自动调整为每行 4 个。我有刷新以使其再次每行 2 个)