不使用 float 完成三欄式布局

不使用 float 完成三欄式布局,我分以下幾步走:

1. 定義出大體的 HTML 結構

<body>
<div>
  <div class="left">
    <img src="" alt="Team Logo">
    <span>Team name</span>
  </div>
  <div class="middle">
    <p>東風夜放花千樹,更吹落慎皱、星如雨。</p>
    <p>寶馬雕車香滿路,鳳簫聲動框都,玉壺光轉,一夜魚龍舞呵晨。</p>
    <p> 蛾兒雪柳黃金縷魏保,笑語盈盈暗香去熬尺。</p>
    <p> 眾里尋他千百度,驀然回首,那人卻在谓罗,燈火闌珊處粱哼。</p>

    <p> 沒有糾結,無關愛情妥衣,犯不著低眉瞬目的期期艾艾皂吮,只是極盡盛大的繁華著,跑馬觀花税手,一路精彩蜂筹。
      縱情灑脫的走過火樹銀花的日子,尋覓一縷暗香的希望芦倒,驀然回首艺挪,尚在,便持手兵扬。</p>
  </div>
  <div class="right">
    <img src="" alt="Person Logo">
    <img src="" alt="Person Logo">
    <img src="" alt="Person Logo">
    <img src="" alt="Person Logo">
  </div>

</div>
</body>

2. 調(diào)節(jié)各 div 背景麻裳、邊框等樣式

body > div {
    padding: 20px;
    background-color: #eeeeee;
    border: 1px solid #999;
}

.left {
    width: 200px;
    background-color: white;
}

img {
    width: 80px;
    height: 80px;
    background-color: #eeeeee;
    margin: 10px 10px;
    line-height: 80px;        /*為了讓圖片上的替代文字居中*/
}

.middle {
    background-color: white;
    text-align: left;
    padding: 10px;
}

.right {
    width: 120px;
    background-color: white;
}

效果如下:

設置背景、邊框等樣式

3. 給最大的 div 設置 display:flex;

body > div {
    padding: 20px;
    background-color: #eeeeee;
    border: 1px solid #999;
    display: flex;                          
    text-align: center;     /*為了讓文字居中*/
}

flex 布局之后

4. 給左右的 div 設置固定寬度器钟;

之前已經(jīng)設置過了津坑。

5. 給中間的 div 設置 flex:1;

