header_v1.7.40

网页设计中的布局

130天前发布

原创文章 / 多领域 / 观点
一起看海啸 原创,如需商业用途或转载请与一起看海啸联系,谢谢配合。

直接看正文吧


最近工作中有个空档期,正好团队里的分享也轮到我了,加上前一阵子整个team在整理项目的设计规范,涉及到了布局和栅格的部分,所以就研究了一下,看了大量的资料,加上自己的一些理解,写了点总结,可能有很多不足之处,希望大家可以多多提意见。


先说下网页设计中的布局吧,我个人认为,网页设计中的布局可以从两个角度来看:设计视角和前端视角。本篇文章主要侧重分析前端视角,由于设计视角比较好理解,所以不做太多的赘述。


先说下设计视角吧,这个最贴近设计师,比较好理解。


设计视角主要是从网页的排版角度去进行分类,大致分为四种:上下布局、左右布局、国字形布局和T字形布局


上下布局是最常见的布局方式,基本上都会在最上方有一个导航,下方是内容区,有的官网还会有页脚footer,站酷就是上下布局。左右布局在后台类、TO B类产品中比较常见,一般左侧为侧边栏,右侧为内容区。国字形布局和T字形布局其实算作上下布局,只不过比较典型,可以单拎出来作为一种布局类型。



接下来我们来看下前端视角的布局方法


首先为什么要了解些前端的布局方式呢,直接甩给前端一个设计稿,让他去实现不就行了?其实这涉及到的是设计和开发之间的协作关系,一个有规律有规范的设计稿,前端实现起来更加容易,也方便他管理自己的代码,实现出来的样式也会更灵活,在出设计稿之前和前端沟通一下,采用什么布局方式,需要设计怎么配合,也费不了多少工夫。当然直接甩个设计稿,前端也能实现,但一些特殊效果真的是需要双方合作才能完成的。


废话不多说

前端视角主要是指实现页面的各种CSS布局方式,我这里主要归纳了5种:静态布局、流式布局、响应式布局、弹性布局和Flex布局。除了静态布局,其他都能实现在不同分辨率下页面的自适应,来给用户最佳的视觉呈现。


静态布局(static layout)


静态布局也叫做固定布局,网页内容区采⽤绝对宽度,网页内每个模块的尺寸大小固定,一般整体在浏览器内居中显示,并会设置最小宽度min-width,当分辨率小于最小宽度就会出现滚动条,如果大于最小宽度则内容居中外加背景 。


找了一个很古老的网站,大家看看就好。。。



应用场景:目前大部分的高校官网、医院官网、政府网站等都是静态布局,而且设计风格上也很老旧,你们懂得,当然并不是说静态布局的风格就是老旧,这个布局和设计风格没有多大关系哈,有很多新闻门户类、企业官网等网站采用静态布局,同样也很出彩。

优点:这种布局方式对设计师和前端来说都是最简单的,不用去考虑兼容性等问题。设计和开发成本低,后期维护成本低。

缺点:在小屏上有可能出现横向滚动条,在大屏上会出现大量的空白,不能根据用户的屏幕尺寸做出不同的表现,用户体验比较差。 




流式布局(fluid layout )


流式布局英文fluid layout,也可以翻译成liquid layout,是指页面按照百分比%定义宽度(也就是长度单位不是我们平常使用的px,而是百分数),来适配不同的屏幕分辨率,在不同的分辨率下网页布局保持不变,一般搭配min-、max-属性来控制尺寸流动范围,以免过大或者过小影响展示和阅读,页面内元素的高度和文字大小往往px来固定住,方便页面排版和阅读。


流式布局的特点是,如果宽度太小,放不下两个元素,后面的元素会自动滚动到前面元素的下方,不会在水平方向overflow(溢出),避免了水平滚动条的出现。

图片来自ant design


应用场景:流式布局典型的代表是栅格系统,一般页面中采用百分比定宽的部分都可以看做是流动布局的属性。目前大部分网页为了实现更好的视觉效果都会全局或局部使用流式布局。

优点:在不同分辨率屏幕上能够很好的展示页面元素,如果设计得当,流动布局能避免在小屏幕上出现水平滚动条,对于差别不是很大的屏幕分辨率十分友好。

缺点:当屏幕分辨率差异过大时,因为宽度使用%百分比定义,但是高度和文字大小等大都是用px来固定,有些页面元素宽度被拉的很高,页面缩小后,一些字或者图片或者图表等会产生堆叠,显示效果不太好控制。



响应式布局(responsive layout )


响应式布局是指网页分别为不同的屏幕分辨率定义不同的布局,同时在每个布局中,各元素大小采用百分比定义宽度,即页面元素宽度随着窗口调整而自动适配。可以看做是定义了几个不同尺寸的流式布局。


布局特点:基于栅格系统设计和开发,通过监测设备的分辨率来呈现不同的布局。Bootstrap(一个前端代码库)的响应式设计中,预设了六个响应尺寸:xs、sm、 md 、lg、 xl、  xxl, 当屏幕分辨率较高时采用XL或者XXL的布局,当屏幕过小时,采用XS的布局。


网站示例:Uplabs网站就是基于栅格系统进行了响应式布局,宽屏模式下展示更多内容,包括上方的引导区和各种标签入口,当在小屏上市就折叠部分内容,同时作品缩略图也实现了基于栅格进行放大和缩小。



优点:能够适应pc、pad和移动端,在任何尺寸的屏幕上都能呈现完美的视觉效果

缺点:要匹配足够多的屏幕大小,需要设计多个版本,设计和开发工作量大


因为最近在做设计规范,无意中发现shopify的设计规范的示例中设计了四种尺寸的设计稿:1440px、1024px、776px、320px,所以还是繁琐的。(这么多版本,设计和开发会吐血吧)


