对于Web前端初学者或者经验不够丰富的人来说,出现页面排版布局混乱的情况并不罕见,有时候明明前面部分的网页都很整齐美观,可是在接下来的部分中经常会出现网页布局混乱,比如content无法调整到开发者需要的位置,或者出现页面重叠的现象。以下内容是我个人在网页制作过程中关于网页排版混乱及其解决办法的一些经验总结,不足之处,希望大家互相补充学习。
)DIV+CSS网页错位的原因与解决方法
常常我们会遇到我们要设置在一行显示的布局,却因为种种原因造成了错位,看到结果是在一行的最后一个盒子布局错位掉下去了(如下图)。
造成DIV CSS网页布局错位的原因大概有两种情况,一种是宽度计算错误,一种是IE BUG造成,特别是IE6和IE7。接下来我们挨着为大家介绍错位与解决错位方法。
一、宽度计算错误解决方法
宽度计算错误,假如总宽度为500px,有3个盒子,分别CSS宽度为200px、200px、100px,这个没问题会在一排显示不会错位,但如果加入了CSS边框、padding、margin属性时,别忘记这几个属性所占的宽度。特别是padding与边框border占用宽度空间不要忽略了。如果有一个盒子加入左右边框,这个时候有一个盒子中刚合适的宽度条件下减少2px边框占用宽度,否则即会总3个盒子合计宽度大于了总宽度,造成错位。
宽度问题造成CSS布局错位小结:
内盒子宽度之和大于了外宽度造成错位,检查时候我们一定计算设置宽度、边框、paddind、margin之和。
二、IE BUG特别是IE6和IE7造成错位
这个问题是最常见的问题,我们检查完第一点宽度问题,而宽度没问题,这个时候在IE6、IE7中错位,在IE8及其它浏览器没有错位问题,这个时候我们就要考虑到你是否使用了margin属性,通常我们使用了CSS浮动(CSS float)情况下使用margin(margin-right、margin-left这里特别是这个属性)此属性会产生双倍数值,这个时候我们需要使用css hack解决此问题。让IE6或IE7单独识别特指定margin样式。
如:
1、IE6单独识别(margin-left对于只有IE6错位情况下)
{margin-left:5px;_margin-left:2px}
这个时候除IE6外其它浏览器设别margin-left:5px,IE6单独识别_margin-left:2px
2、IE7与IE6都识别(margin-left对于ie6和ie7识别其它版本和品牌浏览器不设别)
{margin-left:5px;*margin-left:2px;}
这个时候除IE6和IE7外,其它浏览器设别margin-left:5px,IE6和IE7识别*margin-left:2px
更多CSS HACK知识大家可进入CSS HACK栏目了解更多相关知识。
以为为大家总结了常见网页错位原因,大家从这以上两方面入手检查css布局网页错位原因。
-----------------------------------------以上内容部分参考文献网址http://www.divcss5.com/css-hack/c397.shtml
浮动会造成页面布局的重叠混乱,这在网页制作中是非常常见的,我们可以利用以下几种方法清楚浮动所带来的影响;
1、出现float影响的根本原因是:父标签没有高度,导致光标上移动。如果给父标签设置固定的高度。可以解决浮动带来的问题
2、给被受浮动影响的标签设置clear both来清除浮动所带来的影响
3、overflow:hidden;设置内容超出部分
除了以上宽度计算错误和浮动带来的影响导致页面布局混乱,以下几种情况也会导致页面布局的混乱
1,margin垂直方向塌陷现象
标签之间的margin:
垂直方向塌陷现象-----以大的为主
水平方向没有塌陷现象
2、如果字标签用margin来描述和父标签的位置关系,可能出现margin外露,
给父标签增加overflow:hidden;可以解决
可以用padding来替代margin描述与父标签的位置关系,margin部分用padding代替,然后减少父标签相应的高度。