移動(dòng)端開發(fā)系列——flex和響應(yīng)式布局

導(dǎo)語(yǔ)

這篇文章不是彈性布局和響應(yīng)式布局的語(yǔ)法教程否过,而是小羊在學(xué)習(xí)上述兩種布局時(shí)的一點(diǎn)心得體會(huì)午笛,所以建議各位看官舍得浪費(fèi)時(shí)間看這篇文章之前,對(duì)彈性布局和響應(yīng)式布局有一定了解苗桂,如果還沒有了解药磺,我在下面一節(jié)給出我在學(xué)習(xí)時(shí)所用的學(xué)習(xí)資料,以供童鞋們借鑒煤伟;

網(wǎng)頁(yè)布局的一些小見解

以小羊目前掌握的知識(shí)范疇癌佩,網(wǎng)頁(yè)布局大致經(jīng)歷了個(gè)階段,我融入了自己的理解:

  • 古典主義時(shí)期:使用table元素進(jìn)行布局便锨,當(dāng)時(shí)CSS功能特性還不是十分強(qiáng)大围辙,所以用table元素(原本是制作表格的)進(jìn)行布局,違背了HTML語(yǔ)義化的規(guī)范放案;
  • 新古典主義時(shí)期:Box-Model+Position+Float實(shí)現(xiàn)布局姚建,至今仍然使用,兼容性最好吱殉;
  • 現(xiàn)代主義時(shí)期:Flex布局+Responsive Design+grid掸冤,隨著移動(dòng)互聯(lián)網(wǎng)的高潮迭起催生了Flex和響應(yīng)式布局技術(shù)厘托,F(xiàn)lex比較使用與簡(jiǎn)單的線性布局,于是適應(yīng)大型網(wǎng)站開發(fā)的grid布局又應(yīng)運(yùn)而生稿湿;
  • 后現(xiàn)代主義時(shí)期:待續(xù)......
    網(wǎng)頁(yè)布局是們宏大精深的敘述主題铅匹,日后小羊會(huì)單獨(dú)開章節(jié)敘述;

flex布局和響應(yīng)式布局的學(xué)習(xí)資料

flex布局的一些學(xué)習(xí)筆記

相信童鞋們已經(jīng)看完阮一峰的教程崇棠,并且做了骰子demo伐憾;
但是看到那么多的屬性球化,不免頭大,小羊在此做一下不成熟的知識(shí)梳理:

  • 彈性盒模型是核心,主軸是一切元素主方向的布局關(guān)鍵厕倍,交叉軸是一切元素相對(duì)于主軸的交叉方向的布局關(guān)鍵;
    【注】切記主軸不一定是水平方向脂崔,使用flex-direction: column那么主軸就是垂直方向了成艘;
  • 總的來看,容器6個(gè)屬性哆档,項(xiàng)目也6個(gè)屬性蔽挠,剔除簡(jiǎn)寫的flex-flow和flex(初學(xué)不建議使用簡(jiǎn)寫),也就10個(gè)屬性瓜浸;
  • 和項(xiàng)目總體布局相justify-content和align-content具有相同的屬性:
justify-content相當(dāng)于移動(dòng)每一個(gè)項(xiàng)目的交叉軸
align-content相當(dāng)于移動(dòng)同在一行項(xiàng)目的主軸
flex-start || flex-end || center || space-between || space-around || (stretch)

code

  • align-items和align-self都是和項(xiàng)目在交叉軸對(duì)齊方式相關(guān)澳淑,一個(gè)是一整行,一個(gè)是單個(gè)項(xiàng)目插佛;通常是容器內(nèi)只有一行元素時(shí)使用其進(jìn)行布局杠巡;
flex-start || flex-end || center || baseline || stretch

code

  • 改變項(xiàng)目的寬度(flex-direction: column為高度)有flex-basis、flex-grow和flex-shrink
