CSS多列布局

1.多列等高布局

这种布局即每一列的高度保持一致,高度与最高的一列相同。等高布局是为了维护边框线条的完整性,在有些地方则可能是为了维护背景的完整性,达到整体一致不缺失的效果。

最常用的方法为padding补偿法:

.container{
  overflow:hidden;
}

.item{
  float:left;
  width:100px;
  margin-right:10px;
  padding-bottom:10000px;
  margin-bottom:-10000px;
}

<div class="container">
  <div class="item">
    123
  </div>
  <div class="item">
    123<br/>
    456<br/>
    123
  </div>
  <div class="item">
    456
  </div>
</div>

这种方法的原理是设置子列的padding-bottom的值足够大,此时父容器也会被撑开,接下来再把子列的margin-bottom的值设成与padding-bottom相等的负值,子列的高度会被抵消,但内容高度却不会减少,较短的列会用padding-bottom来弥补内容高度,最后就是设置父容器over-flow:hidden;  将超出的部分隐藏,就实现了多列等高的效果。

优点:简单易操作,CSS实现,兼容性较好,适用于各版本浏览器。

缺点:当给子列设置border:3px red solid;  会出现以下问题:

由于超出父容器部分被隐藏,有部分边框将无法显示。

2.利用负边距

 .container{
    overflow: hidden;
  }

  .wrap{
    float: left;
    width:100%;
  }

  .left{
    float:left;
    width:120px;
    margin-left: -100%;
    background: red;
  }

  .right{
    float:left;
    width: 150px;
    margin-left: -150px;
    background: green;
  }

  .main{
    margin-left: 120px;
    margin-right: 150px;
    background: blue;
  }

 <div class="container">
   <div class="wrap">
     <div class="main">center
     </div>
   </div>
   <div class="left">left
   </div>
   <div class="right">right
   </div>
 </div>

这种方法的原理是:开始时.wrap的width:100%,单独占一整行,此时.left和.right都在第二行

然后设置.left的margin-left: -100%;  相当于向上平移了一行,而他原来的位置则变成了.right,设置.right的margin-left:-150px;  相当于来到了第一行的尾部

最后给.wrap中的.main设置margin-left: 120px;  margin-right: 150px;  就实现了多列布局的效果。

优点:CSS实现,控制比较容易。

缺点:当列数较多时会显得很麻烦。

3.CSS3多列布局

CSS3新增了多列布局特性,可以让浏览器确定何时结束一列和开始下一列,通过设置CSS属性即可实现。可以设置以下几个属性:

column-width: 每列宽度

column-count: 元素应该被分隔的列数。

column-gap: 列之间的间隔。

column-rule: 列之间的宽度、样式和颜色规则。

.container{
    -moz-column-count:3; /* Firefox */
    -webkit-column-count:3; /* Safari and Chrome */
    column-count:3;
}

<div class="container">
  一个人的进步并不是自己说了算的,自我感觉良好的时候容易迷失自己,这时你需要别人的评价,别人的意见,才能让你更加清晰的认识自己。
人都是在错误中成长的,错误能让你更清晰的认识自己,知道自己的不足,这样能更好的对症下药,进而挑战自己,几近完美。
学习固然很重要,但是事后的思考更加重要,重另一个角度审视自己会有意想不到的收获。
</div>

优点:使用方便,控制简单

缺点:只适用于文本,并且从下图可以看出不支持IE9,为了兼容其他浏览器需要添加浏览器前缀。

4.flex布局

CSS3还提供了一个额外的布局系统。在这个新的框模型中,框的子代采用水平或垂直布局,而且可将未使用的空间分配给特定的子代,或者通过“弹性”分配给应展开的子代,在各子代间进行分配。这些框的嵌套(水平嵌套在垂直中,或垂直嵌套在水平中)可用于在两个维度中构建布局。

Flexbox 为 display 属性赋予了一个新的值box,还为我们提供了8个新的属性:

  1. box-orient
  2. box-pack
  3. box-align
  4. box-flex
  5. box-flex-group
  6. box-ordinal-group
  7. box-direction
  8. box-lines

