亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

三欄布局總結(jié)

UCloud / 1220人閱讀

摘要:前言所謂三欄布局,即使指兩邊定寬,中間寬度自使用的布局方式,在過去,一直是一個(gè)麻煩的問題,為了解決這個(gè)問題,有各種奇技淫巧,最出名的非圣杯布局和雙飛翼布局莫屬了,但是自發(fā)展以來,特別是布局的支持度越來越好,這個(gè)問題也越來越淡化了正文浮動(dòng)布局

前言

所謂三欄布局,即使指兩邊定寬,中間寬度自使用的布局方式,在過去,一直是一個(gè)麻煩的問題,
為了解決這個(gè)問題,有各種奇技淫巧,最出名的非圣杯布局和雙飛翼布局莫屬了,但是自CSS3發(fā)展以來,
特別是flexbox布局的支持度越來越好,這個(gè)問題也越來越淡化了

正文

浮動(dòng)布局

HTML如下:
Left
Right
Main
CSS如下:
        body, html {
     height: 100%;
     padding: 0;
     margin: 0;
   }
   .left{
     background: red;
     width:100px;
     float: left;
     height:100%;
   }
   .main{
     background:blue;
     height:100%;
     margin-left:100px;
     margin-right:200px;
   }
   .right{
     background:red;
     width:200px;
     float: right;
     height:100%;
   }
浮動(dòng)布局代碼比較簡潔,同時(shí)也易于理解,但是浮動(dòng)往往會(huì)帶來塌陷等問題,而且浮動(dòng)渲染計(jì)算量

較大,在移動(dòng)端性能表現(xiàn)較差。另一個(gè)需要注意的是,main即中間部分需要放在最后,如果是left-main-right的方式

納悶main部分將會(huì)占滿剩余空間,right也就被擠到下一行了,相反,如果我們設(shè)置了right和left,在設(shè)置main
main部分將會(huì)流入left和right的下面,從而達(dá)到我們的目的

絕對(duì)定位

HTML如下:
left
main
right
CSS如下:
           body, html {
  height: 100%;
  padding: 0;
  margin: 0;
}

.left, .right {
  position: absolute;
  top: 0;
  background: red;
  height: 100%;
}

.left {
  left: 0;
  width: 100px;
}

.right {
  right: 0;
  width: 200px;
}

.main {
  margin-left: 100px;
  margin-right: 200px;
  height: 100%;
  background: blue;
}
該方法有個(gè)明顯的缺點(diǎn),就是如果中間欄含有最小寬度限制,或是含有寬度的內(nèi)部元素,當(dāng)瀏覽器寬度小到一定程度,會(huì)發(fā)生層重疊的情況

圣杯布局

圣杯布局巧妙的利用負(fù)margin來使元素上移,再結(jié)合相對(duì)定位,移到外層容器的padding位置,從而達(dá)到目標(biāo)

HTML如下:
main
left
right
CSS如下:
        body, html {
     height: 100%;
     padding: 0;
     margin: 0;
   }
   body{
     padding-left:100px;
     padding-right:200px;
   }
   .left{
     background: red;
     width:100px;
     float: left;
     margin-left:-100%;/*-100%:1、導(dǎo)致left超出body內(nèi)容(此時(shí)body內(nèi)容寬度只有100%-200-100)移到上層2:margin是根據(jù)父元素的寬度的,所以-100%就到上層body內(nèi)容的最前*/
     position: relative;
     left:-100px;/*-100px為了超出body內(nèi)容左邊,到達(dá)視窗最左*/
     height:100%;
   }
   .main{
     background: blue;
     width:100%;
     height:100%;
     float: left;
   }
   .right{
     background:red;
     width:200px;
     height:100%;
     float: left;
     margin-left:-200px;/*-200px為了超出body內(nèi)容到達(dá)上一層body內(nèi)容最后*/
     position: relative;
     right:-200px;/*-200px是為了向右偏移回到視窗最右*/
   }
   .container{
     width:500px;
     height:200px;
   }
問題:如果外層內(nèi)容盒寬度過小,不足以容納.left的寬度,那么.left依然會(huì)被保留在下層

雙飛翼布局

雙飛翼布局與圣杯布局原理類似,只不過是取消了外層的padding,從而使內(nèi)容盒等于padding-box從而避免了.left上移后需要設(shè)置left值移動(dòng)到padding

HTML如下:
main
left
right
CSS如下:
          body, html {
    height: 100%;
    padding: 0;
    margin: 0;
  }
  body{
    /*padding-left:100px;*/
    /*padding-right:200px;*/
  }
  .left{
    background: red;
    width:100px;
    float: left;
    margin-left:-100%;/*-100% 1:是為了超出body內(nèi)容(此時(shí)body內(nèi)容為100%)最左 2:到達(dá)body上層內(nèi)容最左也就是視窗最左
    /*position: relative;*/
    /*left:-100px;*/
    height:100%;
  }
  .main{
    background: blue;
    width:100%;
    height:100%;
    float: left;
  }
  .right{
    background:red;
    width:200px;
    height:100%;
    float: left;
    margin-left:-200px;/*-200px 1:是為了超出body內(nèi)容(此時(shí)body內(nèi)容為100%)最左 2:到達(dá)body上層內(nèi)容最右也就是視窗最右
    /*position: relative;*/
    /*right:-200px;*/
  }
  .inner{
    margin-left:100px;
    margin-right:200px;
  }
與圣杯布局不同的地方已用注釋指出,而雙飛翼問題與圣杯一樣

flexbox布局

flexbox布局可謂是最為理想的解決方案了,一方面,代碼簡潔易懂,另一方面,當(dāng)寬度太小時(shí),也可以通過伸縮,避免重疊

HTML如下:
main
left
right

CSS如下:
body,html{
   height:100%;
   padding: 0;
   margin:0;
 }
 body{
   display: flex;
   flex-flow:row nowrap;
 }
 .left{
   background: red;
   width:100px;
   height:100%;
   order:0;
 }
 .main{
   background-color: blue;
   flex:1;
   height:100%;
   order:1;
 }
 .right{
   background: red;
   width:200px;
   height:100%;
   order:2;
 }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/111868.html

Failed to recv the data from server completely (SIZE:0/8, REASON:closed)