大家都知道响应式布局的要素有几点:
1.用百分比来定位,好处是不需要用js就可以根据浏览器的缩放拉伸和缩小元素。
2.用em来作为度量单位。由于是相对单位,比像素更灵活一点。虽然在我目前还没发现经过viewport转换后em和px用起来有什么区别 t.t
3.在HTML中为media query准备好<meta name=“viewport” content=“width=device-width; initial-scale=1.0”>
4.对移动设备使用media query,常用的有:
/*pad*/ @media screen and (min- 769px){} /*horizontal iphone5 568x320*/ @media screen and (max- 768px) and (min- 481px){} /*horizontal iphone4 480x320,large android*/ @media screen and (max- 480px) and (min- 380px){} /*=====vertical iphone5 320x568,vertical iphone4 320x480 ,Android=====*/ @media screen and (max- 379px) and (min- 320px){} /*-----small Android-----*/ @media screen and (max- 319px) and (min- 240px){} /*further small*/ @media screen and (max- 239px){}
5.对retina屏幕需要使用2倍尺寸的图片来增加像素密度,用CSS3判断设备为retina
/* ------------- Retina ------------- */ @media only screen and (-o-min-device-pixel-ratio: 2/1), /* Opera */ only screen and (min--moz-device-pixel-ratio: 2), /* Firefox 16 之前 */ only screen and (-webkit-min-device-pixel-ratio: 2), /* Webkit */ only screen and (min-resolution: 240dpi), /* 标准 */ only screen and (min-resolution: 2dppx) /* 标准 */ { .mod .hd h3{ background-image:url(); background-size: 50% 50%; } }
利用background-size属性。使用100% 100%来让图片撑满,50%来缩小一倍。
有2个可选值,第1个值用于指定背景图的width,第2个值用于指定背景图的height,如果只指定1个值得,则第2个值默认为auto。
background-size:cover; 等比扩展图片来填满元素
background-size:contain; 等比缩小图片来适应元素的尺寸
另外提到一个比较神奇的属性: background-position:center;
它有使得背景图片自然的根据元素宽度渐渐显示并保持居中的能力,效果媲美js。
真正的响应式网站必定有pc乃至pad和smartphone两套设计。这样所以缩放的范围并不大,比如980到1920之间为一套。那么真正用到js缩放元素的地方也不多,多数靠css可以完成。
布局的时候往往采用一个100%宽的inline-block属性wrapper,撑满背景。然后固定宽度,比如980的block属性inner来margin:0 auto。
其他需要等比例缩放的地方可借助js完成,见我的另一篇博客 自适应全屏与居中算法
参考文章: