http://www.tuicool.com/articles/iuY7Fr6
http://www.qianduan.net/media-type-and-media-query.html
http://www.poluoluo.com/jzxy/201206/166976.html
響應式
http://www.qianduan.net/responsive-web-design.html
当然依靠屏幕宽度来进行适配是最简单的方法,media query有很多参数可以使用比如orientation、aspect-ratio等,不太了解的可以查看这篇详细的介绍。
其实,media query是响应式网页设计中被用到最多的技术。
很多项目都在使用网格技术(或者叫栅格),前几年960.gs很流行,但是随着屏幕分辨率的普遍提升,它已经不太适合当前需求了,于是最近几年fluid grid开始逐渐多了起来,这种技术其实也很简单,只是将格栅的单位由px变成%,用百分比来控制页面每列的宽度,从而实现宽度的自适应。
使用流体网格的网站能够根据屏幕宽度自动调整页面中每列的宽度,从而保证页面的完整展现和基本功能。这也是一种不错的方法。
flex box是css3中的新技术,它很强大,可以实现很多我们之前无法想象的自适应布局。
有时我们希望网站能够以webapp的外观呈现给手机用户,flexbox是个不二的选择。
一种新的设计流程是,先为移动设备设计界面,然后将PC端作为一个扩展。
这样做的好处是显而易见的,移动终端不会加载多余的资源,也不会因为PC端的样式而重绘页面,同时也不会影响PC端的表现。
页面中的图片有时会比手机/平板的屏幕(viewport)宽,这样会将页面容器撑开,但是移动浏览器又不能scroll,结果图片被切掉一部分,然后还会有一部分内容被隐藏掉,用户看不到。
解决这个问题的方法很简单,将img的最大宽度设置成100%就可以了:
这个方法有些惊艳
我们都知道可以用::before和::after伪元素+content属性来动态显示一些内容或者做其它很酷的事情,而且在CSS 2.1中即被支持。不过content属性在CSS 2.1中只能用于这两个伪元素中,而在CSS3中,任何元素都可以使用content属性了,这个方法就是结合css3 的attr属性和HTML自定义属性的功能:
<img src="image.jpg" data-src-600px="image-600px.jpg" data-src-800px="image-800px.jpg" alt="">
然后用media query来动态赋值: @media (min-device-width:600px) { img[data-src-600px] { content: attr(data-src-600px, url); }}@media (min-device-width:800px) { img[data-src-800px] { content: attr(data-src-800px, url); }}
当然,这种方法也有不足之处,比如PC端宽屏幕需要加载两个图片文件,然后我们也要为此准备多张图片文件等。
pre{ white-space:pre-wrap word-wrap: break-word; word-break: break-all;/*如果要兼容IE,可以加上这句,连续字母断行的问题伤不起啊。。。。*/}
国外在响应式网页设计上已经走的很远了,已经有很多工具和资源供我们参考和使用:
320 and Up
Mobile Boilerplate
Golden Grid System
Gridless
Less Framework
1140 CSS Grid System
Fluid 960 Grid System
SimpleGrid
Skeleton
Respond.js,让IE6-8支持meidia query
Responsive Design Testing 简单而方便的测试网站的响应性的工具,输入网址即可看到网站在不同分辨率下的表现
Resize My Browser 缩放浏览器工具,不过不支持chrome和opera浏览器
Media Query Bookmarklet 顾名思义,这是一个关于media query的书签工具
ProtoFluid 在线查看和调试网站对移动终端兼容性的工具,很赞
ScreenFly 和ProtoFluid类似
responsivepx 更直观的测试网站对不同分辨率的适配性