CSS三栏布局

xiaoxiao2021-02-28  31

三栏布局是前端学习必须了解的东西,重要性不言而喻。这里详细介绍七种三栏布局方案:

绝对布局法

<div class="wrap"> <div class="main"></div> <div class="left"></div> <div class="right"></div> </div> .wrap{ position: relative; } .left{ position: absolute; left: 0; top: 0; width: 300px; background-color: rgba(255, 0, 0, 0.356); height: 400px; } .right{ position: absolute; right: 0; top: 0; width: 300px; height: 400px; background-color: rgba(255, 0, 0, 0.356); } .main{ height: 400px; margin: 0 300px; background-color: rgb(223, 211, 41); }

总结:三个div顺序可以任意调整,布局容易理解。

流动布局

<div class="wrap"> <div class="left"></div> <div class="right"></div> <div class="main"></div> </div> .left{ float: left; width: 300px; height: 400px; background-color: rgba(255, 0, 0, 0.356); } .right{ float: right; width: 300px; height: 400px; background-color: rgba(255, 0, 0, 0.356); } .main{ margin-left: 300px; margin-right: 300px; height: 400px; background-color: rgb(223, 211, 41); }

总结:主体div放在最后,左右两栏div顺序任意,代码简单,但要避免主体main部分clear样式。

BFC布局

<div class="wrap"> <div class="left"></div> <div class="right"></div> <div class="main"></div> </div> .left{ float: left; width: 300px; height: 400px; background-color:rgba(255, 0, 0, 0.356); } .right{ float: right; width: 300px; height: 400px; background-color:rgba(255, 0, 0, 0.356); } .main{ height: 400px; overflow: hidden; background-color:rgb(223, 211, 41); }

总结:主体div放在最后,通过 overflow 属性产生BFC, main 内子元素不容易改变整体布局。

圣杯布局

<div class="wrap"> <div class="main"></div> <div class="left"></div> <div class="right"></div> </div> .wrap{ height: 400px; padding-left: 300px; padding-right: 300px; } .main{ float: left; width: 100%; background-color: rgb(223, 211, 41); height: 400px; } .left{ float: left; height: 400px; width: 300px; margin-left: -100%; position: relative; left:-300px; background-color: rgba(255, 0, 0, 0.356); } .right{ float: left; height: 400px; width: 300px; margin-left: -300px; position: relative; right: -300px; background-color: rgba(255, 0, 0, 0.356); }

总结:主体div放在最前面,优先渲染主体部分。同时用到了定位。’

双飞燕布局

<div class="center"> <div class="main"></div> </div> <div class="left"></div> <div class="right"></div> .center{ float: left; width: 100%; } .main{ float: left; width: 100%; margin-left: 300px; margin-right: 300px; background-color: rgb(223, 211, 41); height: 400px; } .left{ float: left; height: 400px; width: 300px; margin-left: -100%; background-color: rgba(255, 0, 0, 0.356); } .right{ float: left; height: 400px; width: 300px; margin-left: -300px; background-color: rgba(255, 0, 0, 0.356); }

总结:同圣杯布局一样,但没有用定位,增加一个div标签

Flex布局

<div class="wrap"> <div class="main"></div> <div class="left"></div> <div class="right"></div> </div> .wrap{ display: flex; } .left{ flex: 0 1 300px; background-color: rgba(255, 0, 0, 0.356); order: -1; height: 400px; } .right{ flex: 0 1 300px; background-color: rgba(255, 0, 0, 0.356); order: 1; height: 400px; } .main{ flex: 1; background-color: rgb(223, 211, 41); height: 400px; }

总结:Flex布局具有很多优点,相信未来会广泛使用的。

阮一峰关于Flex的布局教程: Flex 布局教程:语法篇 Flex 布局教程:实例篇

Grid布局

<div class="wrap"> <div class="left"></div> <div class="main"></div> <div class="right"></div> </div> .wrap{ display: grid; grid-template-columns: 300px auto 300px; grid-template-rows: 400px; } .left{ background-color: rgba(255, 0, 0, 0.356); } .right{ background-color: rgba(255, 0, 0, 0.356); } .main{ background-color: rgb(223, 211, 41); }

总结:非常不错。 简书上一篇不错的文章: Grid布局指南

最后:日后会回来补充详细的。

转载请注明原文地址: https://www.6miu.com/read-2630418.html

最新回复(0)