flex-basis功能最強(qiáng)大雇寇,可設(shè)置寬度的固定值或百分比氢拥;
flex-grow: 項(xiàng)目的伸展屬性,可按比例分配項(xiàng)目空間锨侯,這一特性也可以結(jié)合響應(yīng)式媒體查詢實(shí)現(xiàn)響應(yīng)式設(shè)計(jì)嫩海;
flex-shrink: 項(xiàng)目的縮放屬性,空間不足時(shí)是否縮放囚痴,通常使用默認(rèn)值1即可出革;

code

  • 為項(xiàng)目排序order,有時(shí)候在響應(yīng)式設(shè)計(jì)時(shí)需要在不同設(shè)備下微調(diào)項(xiàng)目順序渡讼,order可以較好實(shí)現(xiàn)
    code
  • flex-direction看后面的實(shí)例明白用處即可骂束,flex-wrap暫時(shí)沒有遇到具體業(yè)務(wù)場(chǎng)景耳璧,暫且擱置;

** 三欄布局為例**

  • 利用flex-grow動(dòng)態(tài)占據(jù)父元素空間
    以往三欄布局需要設(shè)置浮動(dòng)和清除浮動(dòng)
<div class="normal-box">
  <div class="normal-item">1</div>
  <div class="normal-item">2</div>
  <div class="normal-item">3</div>
</div>
.normal-box{
    border: 1px solid ;
    padding: 10px;
    margin: 10px;
    width: 300px;
    overflow: hidden;
}
.normal-item{
    box-sizing: border-box;
    float: left;
    width: 33.33%;
    height: 50px;
    border: 1px solid red;  
}

去掉一個(gè)item展箱,在清除的位置會(huì)“留白”旨枯,得重新設(shè)置元素的寬度;

normal-box

使用flex-box后混驰,只要給flex-item設(shè)置flex-grow: 1的屬性攀隔,那么元素就可以動(dòng)態(tài)變寬;

<div class="flex-box">
  <div class="flex-item">1</div>
  <div class="flex-item">2</div>
  <div class="flex-item">3</div>
</div>
<div class="flex-box">
  <div class="flex-item">1</div>
  <div class="flex-item">2</div>
</div>
<div class="flex-box">
  <div class="flex-item">1</div>
</div>
.flex-box{
    border: 1px solid ;
    padding: 10px;
    margin: 10px;
    display: flex;
    width: 300px;
}
.flex-item{
    flex-grow: 1;
    width: 100px;
    height: 50px;
    border: 1px solid red;
}

flex-box

code

  • 利用flex-basis比例化分配元素寬度
    上面的多欄布局栖榨,我們?yōu)樵卦O(shè)置固定寬度昆汹,實(shí)際可以通過flex-basis: x%為元素設(shè)置百分比寬度;
<div class="flex-box flex-box-1">
  <div class="flex-item">1</div>
  <div class="flex-item">2</div>
  <div class="flex-item">3</div>
</div>
<div class="flex-box flex-box-2">
  <div class="flex-item">1</div>
  <div class="flex-item">2</div>
</div>
.flex-box{
    border: 1px solid ;
    padding: 10px;
    margin: 10px;
    display: flex;
    width: 600px;
}
.flex-item{
    width: 100px;
    height: 50px;
    border: 1px solid red;
}
.flex-box-1{
    .flex-item:first-child{
        flex-basis: 20%;
    }
    .flex-item:nth-child(2){
        flex-basis: 60%
    }
    .flex-item:last-child{
        flex-basis: 20%;
    }
}
.flex-box-2{
    .flex-item:first-child{
        flex-basis: 50%;
    }
    .flex-item:last-child{
        flex-basis: 50%;
    }
}

code

  • 利用flex-direction實(shí)現(xiàn)元素的響應(yīng)式布局
    用過Bootstap框架的童鞋都知道婴栽,nav組件有一行布局和堆疊布局兩種满粗,可以利用flex-direction的特性實(shí)現(xiàn)這種效果;
