MDN-css教程——進(jìn)階知識

筆記類文章

完全摘錄自

舊的布局

通過像素px定義大小,在有些情況下向族,很不合適

最好通過百分比類型的(%呵燕、em、rem)

更多長度單位

布局相關(guān)屬性

  • text-align:內(nèi)容對齊方式
  • text-indent:內(nèi)容縮進(jìn)
    可以對任何文本類內(nèi)容炸枣,它們倆會被元素的子元素繼承
  • 浮動(float)
    通過clean清楚浮動

  • 位置(position)

    • relative
    • fixed
    • absolute
      為元素指定相對于其父元素的確切位置。只有在父元素使用 relative, fixed or absolute 時才有效弄唧。你可以為任何父元素指定 position: relative;因為它不會產(chǎn)生移動
    • static(默認(rèn)值)

和 position 屬性(除了 static)一起使用的, 有下列屬性: top, right, bottom, left, width, height 通過設(shè)置它們來指定元素的位置或大小适肠。

position屬性,是一個很大的內(nèi)容候引,標(biāo)準(zhǔn)中有兩個章節(jié)來描述

display

displaycss中侯养,最重要的用于控制布局的屬性。

  • block
  • inline
  • none
    display:none 通常被 JavaScript 用來在不刪除元素的情況下隱藏或顯示元素澄干。
    它和 visibility 屬性不一樣逛揩。把 display 設(shè)置成 none 元素不會占據(jù)它本來應(yīng)該顯示的空間柠傍,但是設(shè)置成 visibility: hidden; 還會占據(jù)空間。
  • 其他值
    例如list-item``table更多屬性值

margin: auto

固定width辩稽,加margin: 0 auto;實現(xiàn)左右居中

當(dāng)然惧笛,也可以利用它實現(xiàn)垂直居中

max-width

通過最大寬度限制,保證一定的響應(yīng)式

IE7+均支持逞泄,放心用

盒模型

理解盒模型有利于布局設(shè)計

當(dāng)你設(shè)置了元素的寬度患整,實際展現(xiàn)的元素卻超出你的設(shè)置:這是因為元素的邊框和內(nèi)邊距會撐開元素。

box-sizing

主要是border-box:此元素的內(nèi)邊距和邊框不再會增加它的寬度

* {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

注意兼容性 IE8+

百分比

百分比是相對于包含塊來說的喷众。

媒體查詢

通過百分比各谚,媒體查詢,可以設(shè)計出響應(yīng)式的布局

meida viewport

inline-block

有時候到千,inline-block是個好方法

你可以使用 inline-block 來布局昌渤。有一些事情需要你牢記:

  • vertical-align 屬性會影響到 inline-block 元素,你可能會把它的值設(shè)置為 top 憔四。
  • 你需要設(shè)置每一列的寬度
  • 如果HTML源代碼中元素之間有空格膀息,那么列與列之間會產(chǎn)生空隙

column

這里有一系列新的CSS屬性,可以幫助我們很輕松的實現(xiàn)文字的多列布局加矛。

.three-column {
  padding: 1em;
  -moz-column-count: 3;
  -moz-column-gap: 1em;
  -webkit-column-count: 3;
  -webkit-column-gap: 1em;
  column-count: 3;
  column-gap: 1em;
}

注意使用前綴

多用于文字布局履婉,使用它作為頁面布局時候,很容易亂
column更多的信息

flexbox布局

兼容性:IE10+ 常用瀏覽器斟览,都已經(jīng)支持

任何一個容器毁腿,都可以指定Flex布局

.box {
  display: flex;
}
.inline-box {
  display: inline-flex;
}
.Webkit-box {
  display: -webkit-flex;
  display: flex;
}

設(shè)為Flex布局以后,子元素的float苛茂、clear和vertical-align屬性將失效已烤。

基本概念

采用Flex布局的元素,稱為Flex容器(flex container)妓羊,簡稱"容器"胯究。它的所有子元素自動成為容器成員,稱為Flex項目(flex item)躁绸,簡稱"項目"裕循。


flex布局

容器默認(rèn)存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點)叫做main start净刮,結(jié)束位置叫做main end剥哑;交叉軸的開始位置叫做cross start,結(jié)束位置叫做cross end淹父。
項目默認(rèn)沿主軸排列株婴。單個項目占據(jù)的主軸空間叫做main size,占據(jù)的交叉軸空間叫做cross size暑认。

