前端的多列布局解決方案

前端頁面的布局經(jīng)歷了固定布局,表格布局刹悴,浮動行楞、定位布局, 彈性布局,網(wǎng)格布局的歷史演進土匀,各種布局方式在web發(fā)展的不同階段扮演你了不同的角色子房。

多列布局的解決方案我個人總結至少有5種之多,有的兼容性不錯但代碼結構復雜恒削,有的結構簡單但兼容性不佳池颈,但根據(jù)具體的使用環(huán)境和要求,總有一種解決方案是適合你的钓丰。

再介紹這5種解決方案之前躯砰,我想有必要廢話幾句介紹一下布局的演進史。

固定布局

這是一種很早的布局方案,就是固定容器的寬度和容器內(nèi)各個模塊的寬度.這種布局方式在現(xiàn)在的開發(fā)中仍然占據(jù)一席之地,尤其是在pc端,特別是企業(yè)站的開發(fā)中.
這個就不舉例了,任意打開一個企業(yè)站你都會發(fā)現(xiàn)它的影子.所以,不再贅述.

表格布局

這是一種較早期的web布局方案携丁,但現(xiàn)在已經(jīng)廢棄琢歇,不再使用兰怠。它其實就是使用我們常用的表格代碼如下:

<table>
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>

所以,這中布局方案不在贅述

浮動李茫、定位布局

浮動:是基于css現(xiàn)代web設計的重要功能之一揭保,是實現(xiàn)多列布局的基礎
屬性值: none(不浮動), left(向左)魄宏, right(向右)
說到浮動秸侣,當我們使用浮動,就要清除浮動宠互,如何清除浮動不是本文所要講述的內(nèi)容味榛,百度輸入關鍵詞‘清除浮動’,說解決方案的文章有很多。

定位:這個css屬性是建立元素布局所用的定位機制
屬性值:static予跌, absolute搏色, fixed, relative券册, inherit

使用并且分析過bootstra等p框架的同學都會有深刻的印象

總結: 以上三種方案的局限最突出點就是自適應性差频轿,為了達到某種布局效果免不了要使用hack,這個使用不恰當會導致某種無法言語的bug烁焙。

彈性布局

彈性布局css3引入的強大的布局方案航邢,因為是css3引入的所以存在兼容性問題,這個兼容問題主要存在pc端考阱,由于移動端移動設備更新?lián)Q代快翠忠,所以在開發(fā)中可以不用考慮這方面的問題鞠苟,至少在我所做的這種移動項目中沒有問題乞榨。各位看官根據(jù)自己項目的情況來定方案。

使用并分析過mui框架和aui等移動框架的同學會有更直觀的感受

網(wǎng)格布局

網(wǎng)格布局 已經(jīng)被w3c納入到了css3的一個布局模塊中, 被稱為css grid module当娱,這個布局解決方案是未來的web頁面布局的一個趨勢吃既,但是他的各瀏覽器兼容不佳,我目前實驗的支持的只有chrome跨细,firefox等有限的幾款瀏覽器,像IE瀏覽器和微軟現(xiàn)在新推出的斯巴達瀏覽器根本就不支持鹦倚,國產(chǎn)的瀏覽器360,qq也不支持冀惭,這種布局解決方案震叙,現(xiàn)在還停留在實驗階段。不過看好它前景的不在少數(shù)哦散休!

這個我現(xiàn)在沒有找到好的例子媒楼,不過我寫了一個demo,各位看官可以用chrome瀏覽器看一下戚丸。

多列布局解決方案

這幾種解決方案是有列間距的划址,沒有列間距的相對簡單一點。
ok,我們下邊開始我們的方案解決之旅~

最終這幾種解決方案要實現(xiàn)的效果皆如下圖所示:

col-1.png

1.固定布局 和 float布局(float:left夺颤,兼容性最優(yōu))

   html代碼
   
  <h3> float布局 外包一個box l-list-container overflow:hidden, l-list加寬一個l-list-item margin-right</h3>
  <div class="l-list-container">
      <div class="l-list">
          <div class="l-list-item"></div>
          <div class="l-list-item"></div>
          <div class="l-list-item"></div>
          <div class="l-list-item"></div>
      </div>
  </div>

css代碼

   .l-list-container {
       width: 1000px; height: auto; margin: 0 auto; overflow: hidden;  border: 1px solid #ff0000;
   }
   
   .l-list {
       width: 1020px; height: auto;  /* margin: 0 auto; */  border: 1px solid #cecece; overflow: hidden;
   }
   
   .l-list-item{
       width: 235px; height: 220px;  margin-right: 20px; float: left; background-color: #cecece;
    }