<div class="flex-box flex-box-1">
  <div class="flex-item">1</div>
  <div class="flex-item">2</div>
  <div class="flex-item">3</div>
</div>
.flex-box{
    border: 1px solid ;
    padding: 10px;
    margin: 10px;
    display: flex;
    flex-warp: wrap;
}
.flex-item{
    flex-basis: 33.33%;
    height: 50px;
    border: 1px solid red;
}
@media (max-width:768px){
    .flex-box{
        flex-direction: column;
    }
}

code


響應(yīng)式媒體查詢的一些心得

響應(yīng)式媒體查詢無(wú)非就是條件樣式語(yǔ)句愚争,怎么理解映皆?


@media (min-width:768px) and (max-width: 992px){
    //條件樣式...
}

就是在不同設(shè)備條件(寬度或高度,設(shè)備類型轰枝,擺放方向等)去設(shè)置特定樣式捅彻;


總結(jié):

  • 關(guān)于flex語(yǔ)法可以歸納為10個(gè)屬性;
  • justify-content和align-content可以改變項(xiàng)目的主軸或交叉軸的位置鞍陨;
  • align-items和align-self可以改變一行項(xiàng)目或單個(gè)項(xiàng)目在交叉軸的對(duì)齊方式步淹;
  • flex-basis、flex-grow和flex-shrink可以改變項(xiàng)目的尺寸诚撵;
  • order改變項(xiàng)目的排序贤旷;
  • flex-direction改變項(xiàng)目組的方向,flex-wrap定義是否換行砾脑;
  • 響應(yīng)式媒體查詢無(wú)非就是設(shè)定條件樣式幼驶;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市韧衣,隨后出現(xiàn)的幾起案子盅藻,更是在濱河造成了極大的恐慌,老刑警劉巖畅铭,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氏淑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡硕噩,警方通過查閱死者的電腦和手機(jī)假残,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辉懒,你說我怎么就攤上這事阳惹。” “怎么了眶俩?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵莹汤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我颠印,道長(zhǎng)纲岭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任线罕,我火速辦了婚禮止潮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钞楼。我一直安慰自己喇闸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布窿凤。 她就那樣靜靜地躺著仅偎,像睡著了一般跨蟹。 火紅的嫁衣襯著肌膚如雪雳殊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天窗轩,我揣著相機(jī)與錄音夯秃,去河邊找鬼。 笑死痢艺,一個(gè)胖子當(dāng)著我的面吹牛仓洼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播堤舒,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼色建,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了舌缤?” 一聲冷哼從身側(cè)響起箕戳,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎国撵,沒想到半個(gè)月后陵吸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡介牙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年壮虫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片环础。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡囚似,死狀恐怖剩拢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谆构,我是刑警寧澤裸扶,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站搬素,受9級(jí)特大地震影響呵晨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜熬尺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一摸屠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粱哼,春花似錦季二、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至绊含,卻和暖如春桑嘶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背躬充。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工逃顶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人充甚。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓以政,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親伴找。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盈蛮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

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

  • H5移動(dòng)端知識(shí)點(diǎn)總結(jié) 閱讀目錄 移動(dòng)開發(fā)基本知識(shí)點(diǎn) calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,524評(píng)論 0 26
  • 移動(dòng)開發(fā)基本知識(shí)點(diǎn) 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,483評(píng)論 0 6
  • 閱讀目錄移動(dòng)開發(fā)基本知識(shí)點(diǎn) calc基本用法box-sizing的理解及使用理解display:box的布局理解f...
    張憲宇閱讀 1,532評(píng)論 0 1
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,759評(píng)論 1 92
  • 2009年技矮,W3C 提出了一種新的方案----Flex 布局抖誉,可以簡(jiǎn)便、完整穆役、響應(yīng)式地實(shí)現(xiàn)各種頁(yè)面布局寸五。目前,它已...
    丫3閱讀 563評(píng)論 0 0