下面是响应式布局的一些网站:Bootstrap(https://getbootstrap.com/)、Uplabs(https://www.uplabs.com/)、Ant Design(https://ant.design/components/grid-cn/



弹性布局(em/rem layout)


弹性布局翻译过来不是em/rem layout ,因为弹性布局采用的单位是em或者rem,为了直观,所以直接采用了单位缩写去区分。

em和rem是一个相对长度单位,页面内各元素的尺寸采用em/rem做单位,em是相对其父元素大小,rem是始终相对于html大小,即页面根元素。(有点看不懂是吧,没关系,你只需要他是个相对长度单位就行了)


布局特点:采用em或者rem为单位,页面元素能够根据屏幕分辨率进行等比缩放,支持文字、间距类等比缩放,国内PC端网页不咋用,在国外已经很普遍,比较适用于移动端H5的适配


MINX网站采用了em为单位,进行了弹性布局,当屏幕分辨率差别不是很大时,视觉效果还是不错的。


优点:弹性适配不同的分辨率,视觉效果比较好,而且不用出多套设计稿,是不是很爽!

缺点:em以父节点font-size大小为参考点,进行任何元素设置,都需要知道他父元素的大小,容易造成页面排版混乱,rem支持的浏览器比较少。


还是上面的网站,当页面继续缩小,会出现元素的叠加,所以em单位使用时不太好把控效果。


看了好多国外的网站,发现弹性布局还是很普遍的,弹性布局示例网站:https://minx-net.co.jp/

https://northstreetcreative.com/

https://clearleft.com/



Flex布局


个人理解的,felx布局主要是用来定义页面内某些元素相对于父级元素的对齐、排序、分布等排版方式,通过调整父级内元素的宽高,从而在任何显示设备上实现对可用显示空间最佳填充的能力。

图片来自ant design


我个人觉得flex布局比较适合模块内元素的布局,算不上整个页面级别的布局。


优点:能够很好的契合移动端,无需考虑分辨率问题,移动端flex布局占据主流

缺点:PC端网页兼容性不好,ie浏览器必须是10.0版本以上;对设计稿要求很高,需要是有规律的设计稿,比如栅格系统;网页内容较多时,flex布局不太好控制。


我个人找到的知乎是用了Flex布局,但是他进行了页面定宽,所以很多效果看不出来



个人总结了下各种布局的关系


流动布局可以看做是静态布局的动态版,响应式布局可以看做是几个不同尺寸的流动布局,在每个流动布局之间进行自适应。流动布局、响应式布局、弹性布局和flex布局都能实现自适应的效果,只不过弹性布局是用em/rem为单位,流动布局和响应式布局是以百分比为单位,flex由于兼容性问题,PC端不太常用。

各种布局不是绝对的,可以综合使用,目的都是使页面在不同分辨率的设备上实现更好的用户体验,针对不同性质的网站采用合适的布局方式。

我这里将栅格设计放了进来,但实际上,页面布局可以基于栅格也可以不基于栅格,完全看设计师个人和实际工作场景了。



----------------------------------------------------------------------------



看完布局,你会发现,很多国内常用的布局都和栅格有关,有些网页设计师在做的时候也喜欢用栅格来规范自己的设计稿,所以我简单的梳理了一下栅格的小知识,希望对大家有用。


首先,栅格化设计(grid-design )不等于栅格化开发(css grid )。我之前一直以为用栅格就要实现网页的响应式,由于我们是to b类的网站,所以刚开始很抵触,总觉得没法定宽设计某个模块,后来查了些资料才发现,这是两回事。

栅格化设计是针对设计师而言,主要是为了提高网页的规范性和统一性,可以不考虑页面的响应式;而栅格化开发,是针对开发人员,特指前端攻城狮使用的css框架,用来实现页面的响应式布局。也就是你可以按照栅格去出设计稿,但不一定基于栅格开发,基于栅格开发意味着需要实现网页响应式布局。


那么栅格是什么,想必大家都很清楚,就是将网页划分为几个等分栏。大概就长下面这样

栅格包括列宽(column)、间隔(gutter)和外边框margin,gutter是左右均分,分别位于列宽的两侧,margin是位于整个网页的两侧的空白区,由1/2的gutter和一个padding组成,一般来说网页的总宽度是不包含左右两侧的margin的。


栅格系统的适配


一般来说,适配时,间距gutter宽度不变,只会改变列宽column,但是在material design中定义了多种宽度的gutter,当宽屏时使用16或者24px的gutter,窄屏使用8px的gutter,所以可以根据实际情况自己定义是否改变gutter宽度。


栅格的类型


我个人将栅格归为了4类:有间隔栅格、无间隔栅格、局部栅格、水平栅格。有间隔栅格最为常见,无间隔栅格也就是gutter为0,局部栅格一般适用于页面内有侧边栏固定的布局,侧边栏可以不算入栅格范围,水平栅格是指垂直和水平都进行栅格,感觉不太常用。


栅格常见分栏


12栏和24栏是最常见的,因为能够被2、3、4、6整除,也就是页面能够均分为2、3、4、6等份,其次是16列比较常见。列数越多,排版布局越灵活,列数越少限制性越大,同时页面的统一性更强 。可以根据网页特点选择合适的栏数,不必拘泥。

下图是经典的960栅格系统


网上也有很多详细介绍栅格的文章,感兴趣的朋友可以加以研究,尤其是material design的8点栅格系统,值得好好学习和借鉴。


差不多就这样,希望这篇文章能够帮到你,当然如果文章中有问题的地方,欢迎各位留言。





169

    文章信息

    • 文章标签

    没有新消息

    提示文案

    提示文案

    提示失败
    提示成功