大佬教程收集整理的这篇文章主要介绍了响应式栅格系统,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
响应式栅格系统可以看作流式栅格系统和媒体查询的组合,设计响应式栅格系统时,关键在于需要相应哪些设备,根据需要兼容的设备特性设置一些宽度断点,基于这些断点来构建代码
说到流式栅格系统有必要所以下一个经典的自适应布局——“圣杯布局”(又称“双飞翼布局”),先贴代码
HTML部分:
<div id="page"> <div id="hd"> <p>Header</p> </div> <div id="bd"> <div class="main"> <div class="main-wrap"> <p>Main</p> </div> </div> <div class="sub"> <p>Sub</p> </div> <div class="extro"> <p>Extro</p> </div> </div> <div id="ft"> <p>Footer</p> </div> </div>对于上面的文档结构,要实现的效果是sub和extro区域固定宽度,main区域出现在中间并且随着窗口尺寸自动变化。圣杯布局的基本思路是让三个盒子都向左浮动,同时将sub盒向左“移动”距离(margin-left:-100%),这样sub盒就会重叠在main盒上面并紧贴父元素左边缘,extro盒也做同样的处理,不过只向左“移动”230px,这样就让extro紧贴父元素右边缘,main-wrap盒再设以合适的左右边距,就可以实现如结果所示的效果
CSS部分:
*{ padding: 0; margin: 0; } #page{ width: 80%; margin: 0 auto; } #hd,#bd,#ft{ width: 100%; BACkground-color: blue; } .main{ float: left; width: 100%; BACkground-color: yellow; } .main-wrap{ margin: 0 230px 0 190px; BACkground-color: red; } .sub{ float: left; width: 190px; margin-left: -100%; BACkground-color: green; } .extro{ float: left; width: 230px; margin-left: -230px; BACkground-color: gray; }程序结果:
从上面的例子可以看出,利用浮动可以很方便的实现栅格系统,进而实现多列布局,比如一个960像素宽的4列栅格系统:
.row{ margin: 0 auto; width: 960px; } .row:after{ clear: left; content: " "; display: table; } [class^="col"]{ float: left; } .col1{ width: 25%; BACkground-color: yellow; } .col2{ width: 50%; BACkground-color: blue; } .col3{ width: 75%; BACkground-color: green; }
流式栅格系统实现起来非常简单,使用也非常简单:
<div class="row"> <div class="col1">.col1</div> <div class="col2">.col2</div> <div class="col1">.col1</div> </div>最终效果如下所示:
从原理上讲,media queries并不是新东西,在CSS2.1版本就有@media规则了,不过那时@media属性只是用来区分媒体的类型,它支持下面这些类型的媒体
braille:盲文
embossed:浮雕排版
handled:手持设备
print:普通打印机
projection:投影仪
screen:屏幕
speech:语音合成器(非视觉)
tty:电话
tv:电视机
all:适用于所有情况
可以看到CSS2.1支持非常多的媒体类型,比如针对打印机我们可能需要在footer加上一行版权信息:
@media print{ .footer:after{ content:"版权所有,翻版必究"; } }这样只有在打印的时候才会出现这些字
CSS3的media queries模块扩展了@media的应用范围,使其不仅能识别媒体类型,也能识别媒体特征——比如屏幕宽度,设备像素比甚至色彩等参数
@H_401_4@media queries语法很简单,@media关键字后面跟一个媒体类型,然后再跟一个或多个媒体识别条件表达式,每个条件用and连接,如果设备满足条件,就执行其中的CSS代码。比如识别iphone4的一段代码可能是这样的:
@media all and (max-width:320pX) and (-webkit-min-device-pixel-ratio:2){ /*在这里编写针对iphone4的代码*/ }除了直接写入CSS代码这种方式意外,media queries还可以直接写到link元素的media属性中,这样做的好处是可以按需加载CSS文件:
<link rel="stylesheet" href="#" media="screen and (min-width:1024pX)" />此外还可以使用Not关键字对查询结果取反:
@media not screen and (color){ /*非显示器并且是彩色的,比如彩电*/ }only关键字本身没有什么特别的意义,但是在不支持only的浏览器中,可以用来隐藏样式表
<link rel="stylesheet" href="#" media="only screen and (color)" />除了用and来连接表达式,表达式之间还可以用逗号来分割,这时候其语义等价于or
@media (min-width:700pX),handled and (orientation:landscapE){……}
从上面这些例子可以看出,许多media特征都会有“MIn-”和“max-”前缀,下面是一些常见的可供查询的media的特性
color:设备彩色,如果想进一步查询彩色深度,可以通过min-color来指定,比如min-color:4
color-index:使用索引色的设备,可以通过min-color-index来指定查询索引色的色数
device-index:设备宽度,有max和min版本,如果使用px做单位,指的是设备的物理像素,这和viewport中的device-width含义是不一样的
device-height:设备高度
width:布局视口宽度,同样有max和min版本
height:类似width
resolution:解析度,有max和min版本。单位是DPI或者DPPX。DPI和DPPx是类似的单位,大部分情况下两者是等价的。在基于webkit的浏览器上,可以使用非标准的-webkit-min-device-pixel-ratio来实现同样的查询,而且使用方便——1表示普通解析度的屏幕,2表示re@R_197_11520@a屏幕。当使用DPPX单位时,和device-pixel-ratia是等价的
orientation:屏幕方向,有landscape(横屏)和porTrait(竖屏)两种选择
除了上面介绍的这些常用的媒体特性之外,CSS3 media queries还提供了很多其他特性:针对电视机的扫描方式(scan)、monochrome(单色)屏幕、grid(位图)设备和aspect ratia(屏幕宽高比)等,配合使用几乎能定位出任意两种不同设备的特征。
相对于流式栅格系统,响应式栅格系统只是多了一些媒体查询的内容,基本原理是没有变化的,直接上代码
HTML部分:
<!DOCTYPE HTML> <html> <head> <title></title> <Meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <Meta name="viewport" content="width=device-width,initial-scale=1.0">//非常关键的一步 <link rel="stylesheet" href="css/demo.css" type="text/css" /> </head> <body> <header class="row" style="BACkground-color:blue;"> header </header> <div class="row"> <div class="col1" style="BACkground-color:red;">nav</div> <div class="col2" style="BACkground-color:gray;">main</div> <div class="col1" style="BACkground-color:yellow;">aside</div> </div> <footer class="row" style="BACkground-color:green;"> footer </footer> </body> </html>
*{ margin: 0 auto; } /*普通屏幕使用960px的宽度*/ .row{ width: 960px; } .row:after{ clear: left; content: " "; display: table;/*清除行中浮动*/ } [class^="col"]{ float: left; } .col1{ width: 25% } .col2{ width: 50%; } .col3{ width: 75%; } /*屏幕设备宽度大于1200px时row宽度固定为1170px*/ @media screen and (min-width: 1200pX){ .row{ width: 1170px } } /*对于平板电脑每行宽度为720px*/ @media screen and (min-width: 768pX) and (max-width: 979pX){ .row{ width: 720px; } } /*横屏的手机或者竖屏的平板将所有列按行排列*/ @media screen and (max-width: 767pX){ [class^="col"]{ float: none; width: 100%; } .row{ width: 100%; } } /*竖屏的手机*/ @media screen and (max-width: 480pX){ }
这样在不同宽度的视口下得到的结果就不一样了
下面通过一个实例来详细讲解media queries实现响应式设计的具体内容
使用CSS3 Media Queries实现网页自适应:http://xinyo.org/archives/62104/#top
以上是大佬教程为你收集整理的响应式栅格系统全部内容,希望文章能够帮你解决响应式栅格系统所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。