多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 响应模式 (Responsive Patterns) 有意或者无意之间,我们的网页总会归于某种”响应模式“( Responsive Patterns ),这里来介绍一下几种常见的模式,相信是非常有启发性的。 基本思路就是这样,在手机上,网站内容是单列布局的,到了桌面电脑上面就变成了多列结构。所谓”模式“,就是在临界点发生的时候,网站布局该做出怎样的变化。比较常见的模式有四种,当然有时候也可以在一个页面上混合两种模式来使用。接下来我们看看几种常用模式。 ## Column Drop ![](https://box.kancloud.cn/39d66d7c7cb95ce959b7be629a8a703d_875x461.png) 我们这个翻译叫做"列下沉",在最窄的屏幕上,所有元素就垂直一个跟一个排成一列。 屏幕变宽时,到达第一个临界点后,第一个和第二个元素就变成左右两列排布了。后面屏幕继续变宽,第三个元素又”下沉“(反向的)到了这一行中。 这是最简单最常见的一种模式。 案例:[Column Drop1](http://codepen.io/kinghs/pen/GNdROZ?editors=1100) 实际中的一些网站赏析: * [http://modernizr.com/](http://modernizr.com/) * [http://weenudge.com/](http://weenudge.com/) ## Mostly Fluid ![](https://box.kancloud.cn/2465c8068dc991fa121f42f27b764cbe_1004x528.png) 这种模式我翻译为“基本流体”,这种方式其实跟 Column Drop 差不多,只是稍微灵活了一点。跟前面的 Column Drop 一样,当屏幕最窄的时候,元素一个跟一个排成一列。当布局开始变宽,会出现网格模式,具体每一行上有几列内容就不一定了,根据我们自己页面的内容自由调整。宽到一定程度,主体内容的左右两侧就会出现 margin ,而不是让主体内容一直跟着 viewport 来变宽。 实现方式不唯一,下面的代码是用 flexbox 方式实现的,可供参考。 案例: [Mostly Fluid](http://codepen.io/kinghs/pen/zojYgV) 实际中一些网站赏析: * http://www.html5rocks.com/en/ * http://mediaqueri.es/ala/ * http://mediaqueri.es/ ## Layout Shifter ![](https://box.kancloud.cn/bf1e3d26aaad9219e993de01512a84b9_956x490.png) 这个我翻译为“变换式布局”。这种方式就比较灵活了,跟前面的两种方式一样的部分是:随着屏幕变宽,单列布局变多列。但是, 前面两种方式都是各个元素由原本的独占一行,变为依次变成多个元素共同占有一行。注意,没有哪个元素是跨越多行的,或者说就是同行上每个元素的高度是相同的。 而 Layout Shifter 这种方式的特点是各个元素的摆放位置不一定遵循原来的顺序,而可以根据需要任意调整,这就是所谓的“变换”( shift ),也会出现上面图中所示的一个元素的跨多行的情况。 这种布局使用传统的方式还是比较麻烦的,但是使用Flexbox的order实现还是比较方便的: 案例:[Layout Shifter](http://codepen.io/kinghs/pen/pNVPjv?editors=1100) 达成这种模式也不一定非要用 flexbox,比如下面这些实际中的例子: * http://foodsense.is/ * http://www.anderssonwise.com/ * http://alistapart.com/d/responsive-web-design/ex/ex-site-FINAL.html ## Off Canvas 抽屉式 Off Canvas我将它翻译为”抽屉式“。Off Canvas 模式的特点是当在手机上显示的时候,把一些不常用的页面元素隐藏起来,当然要有一个汉堡包按钮能很方便的让他们显示出来。而当屏幕空间足够的时候,直接显示前面被隐藏的内容,例如一个导航栏: ![](https://box.kancloud.cn/5dde51f7309991e142190bc740f011a5_958x531.png) 案例:[Off Canvas](http://codepen.io/kinghs/pen/QGrgwG) 实际例子: * [HTML5Rocks Articles](http://www.html5rocks.com/en/tutorials/developertools/async-call-stack/) * [Google Nexus](https://www.google.com/nexus/) * [https://www.canva.com/](https://www.canva.com/) ![](https://box.kancloud.cn/9a47f61a3aedd5a274c88e8cbcf4790c_1130x1474.png) ![](https://box.kancloud.cn/71fc326227101b39bbe14b726016a5e2_1134x1464.png) ## Tiny tweaks 最后在来说个简单些的,就是Tiny Tweaks,其实可以叫做微调整,像根据窗口大小来调节文字等。这种方式比较适合单栏布局或者像一大篇文章的形式。 案例:[Tiny tweaks](http://codepen.io/kinghs/pen/jVxwJz) 实际案例: * [Ginger Whale](http://gingerwhale.com/) * [Future Friendly](http://futurefriendlyweb.com/) ## 参考资源 * [Luke Wroblewski](http://www.lukew.com/ff/entry.asp?1514) * [google&udactiy 课程](https://www.udacity.com/course/viewer#!/c-ud893/l-3561069759/e-3529819408/m-3571808936) * [google developer](https://developers.google.com/web/fundamentals/design-and-ui/responsive/patterns?hl=en#mostly-fluid) * [Creating a Mobile Responsive Web Design](https://www.html5rocks.com/en/mobile/responsivedesign/)