容器的屬性

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

flex-direction屬性

flex-direction屬性決定主軸的方向(即項目的排列方向)困介。

.box {
  flex-direction: row | row-reverse | column | column-reverse;
}
bg2015071005.png

它的四個值:

  • row(默認(rèn)):主軸為水平方向大审,從到右
  • row-reverse: 主軸為水平方向,從到左
  • column: 主軸為垂直方向座哩,起點在
  • column-reverse: 主軸為垂直方向徒扶,起點在

flex-wrap屬性

默認(rèn)情況下,項目都排在一條線(又稱"軸線")上八回。flex-wrap屬性定義酷愧,如果一條軸線排不下,如何換行缠诅。

如何換行
.box{
  flex-wrap: nowrap | wrap | wrap-reverse;
}
  • nowrap(默認(rèn)):不換行溶浴。
不換行
  • wrap:換行,第一行在上邊
第一行在上
  • wrap-reverse:換行管引,第一行在下方
第一行在下邊

flex-flow

flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式士败,默認(rèn)值為row nowrap

.box {
  flex-flow: <flex-direction> || <flex-wrap>;
}

justify-content屬性

justify-content屬性定義了項目在主軸上的對齊方式。

.box {
  justify-content: flex-start | flex-end | center | space-between | space-around;
}
項目對齊方式

它可能取5個值褥伴,具體對齊方式與軸的方向有關(guān)谅将。下面假設(shè)主軸為從左到右。

  • flex-start(默認(rèn)值):左對齊
  • flex-end:右對齊
  • center:居中
  • space-between:兩端對齊重慢,項目之間的間隔都相等
  • space-around:每個項目兩側(cè)的間隔相等饥臂,這就是說,項目之間的講個似踱,比隅熙,項目與包含塊邊框的間隔大一倍。

align-items屬性

align-items 屬性定義項目在交叉軸上如何對齊核芽。

.box {
  align-items: flex-start | flex-end | center | baseline | stretch;
}
交叉軸上對齊

它可能取5個值囚戚。具體的對齊方式與交叉軸的方向有關(guān),下面假設(shè)交叉軸從上到下轧简。

  • flex-start:交叉軸的起點對齊驰坊。
  • flex-end:交叉軸的終點對齊。
  • center:交叉軸的中點對齊哮独。
  • baseline: 項目的第一行文字的基線對齊拳芙。
  • stretch(默認(rèn)值):如果項目未設(shè)置高度或設(shè)為auto,將占滿整個容器的高度皮璧。

align-content屬性

align-content屬性定義了多根軸線的對齊方式舟扎。如果項目只有一根軸線,該屬性不起作用恶导。

