CSS三列布局的多种表现形式

不要怪女人现实,女人之所以现实,只因经历过爱情的伤生活的磨砺。只有懂得女人为何如此现实的男人,才能够给予女人一份期待中的现实生活。

一、两侧定宽中间自适应布局

思路一: float

【1】float + margin + calc

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{overflow:hidden;}
  4. .left,.rightright{float:left;width:100px;}
  5. .center{float:left;width:calc(100%-240px);margin:020px;}
  6. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. <p>center</p>
  8. </div>
  9. <divclass="right"style="background-color:lightgreen;">
  10. <p>right</p>
  11. </div>
  12. </div>

【2】float + margin + (fix)

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{overflow:hidden;}
  4. .left,.rightright{position:relative;float:left;width:100px;}
  5. .centerWrap{float:left;width:100%;margin:0-100px;}
  6. .center{margin:0120px;}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="centerWrap"style="background-color:red;">
  6. <divclass="center"style="background-color:pink;">
  7. <p>center</p>
  8. <p>center</p>
  9. </div>
  10. </div>
  11. <divclass="right"style="background-color:lightgreen;">
  12. <p>right</p>
  13. </div>
  14. </div>

思路二: inline-block

【1】inline-block + margin + calc

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{font-size:0;}
  4. .left,.rightright,.center{display:inline-block;vertical-align:top;font-size:16px;}
  5. .left,.rightright{width:100px;}
  6. .center{width:calc(100%-240px);margin:020px;}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. <p>center</p>
  8. </div>
  9. <divclass="right"style="background-color:lightgreen;">
  10. <p>right</p>
  11. </div>
  12. </div>

【2】inline-block + margin + (fix)

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{font-size:0;}
  4. .left,.rightright,.centerWrap{display:inline-block;vertical-align:top;font-size:16px;}
  5. .left,.rightright{width:100px;position:relative;}
  6. .centerWrap{width:100%;margin:0-100px;}
  7. .center{margin:0120px;}
  8. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="centerWrap"style="background-color:orange;">
  6. <divclass="center"style="background-color:pink;">
  7. <p>center</p>
  8. <p>center</p>
  9. </div>
  10. </div>
  11. <divclass="right"style="background-color:lightgreen;">
  12. <p>right</p>
  13. </div>
  14. </div>

思路三: table

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{display:table;width:100%;table-layout:fixed;}
  4. .left,.rightright,.centerWrap{display:table-cell;}
  5. .left,.rightright{width:100px;}
  6. .center{margin:020px;}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="centerWrap"style="background-color:orange;">
  6. <divclass="center"style="background-color:pink;">
  7. <p>center</p>
  8. <p>center</p>
  9. </div>
  10. </div>
  11. <divclass="right"style="background-color:lightgreen;">
  12. <p>right</p>
  13. </div>
  14. </div>

思路四: absolute

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{position:relative;height:40px;}
  4. .left,.rightright,.center{position:absolute;}
  5. .left{left:0;width:100px;}
  6. .rightright{rightright:0;width:100px;}
  7. .center{left:120px;rightright:120px;}
  8. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. <p>center</p>
  8. </div>
  9. <divclass="right"style="background-color:lightgreen;">
  10. <p>right</p>
  11. </div>
  12. </div>

思路五: flex

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{display:flex;}
  4. .left,.rightright{width:100px;}
  5. .center{flex:1;margin:020px;}
  6. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. <p>center</p>
  8. </div>
  9. <divclass="right"style="background-color:lightgreen;">
  10. <p>right</p>
  11. </div>
  12. </div>

二、两列定宽一侧自适应布局

这种布局与单列定宽单列自适应布局非常相似

思路一: float

【1】float + margin

缺点是IE6-浏览器的3px的bug,以及当自适应列中有元素清除浮动时,会使该元素不与左侧浮动元素同行,从而出现文字下沉现象

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{overflow:hidden;}
  4. .left,.center{float:left;width:100px;margin-right:20px;}
  5. .rightright{margin-left:240px;}
  6. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. </div>
  8. <divclass="right"style="background-color:lightgreen;">
  9. <p>right</p>
  10. <p>right</p>
  11. </div>
  12. </div>

【2】float + margin + calc

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{overflow:hidden;}
  4. .left,.center{float:left;width:100px;margin-right:20px;}
  5. .rightright{float:left;width:calc(100%-240px);}
  6. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. </div>
  8. <divclass="right"style="background-color:lightgreen;">
  9. <p>right</p>
  10. <p>right</p>
  11. </div>
  12. </div>

【3】float + margin + (fix)

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{overflow:hidden;}
  4. .left,.center{position:relative;float:left;width:100px;margin-right:20px;}
  5. .rightWrap{float:left;width:100%;margin-left:-240px;}
  6. .rightright{margin-left:240px;}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. </div>
  8. <divclass="rightWrap">
  9. <divclass="right"style="background-color:lightgreen;">
  10. <p>right</p>
  11. <p>right</p>
  12. </div>
  13. </div>
  14. </div>

