1、两边定宽正中间自融入合理布局
思路1: float
【1】float + margin + calc
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{overflow: hidden;}
- .left,.rightright{float: left;width: 100px;}
- .center{float: left; width:calc(100% - 240px);margin: 0 20px;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- </div>
- </div>
-
【2】float + margin + (fix)
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{overflow: hidden;}
- .left,.rightright{position: relative;float: left;width: 100px;}
- .centerWrap{float: left; width:100%; margin: 0 -100px;}
- .center{margin: 0 120px;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="centerWrap" style="background-color: red;">
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- </div>
- </div>
-
思路2: inline-block
【1】inline-block + margin + calc
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{font-size: 0;}
- .left,.rightright,.center{display:inline-block; vertical-align: top;font-size: 16px;}
- .left,.rightright{width: 100px;}
- .center{width: calc(100% - 240px); margin: 0 20px;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- </div>
- </div>
-
【2】inline-block + margin + (fix)
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{font-size: 0;}
- .left,.rightright,.centerWrap{display:inline-block; vertical-align: top;font-size: 16px;}
- .left,.rightright{width: 100px;position:relative;}
- .centerWrap{width: 100%; margin: 0 -100px;}
- .center{margin: 0 120px;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="centerWrap" style="background-color: orange;">
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- </div>
- </div>
-
思路3: table
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{display: table; width: 100%;table-layout: fixed;}
- .left,.rightright,.centerWrap{display:table-cell;}
- .left,.rightright{width: 100px;}
- .center{margin: 0 20px;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="centerWrap" style="background-color: orange;">
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- </div>
- </div>
-
思路4: absolute
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{position: relative;height:40px;}
- .left,.rightright,.center{position: absolute;}
- .left{left: 0;width:100px;}
- .rightright{rightright: 0;width: 100px;}
- .center{left: 120px; rightright: 120px;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- </div>
- </div>
思路5: flex
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{display: flex;}
- .left,.rightright{width: 100px;}
- .center{flex: 1; margin: 0 20px;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- </div>
- </div>
-
2、多列定宽1侧自融入合理布局
这类合理布局与单列定宽单列自融入合理布局十分类似
思路1: float
【1】float + margin
缺陷是IE6-访问器的3px的bug,和当自融入列中有元素消除波动时,会使该元素不与左边波动元素同行业,从而出現文本下沉状况
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{overflow: hidden;}
- .left,.center{float: left;width: 100px;margin-right: 20px;}
- .rightright{margin-left: 240px;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
【2】float + margin + calc
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{overflow: hidden;}
- .left,.center{float: left;width: 100px;margin-right: 20px;}
- .rightright{float: left; width: calc(100% - 240px);}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
【3】float + margin + (fix)
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{overflow: hidden;}
- .left,.center{position: relative; float: left;width: 100px;margin-right: 20px;}
- .rightWrap{float: left; width: 100%; margin-left: -240px;}
- .rightright{margin-left:240px;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- <div class="rightWrap">
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
- </div>
-
【4】float + overflow
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{overflow: hidden;}
- .left,.center{position: relative; float: left;width: 100px;margin-right: 20px;}
- .rightright{overflow: hidden;zoom:1;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
思路2: inline-block
【1】inline-block + margin + calc
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{font-size: 0;}
- .left,.rightright,.center{display:inline-block; vertical-align: top;font-size: 16px;}
- .left,.center{width: 100px;margin-right:20px;}
- .rightright{width: calc(100% - 240px);}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
【2】inline-block + margin + (fix)
XML/HTML Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{font-size: 0;}
- .left,.rightWrap,.center{display:inline-block; vertical-align: top;font-size: 16px;}
- .left,.center{position: relative;width: 100px;margin-right:20px;}
- .rightWrap{width:100%; margin-left: ⑵40px;}
- .right{margin-left: 240px;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- <div class="rightWrap" style="background-color: green;">
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
- </div>
-
思路3: table
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{display: table; width: 100%;table-layout: fixed;}
- .leftWrap,.centerWrap,.rightright{display:table-cell;}
- .leftWrap,.centerWrap{width: 120px;}
- .left,.center{margin-right: 20px;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="leftWrap">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- </div>
- <div class="centerWrap">
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
思路4: absolute
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{position: relative;width:100%;height:40px;}
- .left{position: absolute;left:0;width:100px;}
- .center{position: absolute;left:120px;width: 100px;}
- .rightright{position: absolute;left:240px; rightright:0;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
思路5: flex
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{display: flex;}
- .left,.center{width:100px;margin-right:20px;}
- .rightright{flex:1;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
3、正中间定宽两边自融入合理布局
思路1: float
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{overflow: hidden;}
- .left{float: left;margin-right: 20px;}
- .center{float: left;width: 100px;margin-right: 20px;}
- .rightright{overflow: hidden;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
思路2: table
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{display: table; width: 100%;}
- .leftWrap{display: table-cell; width: 0.1%;}
- .centerWrap{display: table-cell;width: 120px;}
- .left,.center{margin-right: 20px;}
- .rightright{display:table-cell;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="leftWrap">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- <p>left</p>
- </div>
- </div>
- <div class="centerWrap">
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
思路3: flex
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{display: flex;}
- .left{margin-right: 20px;}
- .center{width: 100px;margin-right: 20px;}
- .rightright{flex: 1;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
4、1侧定宽多列自融入合理布局
思路1: float
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{overflow: hidden;}
- .left{float: left;width: 100px;margin-right: 20px;}
- .center{float: left;margin-right: 20px;}
- .rightright{overflow: hidden;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
思路2: table
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{display: table; width: 100%;}
- .leftWrap{display: table-cell; width: 120px;}
- .centerWrap{display: table-cell;width: 0.1%;}
- .left,.center{margin-right: 20px;}
- .rightright{display:table-cell;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="leftWrap">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- </div>
- <div class="centerWrap">
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
思路3: flex
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{display: flex;}
- .left{width: 100px;margin-right: 20px;}
- .center{margin-right: 20px;}
- .rightright{flex: 1;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
5、3列自融入合理布局
思路1: float
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{overflow: hidden;}
- .left,.center{float: left;margin-right: 20px;}
- .rightright{overflow: hidden;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
思路2: table
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{display: table; width: 100%;}
- .leftWrap,.centerWrap{display: table-cell;width: 0.1%;}
- .left,.center{margin-right: 20px;}
- .rightright{display:table-cell;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="leftWrap">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- <p>left</p>
- </div>
- </div>
- <div class="centerWrap">
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
思路3: flex
CSS Code拷贝內容到剪贴板
- <style>
- p{margin: 0;}
- .parent{display: flex;}
- .left,.center{margin-right: 20px;}
- .rightright{flex: 1;}
- </style>
-
XML/HTML Code拷贝內容到剪贴板
- <div class="parent" style="background-color: lightgrey;">
- <div class="left" style="background-color: lightblue;">
- <p>left</p>
- <p>left</p>
- </div>
- <div class="center" style="background-color: pink;">
- <p>center</p>
- <p>center</p>
- </div>
- <div class="right" style="background-color: lightgreen;">
- <p>right</p>
- <p>right</p>
- </div>
- </div>
-
总结
3列合理布局相近于大号的多列合理布局。不管是甚么合理布局方法,无外乎必须运用float、inline-block、table、absolute和flex这5种合理布局特性,随后再相互配合负margin、calc()涵数、bfc、提升构造等来完成合理布局
自融入包含两种状况:1种是宽度由內容撑开,1种是宽度全自动撑满父元素剩下宽度
可完成宽度由內容撑开的特性有: float、inline、inline-block、table、table-cell、absolute、fixed和flex
可完成宽度全自动撑满父元素剩下宽度的特性有: overflow(相互配合float)、table、flex
原文连接:http://www.cnblogs.com/xiaohuochai/p/5455905.html