• <tfoot id="ukgsw"><input id="ukgsw"></input></tfoot>
    
    • 久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
      分享

      display 的 32 種寫(xiě)法

       滄瀟雨浪 2018-01-17

      作者:張京

      https://segmentfault.com/a/1190000012833458


      你知道『回』字有四種寫(xiě)法,但你知道 display32種寫(xiě)法嗎?今天我們一一道來(lái),讓你一次性完全掌握 display,從此再也不用對(duì)它發(fā)愁。

      從大的分類來(lái)講, display32種寫(xiě)法可以分為 6個(gè)大類,再加上 1個(gè)全局類,一共是 7大類:

      • 外部值

      • 內(nèi)部值

      • 列表值

      • 屬性值

      • 顯示值

      • 混合值

      • 全局值

      外部值

      所謂外部值,就是說(shuō)這些值只會(huì)直接影響一個(gè)元素的外部表現(xiàn),而不影響元素里面的兒子級(jí)孫子級(jí)元素的表現(xiàn)。

      display: block;

      這個(gè)值大家不陌生,我們最熟悉的 <div>缺省就是這個(gè)值,最基本的塊級(jí)元素,屬于 css入門初學(xué)者都知道的概念,只要是容器類型的元素基本都是這個(gè)值。除 <div>之外,還有 <h1>到 <h6>, <p>, <form>, <header>, <footer>, <section>, <article>天生都是這個(gè)值。

      display: inline;

      這個(gè)值大家也不陌生,行內(nèi)元素嘛,只要是個(gè)行內(nèi)元素都是這個(gè)值,最典型的是 <span>,還有 <a>, <img>,以及古代 html語(yǔ)言當(dāng)中的 <b>, <i>都屬于這一類型。

      display: run-in;

      這個(gè)值有點(diǎn)奇怪,通常沒(méi)人用它,但你可以知道它。因?yàn)槌?IE和 Opera支持它以外,其他所有主流瀏覽器包括 Chrome, Safari, Firefox全都對(duì)它置若罔聞。這東西說(shuō)白了也沒(méi)什么神秘,它的意思就是說(shuō)如果我們命令一個(gè)元素 run-in,中文意思就是『 闖入』!那么這個(gè)元素就直接闖入下一行。比如說(shuō)這樣:

      寫(xiě)起來(lái)大概就是這樣:

      1.    <div class='a'>aaa</div>

      2.    <div class='b'>bbb</div>

      3.    .a {

      4.      font-size: 36px;

      5.      display: run-in;

      6.    }

      這有什么用呢?我們拿 span設(shè)置 font-size一樣可以實(shí)現(xiàn)這個(gè)效果,就讓 IE自己跟自己玩去吧!說(shuō)實(shí)話,在人力資源如此寶貴的今天, IE的產(chǎn)品經(jīng)理不知腦子是不是進(jìn)水了,不派工程師去實(shí)現(xiàn)那么多比這重要的多得多的特性,卻花時(shí)間做這么個(gè)沒(méi)用的玩意兒,難道工程師的時(shí)間不是金錢嗎?難怪市場(chǎng)占有率連年下滑。

      內(nèi)部值

      談完了外部值,我們來(lái)看看內(nèi)部值。這一組值比較有意思了,在 css3如火如荼的今天,你要玩不轉(zhuǎn)這些值,怕是哪兒也找不到工作的。內(nèi)部值主要是用來(lái)管束自己下屬的兒子級(jí)元素的排布的,規(guī)定它們或者排成 S形,或者排成 B形這樣的。

      display: flow;

      含義不清,實(shí)驗(yàn)室階段產(chǎn)品, Chrome不支持。如果還不夠說(shuō)服你暫時(shí)不要碰它的話,試著理解以下英文原文:

      If its outer display type is inline or run-in, and it is participating in a block or inline formatting context, then it generates an inline box. Otherwise it generates a block container box.

      display: flow-root;

      不同于剛才談到的 flow,現(xiàn)在用 flow-root的漸漸多起來(lái)了,因?yàn)樗梢該纹鸨荒?float掉的塊級(jí)元素的高度。外容器本來(lái)是有高度的,就像這樣:

      1.    <div class='container container1'>

      2.      <div class='item'></div>

      3.      Example one

      4.    </div>

      5.    .container {

      6.        border: 2px solid #3bc9db;

      7.        border-radius: 5px;

      8.        background-color: #e3fafc;

      9.        width: 400px;

      10.        padding: 5px;

      11.    }

      12.    .item {

      13.        height: 100px;

      14.        width: 100px;

      15.        background-color: #1098ad;

      16.        border: 1px solid #0b7285;

      17.        border-radius: 5px;

      18.    }

      結(jié)果因?yàn)槟阆胱屇且恍凶稚先ィ谑悄憬o .item加了一個(gè) float:left;結(jié)果就成這樣了,外容器高度掉了,這不是很多人常犯的錯(cuò)誤嗎?

      現(xiàn)在我們給 .container加上 display:flow-root;再看一下:

      喏,外容器高度又回來(lái)了,這效果是不是杠杠的?

      那位同學(xué)說(shuō),我們用 clear:both;不是一樣可以達(dá)到這效果嗎?

      1.    .container::after {

      2.        content: '';

      3.        clear: both;

      4.        display: table;

      5.    }

      小明,請(qǐng)你出去!我們?cè)谥v display:flow-root;,不是在講 clear:both;

      display: table;

      這一個(gè)屬性,以及下面的另外 8個(gè)與 table相關(guān)的屬性,都是用來(lái)控制如何把 div顯示成 table樣式的,因?yàn)槲覀儾幌矚g <table>這個(gè)標(biāo)簽嘛,所以我們想把所有的 <table>標(biāo)簽都換成 <div>標(biāo)簽。 <div>有什么好?無(wú)非就是能自動(dòng)換行而已,但其實(shí)你完全可以做一個(gè) <table><tr><td>標(biāo)簽,把它全都替換成 display:block;也可以自動(dòng)折行,只不過(guò)略微麻煩而已。

      關(guān)于 display:table;的詳細(xì)用法,大家可以參考這篇文章,這里就不細(xì)說(shuō)了。

      display: flex;

      敲黑板,劃重點(diǎn)!作為新一代的前端工程師,這個(gè)屬性你必須爛熟于胸衣中,哦,錯(cuò)了,是胸中。 display:flex;以及與它相關(guān)聯(lián)的一系列屬性: flex-direction, flex-wrap, flex-flow, justify-content, align-items, align-content,并且包括所有這些屬性的取值,都是你需要反復(fù)研磨的。 2009年誕生的這個(gè)屬性可以說(shuō)是不亞于 css界一場(chǎng)蒸汽機(jī)誕生一樣的工業(yè)革命,它的誕生標(biāo)志著馬車一樣的 float被徹底拋進(jìn)歷史的垃圾堆。

      關(guān)于它的詳情,會(huì)中文的可以參考阮一峰的這篇文章,但我認(rèn)為,格式編排的更好還是 csstrick上的這篇文章。沒(méi)有一張圖能完整地展現(xiàn) flex的神韻,就放這張我比較喜歡的圖片吧:

      display: grid;

      會(huì) flex很吊嗎?會(huì) grid更吊哦!也許這就是下次前端面試的重點(diǎn)哦!

      grid布局,中文翻譯為 網(wǎng)格布局。學(xué)習(xí) grid布局有兩個(gè)重點(diǎn):一個(gè)重點(diǎn)是 grid布局引入了一個(gè)全新的單位: fr,它是 fraction分?jǐn)?shù))的縮寫(xiě),所以從此以后,你的兵器庫(kù)里除了 px, em, rem, 百分比這些常見(jiàn)兵器以及 vw, vh這些新式武器之外,又多了一樣旁門暗器 fr,要想用好 grid,必須充分掌握 fr。另一個(gè)重點(diǎn)是 斜杠操作符,這可不是 分?jǐn)?shù)哦。它表示的是 起始位置結(jié)束位置。比如說(shuō) 3/4,這可不是 四分之三的意思,這是指一個(gè)元素從第 3行開(kāi)始,到第 4行結(jié)束,但又不包括第 4行。

      同樣,與 grid相關(guān)聯(lián)的也有一大堆旁門屬性,是在學(xué)習(xí) display:grid;的同時(shí)必須掌握的。包括 grid, grid-column-start, grid-column-end, grid-row-start, grid-row-end, grid-template, grid-template-columns, grid-template-rows, grid-template-areas, grid-gap, grid-column-gap, grid-row-gap, grid-auto-columns, grid-auto-rows, grid-auto-flow, grid-column, grid-row。不能詳述,關(guān)于這個(gè)寫(xiě)起來(lái)又是一大篇文章。詳情還是參考csstrick上這篇文章,講得非常細(xì)致非常清楚。

      display: ruby;

      ruby這個(gè)取值對(duì)于我們亞洲人來(lái)說(shuō)其實(shí)是非常有用的一個(gè)東西,但是目前除了 Firefox以外其它瀏覽器對(duì)它的支持都不太好。簡(jiǎn)而言之, display:ruby;的作用就是可以做出下面這樣的東西:

      很好的東西,對(duì)吧?如果可以用的話,對(duì)我國(guó)的小學(xué)教育可以有極大的促進(jìn)。但可惜我們現(xiàn)在暫時(shí)還用不了。

      ruby這個(gè)詞在英語(yǔ)里的意思是 紅寶石,但在日語(yǔ)里是 ルビ,翻譯成中文是 旁注標(biāo)記的意思,我們中文的旁注標(biāo)記就是漢語(yǔ)拼音。可以想見(jiàn),這個(gè)標(biāo)準(zhǔn)的制定者肯定是日本人,如果是我們中國(guó)人的話,那這個(gè)標(biāo)簽就不是 ruby,而是 pinyin了。還有一個(gè) ruby語(yǔ)言,發(fā)明者也是一個(gè)日本人,和 html里這個(gè) ruby是兩碼事,不要搞混了。

      ruby的語(yǔ)法大致如下:

      display: subgrid;

      201586日, W3C的級(jí)聯(lián)樣式單( CSS)工作組( CascadingStyleSheetsWorkingGroup)發(fā)布了 CSS網(wǎng)格布局模塊第一級(jí)CSSGridLayoutModuleLevel1)的工作草案。在這個(gè)草案里規(guī)定了上一節(jié)我們講到的 display:grid;的方案。而 display:subgrid;是屬于 2017119日發(fā)布的非正式的CSS網(wǎng)格布局模塊第二級(jí)的內(nèi)容。所以這是一個(gè)非常新的草案,并且圍繞它的爭(zhēng)議從來(lái)也沒(méi)有斷過(guò)。

      subgrid總的思想是說(shuō)大網(wǎng)格里還可以套小網(wǎng)格,互相不影響。但如果 grid里可以再套 subgrid的話,那我 subgrid里還想再套 subgrid怎么辦? subsubgrid嗎?況且,到底是 grid:subgrid;還是 display:subgrid;這個(gè)也沒(méi)有達(dá)成共識(shí),關(guān)于此一系列的爭(zhēng)議,感興趣的同學(xué)可以看看這篇文章,英語(yǔ)好的可以看這篇。

      列表值

      display: list-item;

      display:list-item;display:table;一樣,也是一幫痛恨各種 html標(biāo)簽,而希望只使用 <div>來(lái)寫(xiě)遍一切 html的家伙搞出來(lái)的鬼東西,實(shí)際使用極少,效果就是這樣:

      看,你用 <ul><li>能實(shí)現(xiàn)的效果,他可以用 <div>實(shí)現(xiàn)出來(lái),就是這個(gè)作用。

      屬性值

      屬性值一般是附屬于主值的,比如主值里設(shè)置了 display:table;,就可以在子元素里使用 display:table-row-group;等等屬性,不過(guò)并不絕對(duì)。關(guān)于它們的作用,主要參考主值就夠了。

      display: table-row-group;

      詳情參考display: table;。

      display: table-header-group;

      詳情參考display: table;。

      display: table-footer-group;

      詳情參考display: table;。

      display: table-row;

      詳情參考display: table;。

      display: table-cell;

      詳情參考display: table;。這個(gè)屬性有必要詳細(xì)說(shuō)說(shuō),因?yàn)樗耆梢詥为?dú)應(yīng)用,用在高度不固定元素的垂直居中上,詳情請(qǐng)見(jiàn)張?chǎng)涡竦倪@篇文章。效果如下圖所示:

      display: table-column-group;

      詳情參考display: table;。

      display: table-column;

      詳情參考display: table;。

      display: table-caption;

      詳情參考display: table;。

      display: ruby-base;

      詳情參考display: ruby;。

      display: ruby-text;

      詳情參考display: ruby;。

      display: ruby-base-container;

      詳情參考display: ruby;。

      display: ruby-text-container;

      詳情參考display: ruby;。

      顯示值

      MDN里把它叫做 <display-box>values盒子值),我把它叫做 顯示值,主要是為了便于理解。

      display: contents;

      這大概是 2018年年初最令人喜大普達(dá)的一件大事了:Chrome 65版本終于要支持display: contents;了! Firefox早就支持了,而 Chrome直到現(xiàn)在才開(kāi)始支持,這么重要的特性,它到底有什么功能呢?結(jié)果恐怕會(huì)令你大失所望。原來(lái)的布局是這樣的:

      你給中間那個(gè) div加上 display:contents;之后,它就變成這樣了:

      這就是 display:contents;的作用,它讓子元素?fù)碛泻透冈匾粯拥牟季址绞剑瑑H此而已。

      display: none;

      這么著名的值還用多說(shuō)嗎?

      混合值

      display: inline-block;

      關(guān)于 display:inline-block;的作用恐怕只要做過(guò) 3天以上前端的工程師都應(yīng)該知道。什么也不說(shuō)了,上一張著名的圖片作總結(jié)吧:

      display: inline-table;

      你要能理解 inline-block,你就能理解 inline-table。在行內(nèi)顯示一個(gè)表格,就像這樣:

      display: inline-flex;

      這個(gè)就不用多說(shuō)了吧?跟上面一樣,在行內(nèi)進(jìn)行彈性布局,參考display: flex;。

      display: inline-grid;

      同上,在行內(nèi)進(jìn)行網(wǎng)格布局,參考display: grid;。

      全局值

      這些值不是 display屬性的專利,幾乎其它任意屬性都可以用,列在這里湊個(gè)數(shù)。

      display: inherit;

      繼承父元素的 display屬性。

      display: initial;

      不管父元素怎么設(shè)定,恢復(fù)到瀏覽器最初始時(shí)的 display屬性。

      display: unset;

      unset混合了 inheritinitial。如果父元素設(shè)值了,就用父元素的設(shè)定,如果父元素沒(méi)設(shè)值,就用瀏覽器的缺省設(shè)定。直接看圖最明白:

      總結(jié)

      以上就是在 cssdisplay32種寫(xiě)法。談了這么多,不知道你記住了多少呢?其實(shí),單純理解每一個(gè) display屬性的取值都不難,難的是融會(huì)貫通,在恰當(dāng)?shù)牡胤竭\(yùn)用恰當(dāng)?shù)闹担吘刮覀兊哪康氖菫榱税汛a寫(xiě)短,而不是把代碼寫(xiě)長(zhǎng)。如果你怕記不太清的話,就請(qǐng)你收藏這篇小文,也許將來(lái)的某一天,你會(huì)用得著。


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多

        主站蜘蛛池模板: 国产色秀视频在线播放| WWW夜插内射视频网站| 在线视频中文字幕二区| 亚洲制服丝袜系列AV无码| 婷婷综合久久中文字幕| 日韩精品卡2卡3卡4卡5| 亚洲旡码欧美大片| 色欲香天天天综合网站无码| 把女人弄爽大黄A大片片| 老色鬼久久亚洲AV综合| 国产香蕉尹人在线视频你懂的| 国产成人久久精品流白浆| 怡红院一区二区三区在线| 亚洲男人AV天堂午夜在| 伊人久久大香线蕉AV网禁呦| 国产午夜亚洲精品国产成人 | 好深好爽办公室做视频| 国产精品免费久久久久影院| 同桌上课脱裙子让我帮他自慰| 久久狠狠高潮亚洲精品| 亚洲AV无码成人精品区蜜桃| 精品少妇人妻AV无码久久 | 国产明星精品无码AV换脸| 夜鲁夜鲁很鲁在线视频 视频| 亚欧美日韩香蕉在线播放视频| 久久人人97超碰精品| 天堂影院一区二区三区四区| 亚洲人成网站免费播放| 亚洲国产日韩A在线亚洲| 亚洲精品55夜色66夜色 | 不卡乱辈伦在线看中文字幕| 亚洲日本精品一区二区| 欧美肥老太牲交大战| 国产精品 欧美 亚洲 制服| 青青青青久久精品国产| 精品久久久久久中文字幕大豆网 | 日日摸夜夜添狠狠添欧美| 久久夜色撩人精品国产小说| 亚洲小说乱欧美另类| 国产中文字幕精品在线| 无码人妻丰满熟妇区五十路在线|