代碼javascript
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>浮動實現三欄佈局</title> <style> .header { width: 100%; height: 200px; background-color: black; } .footer { width: 100%; height: 200px; background-color: black; } .left { float: left; width: 300px; height: 300px; background-color: aqua; } .right { float: right; width: 300px; height: 300px; background-color: blue; } .center { background-color: blueviolet; margin: 0 310px; height: 300px; } </style> </head> <body> <div class="header"></div> <div class="wrapper"> <div class="left"></div> <div class="right"></div> <div class="center"></div> </div> <div class="footer"></div> </body> </html>
代碼css
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>絕對定位實現三欄佈局</title> <style> .header { width: 100%; height: 200px; background-color: black; } .footer { width: 100%; height: 200px; background-color: black; } /* 變化部分 */ .left { position: absolute; left: 0; top: 0; width: 300px; height: 300px; background-color: aqua; } .right { position: absolute; right: 0; top: 0; width: 300px; height: 300px; background-color: blue; } .center { background-color: blueviolet; margin: 0 310px; height: 300px; } .wrapper { position: relative; } </style> </head> <body> <div class="header"></div> <div class="wrapper"> <div class="left"></div> <div class="right"></div> <div class="center"></div> </div> <div class="footer"></div> </body> </html>
中間欄優先渲染、運行任意列高度最高html
中間欄優先,浮動是掛了,絕對定位還能搶救下,先看看國外提出的聖盃佈局和淘寶玉伯的雙飛翼佈局前端
1.子元素都左浮動,
2.設置主體部分寬度爲 100%
3.設置左邊 margin-left 爲-100%讓其換到上一行,右邊 margin-left 爲負自己寬度
4.主容器設置左右 padding
5.設置三部分都爲相對定位,將兩部分移動到兩側留白,left 和 right 設置爲-寬度java
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>聖盃佈局</title> <style> .header { width: 100%; height: 200px; background-color: black; } .footer { width: 100%; height: 200px; background-color: black; } /* 變化部分 */ .left { position: relative; left: -310px; float: left; margin-left: -100%; width: 300px; height: 300px; background-color: aqua; } .right { position: relative; right: -310px; float: left; margin-left: -300px; width: 300px; height: 300px; background-color: blue; } .center { float: left; background-color: blueviolet; height: 300px; width: 100%; } .wrapper { padding: 0 320px; } .clearfix::after { display: block; content: ' '; height: 0; visibility: hidden; clear: both; } </style> </head> <body> <div class="header"></div> <div class="wrapper clearfix"> <div class="center"></div> <div class="left"></div> <div class="right"></div> </div> <div class="footer"></div> </body> </html>
與聖盃處理不一樣之處在於中間被遮擋內容的處理,在 main 中包裹一個 div 設置左右 margin 來處理git
代碼程序員
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>雙飛翼佈局</title> <style> .header { width: 100%; height: 200px; background-color: black; } .footer { width: 100%; height: 200px; background-color: black; } /* 變化部分 */ .left { float: left; margin-left: -100%; width: 300px; height: 300px; background-color: aqua; } .right { float: left; margin-left: -300px; width: 300px; height: 300px; background-color: blue; } .center { float: left; background-color: blueviolet; height: 300px; width: 100%; } .content { margin: 0 310px; height: 300px; background-color: brown; } .wrapper { } .clearfix::after { display: block; content: ' '; height: 0; visibility: hidden; clear: both; } </style> </head> <body> <div class="header"></div> <div class="wrapper clearfix"> <div class="center"> <div class="content"> </div> </div> <div class="left"></div> <div class="right"></div> </div> <div class="footer"></div> </body> </html>
代碼github
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>flex終極版</title> <style> .header { width: 100%; height: 200px; background-color: black; } .footer { width: 100%; height: 200px; background-color: black; } /* 變化部分 */ .left { order: -1; width: 300px; height: 300px; background-color: aqua; } .right { width: 300px; height: 300px; background-color: blue; } .center { background-color: blueviolet; height: 300px; flex: 1; } .wrapper { display: flex; } </style> </head> <body> <div class="header"></div> <div class="wrapper"> <div class="center"> </div> <div class="left"></div> <div class="right"></div> </div> <div class="footer"></div> </body> </html>
我習慣了對一個問題的發展過程進行了解,發掘每部分解決方案的優勢和缺點,固然,文章是有意編排了順序,是想你們有了一個從不完善的版本到完善版本過渡,也不能說拿到最大的錘子,就是幹,程序員要作的就是在當前情況選擇一個合適的方案。segmentfault
學習前端已經半年有餘了,css方面可以認識到張鑫旭大佬,js方面有< <你不知道的javascript> >這位良師,還有阮一峯大佬的ES6,讓我瞭解到前端的宿命就是精通html、css、js三門語言,任重而道遠,在讀了張大大的文章後有感,平時遇到問題,本身去嘗試,主動犯錯,瞭解不同的深度,而後把知識點經過本身的腦子轉換一下,重組爲本身的東西,更重要的是,我不是一個無私的利他主義者,我仍是須要一些鼓勵,更有動力輸出文章,但願能有一顆 小星星呀。 瀏覽器