.box {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
align-content

可能取值:

  • flex-start:與交叉軸的起點對齊浆竭。
  • flex-end:與交叉軸的終點對齊浸须。
  • center:與交叉軸的中點對齊惨寿。
  • space-between:與交叉軸兩端對齊邦泄,軸線之間的間隔平均分布。
  • space-around:每根軸線兩側(cè)的間隔都相等裂垦。所以顺囊,軸線之間的間隔比軸線與邊框的間隔大一倍。
  • stretch(默認(rèn)值):軸線占滿整個交叉軸

項目的屬性

以下6個屬性設(shè)置在項目上蕉拢。

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

order屬性

order屬性定義項目的排列順序特碳。數(shù)值越小,排列越靠前晕换,默認(rèn)為0午乓。

.item {
  order: <integer>;
}
order屬性

flex-grow屬性

flex-grow屬性定義項目的放大比例,默認(rèn)為0闸准,即如果存在剩余空間益愈,也不放大。

.item {
  flex-grow: <number>; /* default 0 */
}
flex-grow屬性

如果所有項目的flex-grow屬性都為1夷家,則它們將等分剩余空間(如果有的話)蒸其。如果一個項目的flex-grow屬性為2,其他項目都為1库快,則前者占據(jù)的剩余空間將比其他項多一倍摸袁。

flex-shrink屬性

flex-shrink屬性定義了項目的縮小比例,默認(rèn)為1义屏,即如果空間不足靠汁,該項目將縮小。

.item {
  flex-shrink: <number>; /* default 1 */
}

如果所有項目的flex-shrink屬性都為1湿蛔,當(dāng)空間不足時膀曾,都將等比例縮小。如果一個項目的flex-shrink屬性為0阳啥,其他項目都為1添谊,則空間不足時,前者不縮小察迟。
負(fù)值對該屬性無效斩狱。

flex-basis屬性

flex-basis屬性定義了在分配多余空間之前,項目占據(jù)的主軸空間(main size)扎瓶。瀏覽器根據(jù)這個屬性所踊,計算主軸是否有多余空間。它的默認(rèn)值為auto概荷,即項目的本來大小秕岛。

.item {
  flex-basis: <length> | auto; /* default auto */
}

它可以設(shè)為跟width或height屬性一樣的值(比如350px),則項目將占據(jù)固定空間。

flex 屬性

flex屬性是flex-grow, flex-shrinkflex-basis的簡寫继薛,默認(rèn)值為0 1 auto修壕。后兩個屬性可選。

.item {
  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}

該屬性有兩個快捷值:auto (1 1 auto) 和 none (0 0 auto)遏考。

建議優(yōu)先使用這個屬性慈鸠,而不是單獨寫三個分離的屬性,因為瀏覽器會推算相關(guān)值灌具。

align-self屬性

align-self屬性允許單個項目有與其他項目不一樣的對齊方式青团,可覆蓋align-items屬性。默認(rèn)值為auto咖楣,表示繼承父元素的align-items屬性督笆,如果沒有父元素,則等同于stretch诱贿。

.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
align-self

該屬性可能取6個值胖腾,除了auto,其他都與align-items屬性完全一致瘪松。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咸作,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子宵睦,更是在濱河造成了極大的恐慌记罚,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壳嚎,死亡現(xiàn)場離奇詭異桐智,居然都是意外死亡,警方通過查閱死者的電腦和手機烟馅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門说庭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人郑趁,你說我怎么就攤上這事刊驴。” “怎么了寡润?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵耸弄,是天一觀的道長审胸。 經(jīng)常有香客問我完丽,道長励七,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任变抽,我火速辦了婚禮础拨,結(jié)果婚禮上氮块,老公的妹妹穿的比我還像新娘。我一直安慰自己诡宗,他們只是感情好雇锡,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著僚焦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪曙痘。 梳的紋絲不亂的頭發(fā)上芳悲,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音边坤,去河邊找鬼名扛。 笑死,一個胖子當(dāng)著我的面吹牛茧痒,可吹牛的內(nèi)容都是我干的肮韧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼旺订,長吁一口氣:“原來是場噩夢啊……” “哼弄企!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起区拳,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拘领,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后樱调,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體约素,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年笆凌,在試婚紗的時候發(fā)現(xiàn)自己被綠了圣猎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡乞而,死狀恐怖送悔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情爪模,我是刑警寧澤放祟,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站呻右,受9級特大地震影響跪妥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜声滥,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一眉撵、第九天 我趴在偏房一處隱蔽的房頂上張望侦香。 院中可真熱鬧,春花似錦纽疟、人聲如沸罐韩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽散吵。三九已至,卻和暖如春蟆肆,著一層夾襖步出監(jiān)牢的瞬間矾睦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工炎功, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留枚冗,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓蛇损,卻偏偏與公主長得像赁温,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子淤齐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

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

  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,460評論 0 6
  • H5移動端知識點總結(jié) 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,424評論 0 26
  • 網(wǎng)頁布局(layout)是CSS的一個重點應(yīng)用股囊。 一、Flex布局是什么更啄? Flex是Flexible Box的縮...
    抱著熊喵啃什么閱讀 633評論 0 4
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案毁涉? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,734評論 1 92
  • 網(wǎng)頁布局(layout)是CSS的一個重點應(yīng)用。 布局的傳統(tǒng)解決方案锈死,基于盒狀模型贫堰,依賴display屬性 +po...
    老夫的天閱讀 684評論 2 6