Ste*_*ven 7 html5 css3 responsive-design
所以我已经深入研究了"响应式设计",并对其运作方式有了一个公平的理解.然而,我需要特别注意两件事.
我的"逻辑"思维方式是这样的:如果屏幕尺寸小于320px,那么做A,如果屏幕尺寸小于480px做B.
@media only screen and (max-width: 320px) { Do one thing here}
@media only screen and (max-width: 480px) { Do another thing here}
Run Code Online (Sandbox Code Playgroud)
这个问题是max-width: 480px
如果屏幕宽度小于320 ,css in 也会受到影响.
当我看一些例子时,我发现他们正在使用类似的东西:
@media only screen and (min-width: 290px) {}
@media only screen and (min-width: 544px) {}
@media only screen and (min-width: 960px) {}
Run Code Online (Sandbox Code Playgroud)
这基本上就是说屏幕大于290px,这样做,如果屏幕大于544px,那就行了.但我会在这里遇到同样的问题.Code in min-width: 290px
也将用于任何大于290px的屏幕尺寸.
因此,我能想到的唯一解决方案仅适用于特定的屏幕范围,使用此方法:
@media only screen and (max-width: 320px) {}
@media only screen and (min-width: 321px),
only screen and (max-width: 480px){}
@media only screen and (min-width: 640px),
only screen and (max-width: 481px){}
Run Code Online (Sandbox Code Playgroud)
任何人都可以就此提出建议吗?
看一些例子,我看到了一堆"冗余"代码.大部分相同的代码都重复了,只是有不同的值:
@media only screen and (max-width : 930px),
only screen and (max-device-width : 930px){
nav li a {
width: 25%;
border-bottom: 1px solid #fff;
font: 400 11px/1.4 'Cutive', Helvetica, Verdana, Arial, sans-serif;
}
nav li:last-child a, nav li:nth-child(4) a { border-right: none; }
nav li:nth-child(5) a { border-bottom: none; }
}
@media only screen and (max-width : 580px),
only screen and (max-device-width : 580px){
nav li a {
width: 50%;
font: 400 12px/1.4 'Cutive', Helvetica, Verdana, Arial, sans-serif;
padding-top: 12px;
padding-bottom: 12px;
}
nav li:nth-child(even) a { border-right: none; }
nav li:nth-child(5) a { border-bottom: 1px solid #fff; }
}
Run Code Online (Sandbox Code Playgroud)
对于大型网站,我可以想象这将创建大量代码和大型CSS文件.
这是否成为新标准,因为我们必须使用响应式设计?
是否可以选择遵循?:
@media only screen and (min-width: 640px) { @import url("css/640.css");}
Run Code Online (Sandbox Code Playgroud)
首先,您编写/引用的代码略多于必要的代码.
例如:
@media only screen and (min-width: 321px),
only screen and (max-width: 480px) {
Run Code Online (Sandbox Code Playgroud)
也可以写成:
@media only screen and (min-width: 321px) and (max-width: 480px) {
Run Code Online (Sandbox Code Playgroud)
您永远不应该在媒体查询中重复CSS,任何为任何屏幕大小设置的内容,例如背景颜色或字体系列都应该在任何媒体查询之外设置.这意味着它只写了一次并适用于它们.每个媒体查询内部应该只是仅影响特定大小的代码.(例如宽度,字体大小等)
我不建议导入css文件之类的东西,只需将它们全部放在一起,顶部是全局样式,然后是媒体查询中的屏幕尺寸特定样式.不要被大型css文件拖延,下载一个10kb文件比10个1kb文件更容易/更快.
我做了一个例子.css文件给你看这里.请注意,这将创建一个可怕的网站,它只是为了向您展示如何布局代码以及在哪里进行.
上面的示例假定浏览器支持媒体查询.没有它,该网站将沦为它的屁股.如果您不是100%确定媒体查询支持(并且没有使用Respond.JS),我建议将桌面网站放在全局样式中,然后重写为不必要的,以确保不支持的浏览器的后备