Responsive design 我怎样才能更好地进行媒体查询?

Responsive design 我怎样才能更好地进行媒体查询?,responsive-design,media-queries,Responsive Design,Media Queries,我正在尝试创建一个响应图像墙-CSS只。每个图像都是float:left li的背景(背景大小:cover) 示例如下: 我的目标是能够根据屏幕宽度调整li宽度 我希望能够显示: 如果在任何智能手机上(纵向和横向):每行2 li(浮动:左侧;宽度:50%;最小高度:300px;) 其他(任何其他设备): 如果屏幕宽度小于481px,则每行2 li 如果屏幕宽度

我正在尝试创建一个响应图像墙-CSS只。每个图像都是float:left li的背景(背景大小:cover)

示例如下:

我的目标是能够根据屏幕宽度调整li宽度

我希望能够显示:

如果在任何智能手机上(纵向和横向):每行2 li(浮动:左侧;宽度:50%;最小高度:300px;)

其他(任何其他设备):

  • 如果屏幕宽度小于481px,则每行2 li
  • 如果屏幕宽度<600px,每行3 li
  • 如果屏幕宽度小于767px,则每行4 li
  • 如果屏幕宽度<1100px,每行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;}
}
现在,我试着在笔记本电脑(比如Firefox、Chrome)上测试它,通过调整大小来测试它是如何调整的:看起来很正常

我还测试了我的三星Galaxy S3(Chrome),我的每行2个lis

但我觉得我的媒体查询逻辑可以改进(这是我第一次使用它们,所以我很确定它们很笨拙)

=>如何使这些媒体查询更高效?你觉得有什么缺点吗?智能手机的规则是否足够通用?


(目前,我注意到一个“错误”:在智能手机上(SGS3):如果我以横向模式加载页面,我会得到每行2个li。但是如果我改变方向,它会自动调整为每行4个。我必须刷新以使其再次达到每行2个)

我相信实现这一点的最佳方法(以及我一直以来的做法)是使用。下面是一个例子:

ul { line-height: 0; width:100%; margin:0 auto;
   -webkit-column-count: 5;
   -webkit-column-gap:   0px;
   -moz-column-count:    5;
   -moz-column-gap:      0px;
   column-count:         5;
   column-gap:           0px;
}

li img { width:100% !important; height:auto !important; }

@media (max-width: 767px) { ul {   -moz-column-count:4; -webkit-column-count:4; column-count:4; } }
@media (max-width: 600px) { ul {   -moz-column-count:3; -webkit-column-count:3; column-count:3; } }
@media (max-width: 481px) { ul {   -moz-column-count:2; -webkit-column-count:2; column-count:2; } }
编辑:在横向模式下,列处于关闭状态的原因可能是您忘记包含视口元


编辑:可以通过应用此代码而不是regulair body标记来修复此错误

<body onload="resize()" onresize="resize()">

我相信实现这一目标的最佳方法(以及我一直以来的做法)是使用。下面是一个例子:

ul { line-height: 0; width:100%; margin:0 auto;
   -webkit-column-count: 5;
   -webkit-column-gap:   0px;
   -moz-column-count:    5;
   -moz-column-gap:      0px;
   column-count:         5;
   column-gap:           0px;
}

li img { width:100% !important; height:auto !important; }

@media (max-width: 767px) { ul {   -moz-column-count:4; -webkit-column-count:4; column-count:4; } }
@media (max-width: 600px) { ul {   -moz-column-count:3; -webkit-column-count:3; column-count:3; } }
@media (max-width: 481px) { ul {   -moz-column-count:2; -webkit-column-count:2; column-count:2; } }
编辑:在横向模式下,列处于关闭状态的原因可能是您忘记包含视口元


编辑:可以通过应用此代码而不是regulair body标记来修复此错误

<body onload="resize()" onresize="resize()">


您好,感谢您的贡献。为了让我进一步理解,为什么您认为这种方法比使用浮动lis更好?关于我的媒体查询,你有没有看到我可以把它们“链”成更好的方法?用列计数,列表项自动地以百分比填充空白间隔。不需要计算。(在你的方法中,你需要重新计算每一个媒体查询的百分比。我只是设置了一个新的列计数。)同样,正如你在你的例子中看到的,当我调整屏幕并到达三列时,中间行中的图像被切断。如果你希望保持一个带有隐藏溢出的静态块,这是可以的。但如果您希望最完整地显示其中的每幅图像,则不需要这样做。你的方法很好,因为它完成了任务。我的方法只是另一种选择,它总是保持我的图像比例。也;我想我已经找到了解决你的错误的方法。查看我答案中的第二个编辑。嘿,杰斐逊,稍有延迟,谢谢你的解释,它非常清晰,对我帮助很大。嗨,谢谢你的贡献。为了让我进一步理解,为什么您认为这种方法比使用浮动lis更好?关于我的媒体查询,你有没有看到我可以把它们“链”成更好的方法?用列计数,列表项自动地以百分比填充空白间隔。不需要计算。(在你的方法中,你需要重新计算每一个媒体查询的百分比。我只是设置了一个新的列计数。)同样,正如你在你的例子中看到的,当我调整屏幕并到达三列时,中间行中的图像被切断。如果你希望保持一个带有隐藏溢出的静态块,这是可以的。但如果您希望最完整地显示其中的每幅图像,则不需要这样做。你的方法很好,因为它完成了任务。我的方法只是另一种选择,它总是保持我的图像比例。也;我想我已经找到了解决你的错误的方法。检查我答案中的第二个编辑。嘿,杰斐逊,稍微延迟一下,谢谢你的解释,它非常清晰,对我帮助很大。