三列布局方式

Posted 老张在线敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三列布局方式相关的知识,希望对你有一定的参考价值。

第一种

{/*
利用 overflow: hidden;的特性;
三栏的顺序分别为左-右-中。
左右两栏分别设置宽度以及左浮动和右浮动,脱离普通流,这时如果让中间栏高度大于2个边栏会发现两边栏实际上是叠在 main 上面的,因为 main 是块状元素,独占一行,浮动元素向相应的方法浮动,直到遇到容器的边框。
中间栏设置 overflow:hidden 创建BFC,这样就可以利用BFC不和浮动元素重叠的特性,让 main 的宽度自适应。
*/}

<div className="ThreeColumn1">
    <div className="left">左</div>
    <div className="right">右</div>
    <div className="main">自适应</div>
</div>
.ThreeColumn1 {
  margin: 50px;
}
.left {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    width: 200px;
    height: 200px;
    float: left;
    background: lightblue;
  }
  .right {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    width: 200px;
    height: 200px;
    float: right;
    background: rgb(230, 199, 173);
  }
  .main {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    height: 200px;
    overflow: hidden;
    background: rgb(173, 230, 201);
  }

第二种

{/*
内空Padding圣杯模式:
三栏的顺序为中-左-右,并包裹在ThreeColumn2容器内。
三栏同时设置float:left,左右两栏定宽、中间宽度100%。
利用负边距分别把left和right,这时视觉上left和right是叠在main上面的。
设置ThreeColumn2的左右padding分别为左右栏的宽度。
*/}

<div className="ThreeColumn2">
    <div className="main2">自适应</div>
    <div className="left2">左</div>
    <div className="right2">右</div>
</div>
.ThreeColumn2 {
  height: 200px;
  margin: 50px;
  padding: 0 120px 0 300px;
}
.main2 {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    width: 100%;
    float: left;
    background-color: rgb(251, 141, 141);
    height: 200px;
  }
  .left2 {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    float: left;
    background-color: rgb(182, 182, 245);
    height: 200px;
    width: 300px;
    margin-left: -100%;
    position: relative;
    left: -300px;
  }
  .right2 {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    float: left;
    background-color: rgb(241, 241, 162);
    height: 200px;
    width: 120px;
    margin-left: -120px;
    position: relative;
    right: -120px;
  }

第三种

{/*
外框子 Margin 双飞翼模式:
双飞翼布局跟圣杯很像,区别在于圣杯利用padding控制main的位置,双飞翼用margin控制main的位置。
需要额外在main里面加一层div,用于margin控制,但是可以免去左右两栏的相对定位。
*/}

<div className="ThreeColumn3">
    <div className="main3">
        <div className="main_warp">自适应</div>
    </div>
    <div className="left3">左</div>
    <div className="right3">右</div>
</div>
.ThreeColumn3 {
    height: 200px;
    margin-top: 10px;
}
.main3 {
    width: 100%;
    float: left;
}
/*在双飞翼布局里,中间栏的边框、背景色要在`main-warp`里设置*/
.main_warp {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    height: 200px;
    background: rgb(240, 104, 240);
    margin: 0 230px 0 200px; /*设置main的位置*/
}
.left3 {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    width: 200px;
    height: 200px;
    background: rgb(164, 245, 184);
    float: left;
    margin-left: -100%;
}
.right3 {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    width: 230px;
    height: 200px;
    float: left;
    margin-left: -230px;
    background: rgb(243, 165, 178);
}

第四种

{/*
flex布局:
三栏的顺序为左-中-右,并包裹在warp容器内。
warp设置display: flex,如果三栏高度自适应又希望顶部对齐,需要添加align-items: flex-start。
左右栏各自设置定宽。
*/}

<div className="ThreeColumn4">
    <div className="left4">左</div>
    <div className="main4">自适应</div>
    <div className="right4">右</div>
</div>
.ThreeColumn4 {
    height: 200px;
    display: flex;
    align-items: flex-start;
    margin-top: 10px;
}
.main4 {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    flex: 1;
    height: 200px;
    background: rgb(243, 135, 243);
}
.left4 {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    width: 120px;
    height: 200px;
    background: pink;
  }
.right4 {
    text-align: center;
    color: white;
    font-weight: 500;
    font-size: 24px;
    line-height: 200px;
    width: 300px;
    height: 200px;
    background: greenyellow;
}

原文链接:https://blog.csdn.net/WangLuke_/article/details/118354314

以上是关于三列布局方式的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# 前端歌谣的刷题之路-第一百四十七题-三列布局-浮动

三列布局

经典三列布局

三列布局(圣杯双飞翼)

css3笔记4 盒模型, flex 弹性布局,三列布局

Android片段布局完成膨胀