当前位置:Gxlcms > html代码 > 页面布局的梳理_html/css_WEB-ITnose

页面布局的梳理_html/css_WEB-ITnose

时间:2021-07-01 10:21:17 帮助过:32人阅读

先前只知道CSS的布局有两列、三列 、等宽、等高等,还是在看新浪网的时候才开始对布局有了一些意识,但并没对其进行一些归纳,每当准备模仿网站或者还原设计图时首先便会先观察其整体的结构,再对其进行分析,找出相同的部分,在大脑中大致会有个思路,一步步该如何划分、coding , 喜欢逛张鑫旭大神的博客,他上面有很多特别有营养的东西可供吸收,也是在他那里看到流式布局,随机查了些资料,才对布局又重新进行了一些梳理。纯为个人笔记,有需要的可以参考一下,更详细的网上资料很多,亲们可以多翻阅查找,《精通CSS》上关于布局的一章,个人认为分析的还是很不错的,很多都值得我们去思考。 网页布局有固定宽度、流体式、弹性布局;比较常用的就是 固定宽度的布局 ,原因很简单,因为简单粗暴上手简单。流体式及弹性布局比较多的使用在论坛网站,或者个人博客中。在移动端发展迅速的限制弹性布局也开始应用广泛,rem 的引入也修正并提升了em的使用。

固定式布局主要是使用像素的模式,在使用 流体式布局 时,尺寸是使用百分数而不是像素设置的,这使得流体式布局相对于浏览器窗口进行伸缩,随着窗口变大,列宽也会变宽。反之,随着窗口变小,列的宽度也变小。流体式布局可以非常高效的使用空间。但是,流体式布局必然也有其问题,在窗口宽度较小的时候,行变的非常窄,很阅读 。因此,有必要添加以像素或em为单位的min-width,从而防止布局变得太窄。但是,如果min-width设置的太大也会遇到与固定宽度布局相同的限制。

在CSS3中引入的新特性里,有媒询一说通过操作 media ,用来完成响应式布局。所谓响应式也就是让一个网站能够兼容多个终端, 弹性布局 相对于字号(而不是浏览器的宽度)来设置元素的宽度,以em为单位设置宽度。可以确保在字号增加时整个布局随之扩大。这样就可以将行保持在可阅读的范围。

当然啦,于其他布局一样,弹性布局也有一些问题与固定宽度布局相同,不能充分利用可用空间。另外,因为在文本字号增加时整个布局会加大,所以弹性布局会变得比浏览器窗口宽,导致水平滚动条出现。为了,防止这种情况,可能需要在容器div上加上max-width为100%,ie6不支持max-width, 如果确实要兼容IE6,就必须使用javascript;

延伸:弹性布局

弹性布局最大的优点就是能充分利用屏幕空间。无论客户端分辩率多大,都能自动适应宽度的变化。

看看上面这幅图片,这是国外的一个网站,它本身是固定宽度布局的,我们的布局就以这幅图为基础来讲解的。当然,我不会全面介绍如何制作这个完整页面,我只针对重点做一下讲解。

其实做一个弹性布局,相对来说是比较简单的,但是这种布局虽简单,可是对于细节上的把握才是这种布局的精髓。弹性布局虽说有这么好的优点,可是却有比较致命的缺陷:

1、如果不对这种布局设置一个最小宽度,当用户缩小窗口到足够小时,会对布局产生致命的影响。造成严重影响布局错位。

2、当一个页面弹性布局时,对于里面的图片会产生巨大的影响。因为到目前为至,还没有解决图片随百分比缩放的问题。

所以这篇文章对于布局的讲解可能还相对少些,而更多的是解决上面的两个问题,我相信只要解决了上面的两个问题,这种布局相对来说就容易多了。

一、解决最小宽度

一般弹性布局都是利用百分比来设置一个容器的宽度。这样就能自动适应屏幕的宽度了。但是宽度值不能完全由用户自由缩放,我们必须在这个百分比宽度限制其最小宽度,当用户缩小窗口到一定值,就不让窗口再缩放了。

熟悉CSS的朋友都知道,有这样四个属性:

1)Min-width:最小宽度

2)Max-width:最大宽度

3)Min-height:最小高度

4)Max-height:最大高度

这四个属性刚好能解决这个问题,是不是比较欣喜,可是,别忙,虽说它们能解决这个问题,可是却有一个严重的问题,用户使用最多的浏览器IE6却不支持这几个属性,这是一件非常糟糕的事情。我们总不能丢弃用户最多的浏览器吧!

目前网上比较流行的有四种方法来解决让IE6支持这四种属性:

1)在CSS中expression来设置最小宽度,比较费内存。

2)用嵌套DIV,然后用margin偏移模仿实现,多冗余结构。

3)用JQ框架实现,为一个属性加一个JS框架,有点不划算。

4)用纯JS代码实现。

前面三种都有劣势,请各自选择最合适的方法,我偏重于最后一种,这是国外的一个牛人实现的,相关例子可以看这儿: http://www.doxdesk.com/software/js/minmax.html

有了这个JS文件,你只需要在头部调用这个JS文件就可以了。

PS:在演示模型中为了方便,我将这个JS作为内部引用的方式调用,你们在实际应用中将这个JS文件新建为一个JS外部文件,如下方式调用:

内层样式:

#inhead{height:150px;width:100%;background:url(image/header-bg.png) no-repeat right bottom;text-align:center;color:#fff;}

经过这样的改进后,我们的页头就做成弹性的图片,它在浏览器中显示就应该如下:

这样,一个弹性布局就算基本完成了。最终的效果如下图所示:

后记:

最后不得不提的是,这种布局是有局限性的,并不是每个网页都能适合用这种方式来布局。因为流体弹性布局本身存在的缺陷。它不能用于设计得太过华丽、图片丰富的页面,因为有些图片是没有办法做到象上图哪样伸缩的。我想正是因为这个原因,它限制了这种布局的广泛流传。

演示:

运行代码框

弹性布局设计(冰极峰原创)