CSS多列等高布局

在项目开发中,经常遇到需要多列等高布局的需求。解决这种的需求的方法有很多,各有利弊,现总结如下。

方法一:使用flex布局

优点:实现方便,还可以方便实现各种比例 ; 缺点: IE9及IE9以下版本不支持flex属性
<div class="container">
    <div class="left">多列等高布局左多列等高布局左</div> 
    <div class="right">多列等高布局右</div>
</div>
.container{
  display:flex;
}
.left,.right{
  flex:1;
}
.left{
  background:pink;
}
.right{
  background:green;
}

方法二:流体布局

优点:兼容各种浏览器;缺点:嵌套太多DIV元素;

以两列等高布局为例

<div id="container2">
   <div id="container1">
     <div id="col1">Column 1</div>
     <div id="col2">Column 2;Column 2;Column 2;Column 2;Column 2</div>
   </div>
 </div>
// 在这里有两列,故需要两个容器
#container2 {
  float: left;
  width: 100%;
  background: orange;
  position: relative;
  overflow: hidden;
}

#container1 {
  float: left;
  width: 100%;
  background: green;
  position: relative;
  right: 30%;/* 距离是第二列的宽度,加上2%的padding */
}

#col1 {
  width: 66%;
  float: left;
  position: relative;
  left: 32%;/* container1容器right:30%;加上内边距2%,故为32%;  */
}

#col2 {
  width: 26%;
  float: left;
  position: relative;
  left: 36%;/* 加上三个内边距,所以是 36%;*/
}

这种布局的原理是给每一列添加相对应用的容器,并进行相互嵌套。这里需要注意的是想要多少列等高,就需要多少个容器

方法三:使用内外边距相抵消

优点:兼容所有浏览器;缺点:暂没发现;需要注意的是父元素添加overflow:hidden
<div id="container">
  <div id="left" class="column aside">
    <p>Sidebar</p>
  </div>
  <div id="content" class="column section">
    <p>Main content;content;content;content;content</p>
  </div>
  <div id="right" class="column aside">
    <p>Sidebar</p>
  </div>
</div>
#container {
  margin: 0 auto;
  overflow: hidden;
  width: 960px;
}

.column {
  background: #ccc;
  float: left;
  width: 200px;
  margin-right: 5px;
  margin-bottom: -99999px;
  padding-bottom: 99999px;
}

#content {
  background: #eee;
}

#right {
  float: right;
  margin-right: 0;
}

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
上一篇 2019年6月6日
下一篇 2019年6月13日

相关推荐

  • CSS让内容居中的方法总结

    内容水平居中  分行内元素与块级元素两种情况;其中块级元素又分定宽与不定宽两种情况; 行内元素 首先看它的父元素是不是块级元素,如果是,则直接给父元素设置 te…

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

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

    2018年9月11日
    2.0K
  • CSS中的BFC是什么

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

    2022年11月5日
    473
  • 网页布局之三栏网页宽度自适应布局

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

    2018年10月8日
    2.9K
  • css如何利用transparent属性设置透明度?transparent属性绘制各种三角形

    想到用css设置元素透明度,大家的第一反应会是:用Opacity属性来设置透明度,其实在css中还有其他设置透明度的方法。本章给大家介绍用transparent属性设置透明度,以及…

    2021年2月25日
    1.3K
  • css晦涩难懂的点都在这啦

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

    2021年1月20日
    1.3K
  • flex布局详解

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

    2018年9月10日
    2.2K
  • css布局基础总结

    前端css布局知识繁杂,实现方式多种多样。想写出高效、合理的布局,必须以深厚的css基础为前提。为了方便记忆和复习,将css布局要点记录如下。内容较多,应用方面说的不太详细,但都是…

    2018年9月13日
    2.3K
  • CSS卡片堆栈

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

    2019年12月31日
    2.0K

发表回复

登录后才能评论