【4】float + overflow

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{overflow:hidden;}
  4. .left,.center{position:relative;float:left;width:100px;margin-right:20px;}
  5. .rightright{overflow:hidden;zoom:1;}
  6. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. </div>
  8. <divclass="right"style="background-color:lightgreen;">
  9. <p>right</p>
  10. <p>right</p>
  11. </div>
  12. </div>

思路二: inline-block

【1】inline-block + margin + calc

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{font-size:0;}
  4. .left,.rightright,.center{display:inline-block;vertical-align:top;font-size:16px;}
  5. .left,.center{width:100px;margin-right:20px;}
  6. .rightright{width:calc(100%-240px);}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. </div>
  8. <divclass="right"style="background-color:lightgreen;">
  9. <p>right</p>
  10. <p>right</p>
  11. </div>
  12. </div>

【2】inline-block + margin + (fix)

XML/HTML Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{font-size:0;}
  4. .left,.rightWrap,.center{display:inline-block;vertical-align:top;font-size:16px;}
  5. .left,.center{position:relative;width:100px;margin-right:20px;}
  6. .rightWrap{width:100%;margin-left:-240px;}
  7. .right{margin-left:240px;}
  8. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. </div>
  8. <divclass="rightWrap"style="background-color:green;">
  9. <divclass="right"style="background-color:lightgreen;">
  10. <p>right</p>
  11. <p>right</p>
  12. </div>
  13. </div>
  14. </div>

思路三: table

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{display:table;width:100%;table-layout:fixed;}
  4. .leftWrap,.centerWrap,.rightright{display:table-cell;}
  5. .leftWrap,.centerWrap{width:120px;}
  6. .left,.center{margin-right:20px;}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="leftWrap">
  3. <divclass="left"style="background-color:lightblue;">
  4. <p>left</p>
  5. </div>
  6. </div>
  7. <divclass="centerWrap">
  8. <divclass="center"style="background-color:pink;">
  9. <p>center</p>
  10. </div>
  11. </div>
  12. <divclass="right"style="background-color:lightgreen;">
  13. <p>right</p>
  14. <p>right</p>
  15. </div>
  16. </div>

思路四: absolute

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{position:relative;width:100%;height:40px;}
  4. .left{position:absolute;left:0;width:100px;}
  5. .center{position:absolute;left:120px;width:100px;}
  6. .rightright{position:absolute;left:240px;rightright:0;}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. </div>
  8. <divclass="right"style="background-color:lightgreen;">
  9. <p>right</p>
  10. <p>right</p>
  11. </div>
  12. </div>

思路五: flex

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{display:flex;}
  4. .left,.center{width:100px;margin-right:20px;}
  5. .rightright{flex:1;}
  6. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. </div>
  8. <divclass="right"style="background-color:lightgreen;">
  9. <p>right</p>
  10. <p>right</p>
  11. </div>
  12. </div>

三、中间定宽两侧自适应布局

思路一: float

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{overflow:hidden;}
  4. .left{float:left;margin-right:20px;}
  5. .center{float:left;width:100px;margin-right:20px;}
  6. .rightright{overflow:hidden;}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. <p>left</p>
  5. </div>
  6. <divclass="center"style="background-color:pink;">
  7. <p>center</p>
  8. </div>
  9. <divclass="right"style="background-color:lightgreen;">
  10. <p>right</p>
  11. <p>right</p>
  12. </div>
  13. </div>

思路二: table

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{display:table;width:100%;}
  4. .leftWrap{display:table-cell;width:0.1%;}
  5. .centerWrap{display:table-cell;width:120px;}
  6. .left,.center{margin-right:20px;}
  7. .rightright{display:table-cell;}
  8. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="leftWrap">
  3. <divclass="left"style="background-color:lightblue;">
  4. <p>left</p>
  5. <p>left</p>
  6. </div>
  7. </div>
  8. <divclass="centerWrap">
  9. <divclass="center"style="background-color:pink;">
  10. <p>center</p>
  11. </div>
  12. </div>
  13. <divclass="right"style="background-color:lightgreen;">
  14. <p>right</p>
  15. <p>right</p>
  16. </div>
  17. </div>

思路三: flex

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{display:flex;}
  4. .left{margin-right:20px;}
  5. .center{width:100px;margin-right:20px;}
  6. .rightright{flex:1;}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. <p>left</p>
  5. </div>
  6. <divclass="center"style="background-color:pink;">
  7. <p>center</p>
  8. </div>
  9. <divclass="right"style="background-color:lightgreen;">
  10. <p>right</p>
  11. <p>right</p>
  12. </div>
  13. </div>