优点:变化多,使用上更加灵活,功能强大

缺点:较复杂,兼容性也不是很好,IE9不兼容,为了兼容IE10和其他浏览器需要添加浏览器前缀。

时间: 2024-07-28 20:47:16

CSS多列布局的相关文章

css两列布局,一边固定宽度,另一边自适应

<!DOCTYPE HTML><HTML>    <head>                <meta charset="utf-8" />        <title>css两列布局,一边固定宽度,另一边自适应</title>    </head>    <style>        a, body, center, cite, code, dd, del, div, dl, dt, e

div css三列布局效果实例代码

div css三列布局效果实例代码:三列布局在是比较中规中矩的布局之一,大量的网站都有应用,也是初学者必须要掌握的布局方式之一,下面就是一个三列布局的实例代码,仅供参考之用,希望对初学者有一定的帮助,代码实例如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <

CSS多列布局Multi-column、伸缩布局Flexbox、网格布局Grid详解

新css属性为我们提供了更加便捷的网页布局方式.来自微软的thomas lewis将带你认识去Grid Alignment,Flexibox Box以及Multi-column Layout这三大领域. 这篇文章最早出现在the April 2012 issue (226)这期的.net杂志上-这杂志是面向网页设计者以及开发者,全球销量最高的杂志. 按照以往来说,用CSS来布局看起来总是一样非常繁杂的工作.然而,随着一个个新标准的推出,网页设计者已经能够实现非常轻松地进行布局工作了. 主流的浏览

CSS两列布局

在布局中,我们常常需要出现两列的情况,其中左边一列固定宽度,右边一列随着浏览器宽度变化而变化.如何实现呢? 传统的方法是利用float将左部分浮动起来,再通过margin将右部分右移,得到所需效果,代码如下: <!--两列布局,其中左侧固定,右侧自适应--> <div class="left background-color-red height-60 width-300"></div> <div class=" background

css 两列布局的多种实现方式及原理。

两列布局是非常常见的需求在实际项目中,实现的方式也有很多.这里提供几种实现方式和原理.供大家参考 页面基本布局如下代码所示: 1 <div class="main"> 2 <div class='left'> 3 左侧 1 4 </div> 5 <div class='right'> 6 右侧 1 7 <div>假如div很多的话</div> 8 <div>假如div很多的话</div> 9

css多列布局(实例)

前言 一列布局 二列布局 三列布局 1 一列布局 一列布局: HTML部分 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>一列布局</title> </head> <body> <div class="head">head</div> <div class=&quo

CSS三列布局

× 目录 两侧定宽中间自适应 两列定宽一侧自适应 中间定宽两侧自适应一侧定宽两列自适应三列自适应总结 前面的话 前面已经介绍过单列定宽单列自适应和两列自适应的两列布局.本文介绍三列布局,分为两侧定宽中间自适应.两列定宽一侧自适应.中间定宽两侧自适应.一侧定宽两列自适应和三列自适应这五种情况 两侧定宽中间自适应布局 思路一:  float [1]float + margin + calc <style> p{margin: 0;} .parent{overflow: hidden;} .left

div+css两列布局与三列布局

一.两列布局: 1.左边定宽,右边自适应. 方法一:采用position:absollute;并设置margin-left的值. 例: #left{ position:absolute; width:300px; top:0px; left:0px; background:#F00; } #right{ background:#0FC; margin-left:300px; } <div id="left">左边定宽</div> <div id="

css 三列布局

前面的话 前面已经介绍过单列定宽单列自适应和两列自适应的两列布局.本文介绍三列布局,分为两侧定宽中间自适应.两列定宽一侧自适应.中间定宽两侧自适应.一侧定宽两列自适应和三列自适应这五种情况 两侧定宽中间自适应 思路一:  float [1]float + margin + calc <style> p{margin: 0;} .parent{overflow: hidden;} .left,.right{float: left;width: 100px;} .center{float: lef