.middle {
    flex: 1;
    background-color: white;
    text-align: left;
    padding: 10px;

flexflex-growflex-shrink傲霸、flex-basis的縮寫疆瑰。

5.1. flex 默認值 0 1 auto; 即

.item {
    flex-grow: 0;
    flex-shrink: 1;
    flex-basis: auto;
}

5.2. flex 取值為 none; 即

.item {
    flex-grow: 0;
    flex-shrink: 0;
    flex-basis: auto;
}

5.3. flex 取值為 atuo; 即

.item {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: auto;
}

5.4. flex 取值為 非負數(shù)字; 則該數(shù)字為 flex-grow 值,flex-shrink 取 1昙啄,flex-basis 取 0%穆役,即

.item {flex: 1;}
.item {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 0%;
}

flex-basis 屬性定義了在分配多余空間之前,項目占據(jù)的主軸空間(main size)梳凛。瀏覽器根據(jù)這個屬性耿币,計算主軸是否有多余空間。它的默認值為 auto韧拒,即項目的本來大小淹接。

設置中間的 div : flex:1; 體會與上一張圖的差別

PS : 我還是難以理解這兩張圖不同的原因。初步認為是將其他 div 寬度固定叛溢,給剩下的 div設置 flex:1;可以實現(xiàn)剩下的這個 div 寬度自適應蹈集。

flex-basis 規(guī)定的范圍取決于 box-sizing。這里主要討論以下 flex-basis 的取值情況:

  • auto:首先檢索該子元素的主尺寸雇初,如果主尺寸不為 auto,則使用值采取主尺寸之值减响;如果也是 auto靖诗,則使用值為 content郭怪。
  • content:指根據(jù)該子元素的內(nèi)容自動布局。有的用戶代理沒有實現(xiàn)取 content 值刊橘,等效的替代方案是 flex-basis 和主尺寸都取 auto鄙才。
  • 百分比:根據(jù)其包含塊(即伸縮父容器)的主尺寸計算。如果包含塊的主尺寸未定義(即父容器的主尺寸取決于子元素)促绵,則計算結果和設為 auto 一樣攒庵。
    參考鏈接:flex設置成1和auto有什么區(qū)別

所以我暫時是這么理解的:

  1. 如果將 flex 設為 auto ; 或者 不設值 使其為默認值:
    左 div : flex-basis: auto ; 值為 200px , 但是 里面的子元素最大占 100px ;
    右 div : flex-basis: auto ; 值為 120px, 同上,子元素最大占 100px;
  2. 如果中間 div 的 flex 為 1;
    它的 flex-basis: 0%; 即為 0 寬度败晴;才可以分配剩余空間的時候不影響固定寬度的div

5.5 當 flex 取值為一個長度或百分比浓冒,則視為 flex-basis 值,flex-grow 取 1尖坤,flex-shrink 取 1稳懒,有如下等同情況(注意 0% 是一個百分比而不是一個非負數(shù)字):

.item-1 {flex: 0%;}
.item-1 {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 0%;
}
.item-2 {flex: 24px;}
.item-1 {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 24px;
}

5.6 當 flex 取值為兩個非負數(shù)字,則分別視為 flex-growflex-shrink 的值慢味,flex-basis 取 0%场梆,即

.item {flex: 2 3;}
.item {
    flex-grow: 2;
    flex-shrink: 3;
    flex-basis: 0%;
}

6. 給左右中的 div 設置 height:100%;

.left {
    width: 200px;
    height: 100%;                               /* 去掉多余的高度空白*  /
    background-color: white;
}

.middle {
    flex: 1;
    margin: 0 20px;
    background-color: white;              
    text-align: left;
    padding: 10px;
    height: 100%;                 /* 去掉多余的高度空白*  /
}
最終效果
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市纯路,隨后出現(xiàn)的幾起案子或油,更是在濱河造成了極大的恐慌,老刑警劉巖驰唬,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顶岸,死亡現(xiàn)場離奇詭異,居然都是意外死亡定嗓,警方通過查閱死者的電腦和手機蜕琴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宵溅,“玉大人凌简,你說我怎么就攤上這事∈崖撸” “怎么了雏搂?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寇损。 經(jīng)常有香客問我凸郑,道長,這世上最難降的妖魔是什么矛市? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任芙沥,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘而昨。我一直安慰自己救氯,他們只是感情好,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布歌憨。 她就那樣靜靜地躺著着憨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪务嫡。 梳的紋絲不亂的頭發(fā)上甲抖,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音心铃,去河邊找鬼准谚。 笑死,一個胖子當著我的面吹牛于个,可吹牛的內(nèi)容都是我干的氛魁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼厅篓,長吁一口氣:“原來是場噩夢啊……” “哼秀存!你這毒婦竟也來了?” 一聲冷哼從身側響起羽氮,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤或链,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后档押,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澳盐,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年令宿,在試婚紗的時候發(fā)現(xiàn)自己被綠了叼耙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡粒没,死狀恐怖筛婉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情癞松,我是刑警寧澤爽撒,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站响蓉,受9級特大地震影響硕勿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜枫甲,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一源武、第九天 我趴在偏房一處隱蔽的房頂上張望扼褪。 院中可真熱鬧,春花似錦粱栖、人聲如沸迎捺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抄沮,卻和暖如春跋核,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叛买。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工砂代, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人率挣。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓刻伊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親椒功。 傳聞我的和親對象是個殘疾皇子捶箱,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

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

  • 前言 FlexBox是css3的一種新的布局方式,天生為解決布局問題而存在的它动漾,比起傳統(tǒng)的布局方式丁屎,我們使用Fle...
    zevei閱讀 1,420評論 23 3
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,472評論 0 6
  • H5移動端知識點總結 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,501評論 0 26
  • CSS 3中彈性盒布局的最新版概述 在CSS 3中,CSS Flexible Box模塊為一個非常重要的模塊旱眯,該模...
    吾名無雙閱讀 1,232評論 0 5
  • 在以前頁面布局多依賴于table晨川,但table標簽太多,于是有了absolute布局删豺,float布局等共虑,但它們小問...
    張歆琳閱讀 4,093評論 3 55