网页布局之三栏网页宽度自适应布局

在工作中经常遇到网页布局错乱的问题,往往引发的这种问题都是因为不同设备不同分辨率而导致。归根结底,是因为前端工程师经验不足,代码写得不够完好。以下是我总结及从网络搜集的一些网页布局的方法,供大家参考学习。


网页布局中经常用到的是三栏布局且要求一栏宽度自适应。 无论在自适应网页或响应式网页中,三栏布局都是最为常见和基础的布局方式之一 所谓“三栏布局”,就是在网页上以平铺方式展现的左中右三列布局,其特点在于,左右两列可固定在网页左右两侧,中间一列永远居中,且当网页宽度大于左右两列宽度之和时,中间一列可随网页整体宽度的变化而变化。

目前为止,三栏布局的常用写法有三个:绝对定位法,外距负值法及自身浮动法。

绝对定位法

左右两栏采用绝对定位,分别固定于页面的左右两侧,中间的主体栏用左右margin值撑开距离。

首先需要三个div,将左右两边的div的position设置为absolute,左右设置为相等固定宽度(左右两栏宽度可根据实际需要而设置,然后再去调整中间主体栏对应的左右margin值即可),在这里设置为200px,并且左边div的top值为0,left值为0,同理右边top值为0,right值为0。然后设置中间div的样式,将中间div的margin-left和margin-right设置为左右两边的固定宽200px。以下是HTML布局代码及CSS代码

<body>
    <div id="main"></div>
    <div id="left"></div>
    <div id="right"></div>
</body>
#main {
  margin:0 200px;
  background:red;
}  
#left{
  position:absolute;
  top:0;left:0;
  width:200px;
  background:blue;
  height:100%;
}    
#right{  
  position:absolute;
  top:0;
  right:0;
  width:200px;
  background:green;
  height:100%;
}

这种方式三个div的顺序可以任意改变。

此方法的优点在于:理解容易,上手简单,受内部元素影响而破坏布局的概率低,就是比较经得起折腾。

缺点在于:如果中间栏含有最小宽度限制,或是含有宽度的内部元素,当浏览器宽度小到一定程度,会发生重叠的情况。

自身浮动法

左栏左浮动,右栏右浮动,中间栏放最后

不多说,直接上代码

<body>
  <div id="left"></div>
  <div id="right"></div>
  <div id="main"></div>
</body>
#main {
  margin:0 200px;
  background:red;
}
#left{
  float:left;
  width:200px;
  background:blue;
  height:100%;
}
#right{
  float:right;
  width:200px;
  background:green;
  height:100%;
}

这种方式需要注意三个div的顺序,左右两栏的顺序不分先后,但是中间一栏必须放在最后。

此方法的优点是:代码足够简洁与高效

缺点是:中间主体存在克星,clear:both属性。如果要使用此方法,需避免明显的clear样式。

margin负值法

左右两栏均左浮动,左右两栏采用负的margin值。中间栏被宽度为100%的浮动元素包起来。

下面是布局代码

<body>
  <div id="main">
    <div class="content"></div>
  </div>
  <div id="left"></div>
  <div id="right"></div>
</body>
#main {
  float:left;
  width:100%;
}
.content {
  margin:0 200px;
  height:100%;
  background:red;
}
#left{
  float:left;
  width:200px;
  margin-left:-100%;
  background:blue;
}
#right{
  float:left;
  width:200px;
  margin-left:-200px;
  background:green;
}

左右两栏div的顺序不分先后,但是主体部分div要放前面。

此方法的优点在于:三栏相互关联,可谓真正意义上的自适应,有一定的抗性——布局不易受内部影响。

缺点在于:相对比较难理解些,上手不容易,代码相对复杂。出现百分比宽度,过多的负值定位,如果出现布局的bug,排查不易。

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/css/three-column-page-layout.html

Like (0)
Donate 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
Previous 2018年9月13日
Next 2018年10月13日

相关推荐

  • CSS中的BFC是什么

    定义 一个块格式化上下文(block formatting context) 是Web页面的可视化CSS渲染出的一部分。它是块级盒布局出现的区域,也是浮动层元素进行交互的区域。 触…

    2022年11月5日
    400
  • 外层有一个自适应高度的div,里面有两个div,一个高度固定300px,另一个怎么填满剩余的高度?

    可以设置外层自适应高度的容器为flex布局,利用flex-basis属性即可实现自动填满剩余高度;代码如下:

    2021年2月22日
    1.2K
  • CSS多列等高布局

    在项目开发中,经常遇到需要多列等高布局的需求。解决这种的需求的方法有很多,各有利弊,现总结如下。 方法一:使用flex布局 优点:实现方便,还可以方便实现各种比例 ; 缺点: IE…

    2019年6月11日
    2.1K
  • px、em和rem实战经验

    在自适应布局或者移动端网页开发时,我们经常会用到em和rem两个长度单位。接下来我们讨论一下这两个单位和px之间的区别,以及他们的使用场景等。 px px,像素(计算机屏幕上的一个…

    2018年9月11日
    1.9K
  • css晦涩难懂的点都在这啦

    CSS大家肯定都是会的但是每个人所撑握的情况都不一样,特别是已经工作几年的前辈(这里指的是我司)很多CSS玩法都不知道,可能他们已经习惯了用组件, 但是面试的时候又不可避免问,所以…

    2021年1月20日
    1.2K
  • 两栏布局之左侧固定,右侧自适应的实现方法

    实现左侧固定,右侧自适应的两栏布局的方法有很多。其中经常用到的有float方法、BFC方法、CSS3的flex布局及grid布局。并非所有的布局都会在开发中使用,但是其中也会涉及一些知识点。

    2018年10月13日
    2.4K
  • CSS布局之圣杯与双飞翼布局

    所谓圣杯布局和双飞翼布局其实解决的问题是相同的,都是解决左右两栏固定宽度,中间部分自适应,其中某部分内容比其他内容高的时候,保证三者元素等高。他俩的区别就是:圣杯用padding。…

    2019年6月18日
    1.8K
  • flex布局详解

    往往在移动端开发过程中,弹性布局是非常实用的一种手段。往往你并不需要去反复的使用媒体查询的。整整的响应式布局是使界面能够自动的根据屏幕进行变化,做到完美的弹性布局,在必要的时候,去…

    2018年9月10日
    2.1K
  • CSS卡片堆栈

    在浏览各种APP及网站,往往会发现很多酷炫的布局及样式。搜集一下,补充自己的技能库,借鉴学习一下。 HTML CSS

    2019年12月31日
    1.9K

发表回复

Please Login to Comment