demo地址:demo中的第一個案例
2.固定布局 和 float布局(float:left痢缎;css3的輔助的優(yōu)化方案)(不支持css3的免談)

就是去掉容器l-list-container, 在樣式中加入如下代碼:

 .l-list-item:last-child {
    margin-right: 0;
 }

demo地址:demo中的第二個案例
3.轉(zhuǎn)換為內(nèi)聯(lián)元素模塊(display:inline-block,兼容性最優(yōu))

html代碼:

<h3>轉(zhuǎn)換為內(nèi)聯(lián)模塊 diaplay: inline-block </h3>
<div class="l-list3">
    <div class="l-list-item3"></div>
    <div class="l-list-item3"></div>
    <div class="l-list-item3"></div>
    <div class="l-list-item3"></div>
</div>

css代碼:

.l-list3 {
    width: 1000px;  height: auto;  margin: 0 auto;  font-size: 0; border: 1px solid #cecece;overflow: hidden;
}

.l-list-item3 {
    display: inline-block; width: 235px;  height: 220px; margin-right: 20px;  background-color: #cecece;
}

demo地址:demo中的第三個案例
4.table布局(display:table世澜,兼容性優(yōu))

補充說明:這個是我想的沒有在開發(fā)中大面積使用独旷,這個方案我感覺是最佳的,各個瀏覽器測試下來沒有發(fā)現(xiàn)問題寥裂,各位使用中發(fā)現(xiàn)問題势告,記得@我

就是在父容器中使用用display:table,在子容器中使用display:table-cell

col-1.png

demo地址:demo中的第四個案例
5.彈性布局(display:flex抚恒,兼容性分為兩部分咱台,pc端不佳,手機端優(yōu)秀)

它是在父容器中使用 display: flex; justify-content: space-between;

demo地址:demo中的第五個案例
6.網(wǎng)格布局(display:grid俭驮,兼容性不佳)

.l-list5 {
    width: 1000px; height: auto; display: grid; grid-column-gap: 20px; grid-template-columns: 235px 235px 235px 235px; grid-template-rows: 220px; margin: 0 auto; border: 1px solid #cecece;
}

demo地址:demo中的第六個案例

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末回溺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子混萝,更是在濱河造成了極大的恐慌遗遵,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逸嘀,死亡現(xiàn)場離奇詭異车要,居然都是意外死亡,警方通過查閱死者的電腦和手機崭倘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門翼岁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人司光,你說我怎么就攤上這事琅坡。” “怎么了残家?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵榆俺,是天一觀的道長。 經(jīng)常有香客問我坞淮,道長茴晋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任回窘,我火速辦了婚禮诺擅,結果婚禮上,老公的妹妹穿的比我還像新娘毫玖。我一直安慰自己掀虎,他們只是感情好凌盯,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著烹玉,像睡著了一般驰怎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上二打,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天县忌,我揣著相機與錄音,去河邊找鬼继效。 笑死症杏,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的瑞信。 我是一名探鬼主播厉颤,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凡简!你這毒婦竟也來了逼友?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤秤涩,失蹤者是張志新(化名)和其女友劉穎帜乞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筐眷,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡黎烈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了匀谣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片照棋。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖振定,靈堂內(nèi)的尸體忽然破棺而出必怜,到底是詐尸還是另有隱情,我是刑警寧澤后频,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站暖途,受9級特大地震影響卑惜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驻售,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一露久、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧欺栗,春花似錦毫痕、人聲如沸征峦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栏笆。三九已至,卻和暖如春臊泰,著一層夾襖步出監(jiān)牢的瞬間蛉加,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工缸逃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留针饥,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓需频,卻偏偏與公主長得像丁眼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子昭殉,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案户盯? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,751評論 1 92
  • <a name='html'>HTML</a> Doctype作用?標準模式與兼容模式各有什么區(qū)別? (1)饲化、<...
    clark124閱讀 3,474評論 1 19
  • 一:在制作一個Web應用或Web站點的過程中莽鸭,你是如何考慮他的UI、安全性吃靠、高性能硫眨、SEO、可維護性以及技術因素的...
    Arno_z閱讀 1,157評論 0 1
  • 今天立秋巢块。晚上十點礁阁,一陣大風過后,開始暴雨族奢。一場秋雨一場寒姥闭。明天大概要降溫了。
    陋室文竹閱讀 145評論 0 0
  • 在iOS的ImageView顯示圖片的時候越走,一般需要去設置contentMode的值: UIViewContent...
    dkStart閱讀 380評論 3 1