四、一侧定宽两列自适应布局

思路一: float

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{overflow:hidden;}
  4. .left{float:left;width:100px;margin-right:20px;}
  5. .center{float:left;margin-right:20px;}
  6. .rightright{overflow:hidden;}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. <p>center</p>
  8. </div>
  9. <divclass="right"style="background-color:lightgreen;">
  10. <p>right</p>
  11. <p>right</p>
  12. </div>
  13. </div>

思路二: table

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{display:table;width:100%;}
  4. .leftWrap{display:table-cell;width:120px;}
  5. .centerWrap{display:table-cell;width:0.1%;}
  6. .left,.center{margin-right:20px;}
  7. .rightright{display:table-cell;}
  8. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="leftWrap">
  3. <divclass="left"style="background-color:lightblue;">
  4. <p>left</p>
  5. </div>
  6. </div>
  7. <divclass="centerWrap">
  8. <divclass="center"style="background-color:pink;">
  9. <p>center</p>
  10. <p>center</p>
  11. </div>
  12. </div>
  13. <divclass="right"style="background-color:lightgreen;">
  14. <p>right</p>
  15. <p>right</p>
  16. </div>
  17. </div>

思路三: flex

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{display:flex;}
  4. .left{width:100px;margin-right:20px;}
  5. .center{margin-right:20px;}
  6. .rightright{flex:1;}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. </div>
  5. <divclass="center"style="background-color:pink;">
  6. <p>center</p>
  7. <p>center</p>
  8. </div>
  9. <divclass="right"style="background-color:lightgreen;">
  10. <p>right</p>
  11. <p>right</p>
  12. </div>
  13. </div>

五、三列自适应布局

思路一: float

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{overflow:hidden;}
  4. .left,.center{float:left;margin-right:20px;}
  5. .rightright{overflow:hidden;}
  6. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. <p>left</p>
  5. </div>
  6. <divclass="center"style="background-color:pink;">
  7. <p>center</p>
  8. <p>center</p>
  9. </div>
  10. <divclass="right"style="background-color:lightgreen;">
  11. <p>right</p>
  12. <p>right</p>
  13. </div>
  14. </div>

思路二: table

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{display:table;width:100%;}
  4. .leftWrap,.centerWrap{display:table-cell;width:0.1%;}
  5. .left,.center{margin-right:20px;}
  6. .rightright{display:table-cell;}
  7. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="leftWrap">
  3. <divclass="left"style="background-color:lightblue;">
  4. <p>left</p>
  5. <p>left</p>
  6. </div>
  7. </div>
  8. <divclass="centerWrap">
  9. <divclass="center"style="background-color:pink;">
  10. <p>center</p>
  11. <p>center</p>
  12. </div>
  13. </div>
  14. <divclass="right"style="background-color:lightgreen;">
  15. <p>right</p>
  16. <p>right</p>
  17. </div>
  18. </div>

思路三: flex

CSS Code复制内容到剪贴板
  1. <style>
  2. p{margin:0;}
  3. .parent{display:flex;}
  4. .left,.center{margin-right:20px;}
  5. .rightright{flex:1;}
  6. </style>
XML/HTML Code复制内容到剪贴板
  1. <divclass="parent"style="background-color:lightgrey;">
  2. <divclass="left"style="background-color:lightblue;">
  3. <p>left</p>
  4. <p>left</p>
  5. </div>
  6. <divclass="center"style="background-color:pink;">
  7. <p>center</p>
  8. <p>center</p>
  9. </div>
  10. <divclass="right"style="background-color:lightgreen;">
  11. <p>right</p>
  12. <p>right</p>
  13. </div>
  14. </div>



总结

  三列布局类似于大号的两列布局。无论是什么布局方式,无外乎需要应用float、inline-block、table、absolute和flex这五种布局属性,然后再配合负margin、calc()函数、bfc、增加结构等来实现布局

  自适应包括两种情况:一种是宽度由内容撑开,一种是宽度自动撑满父元素剩余宽度

  可实现宽度由内容撑开的属性有: float、inline、inline-block、table、table-cell、absolute、fixed和flex

  可实现宽度自动撑满父元素剩余宽度的属性有: overflow(配合float)、table、flex

原文链接:http://www.cnblogs.com/xiaohuochai/p/5455905.html

到此这篇关于CSS三列布局的多种表现形式就介绍到这了。青春,一个被赋予太多憧憬与希望的词汇。在很多人眼里青春如火,燃烧着激情与活力;青春如花,绽放着智慧和希望。但在我的眼里,青春就如一只迷途的鹿,徘徊在人生的十字路口,前路是满布的荆棘与彷徨。更多相关CSS三列布局的多种表现形式内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

标签: 表现形式 CSS