日韩欧美高清在线播放_欧美日韩一区二区综合_在线观看精品_中文在线а√在线8_日韩色性视频_中文视频一区_日韩电影不卡一区_青青一区二区三区_欧美日韩黑人_偷拍欧美精品

響應式網頁設計彈性盒布局(display:flex)

zhushican 3年前 (2022-08-11) 六六互聯 606 0

word; clear: both; text-indent: 7px; color: rgb(24, 30, 51); font-family: PingFangSC, 微軟雅黑, 黑體, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">響應式網頁設計彈性盒布局(display:flex)

word; clear: both; text-indent: 7px; color: rgb(24, 30, 51); font-family: PingFangSC, 微軟雅黑, 黑體, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">彈性盒布局(display:flex)

彈性盒布局(Flexible Box)是一種十分方便的,只需要依賴于CSS的樣式就可以輕松實現響應式布局彈性布局 flex CSS display 的一個屬性值,通過在父容器上添加 display:flex;屬性,便可以實現其子元素在父元素中的彈性布局,但要注意的是 display:flex; 這一條樣式只會作用在添加這一屬性的父容器和非隔代子容器上,換句話說,父容器上的 diaplay:flex; 屬性并不會使其直系子元素中的子元素產生彈性布局。                           

響應式網頁設計彈性盒布局(display:flex)

圖6-39 彈性盒結構

通俗來講,爹只能管得到自己的兒子、而管不到自己的孫子。如果想要在下一層中繼續使用彈性布局,我們可以在相應的子元素上再次添加 display:flex; 屬性來實現。彈性布局就像是在一個大盒子里擺放的幾個小盒子,各自相對獨立,其彈性盒的結構如圖6-39所示。 從上圖可以看出,彈性盒由容器,子元素和軸構成,并且默認情況下,子元素的排布方向與橫軸的方向是一致的。彈性盒模型可以用簡單的方式滿足很多常見的復雜的布局需求。它的優勢在于只要開發人員聲明布局應該具有的行為,而不需要給出具體的實現方式。瀏覽器就會負責完成實際的布局。該種方式的布局模型幾乎在主流瀏覽器中都得到來支持。

1.彈性布局的使用

彈性布局在父、子元素上都有相對應的屬性來規范子元素在父元素中的彈力

① 給父容器添加display:flex/inline-flex;屬性,即可使容器內容采用彈性布局顯示,而不遵循常規文檔流的顯示方式;

② 容器添加彈性布局后,僅僅是容器內容采用彈性布局,而容器自身在文檔流中的定位方式依然遵循常規文檔流;

③ display:flex;容器添加彈性布局后,顯示為塊級元素;

    display: inline-flex;容器添加彈性布局后,顯示為行級元素;

④ 設為 Flex 布局以后,子元素的floatclearvertical-align屬性將失效。但是position定位屬性依然生效。

2.作用于父容器的相關屬性

flex布局涉及到 12 個 CSS 屬性(不含 display: flex),其中父容器、子容器各 6 個。不過常用的屬性只有 4 個,父容器、子容器各 2 個;父容器相關屬性名稱如下:

 

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

 

(1)flex-direction

設置主軸方向,在Flex容器內使用主軸和副軸概念;默認x軸為主軸,y軸為副軸;可由Flex容器的 flex-direction 屬性修改,在使用彈性布局時,需要通過主軸和副軸確定編輯的方向,flex-direction屬性決定主軸的方向(即項目的排列方向),基本語法格式如下:

 

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

 
  • row(默認值):主軸為水平方向,起點在左端。

  • row-reverse:主軸為水平方向,起點在右端。

  • column:主軸為垂直方向,起點在上端。

  • column-reverse:主軸為垂直方向,起點在下端。

flex-direction設置不同的值,決定了容器內元素的排列方向,如圖6-40所示。

響應式網頁設計彈性盒布局(display:flex)

                                 圖6-40 flex-direction屬性效果

(2)flex-wrap

設置可換行屬性,默認下容器內子元素會按照主軸方向排一行,不會換行,當總長度超過容器時子元素會被壓縮,通過 flex-wrap 屬性可設置換行模式,基本語法格式如下:

 

.box{flex-wrap: nowrap | wrap | wrap-reverse;}

 

/*

 

nowrap(默認):不換行。

 

wrap:換行,第一行在上方。

 

wrap-reverse:換行,第一行在下方。

 

*/

 

  nowrap(默認):不換行。如果容器寬度不夠時,每個項目會被擠壓寬度;

響應式網頁設計彈性盒布局(display:flex)

                                  圖6-41 nowrap屬性效果

  • wrap:換行,并且第一行在容器最上方;

響應式網頁設計彈性盒布局(display:flex)

                                     圖6-42 wrap屬性效果

響應式網頁設計彈性盒布局(display:flex)  wrap-reverse:換行,并且第一行在容器最下方

響應式網頁設計彈性盒布局(display:flex)

                                 圖6-43 wrap-reverse屬性效果

(3)flex-flow

flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式,默認值為row nowrap,基本語法格式如下。

 

.box {

 

  flex-flow:  <flex-direction> || <flex-wrap>;

 

}

 

4justify-content

該屬性定義了子容器在主軸上的排列對齊方式,此屬性與主軸方向息息相關。它有5個取值,基本語法格式如下。

 

.box {

 

   justify-content: flex-start | flex-end | center | space-between |  space-around;

 

}

 
  • flex-start(默認值):左對齊

  • flex-end:右對齊

  • center: 居中

  • space-between:兩端對齊,項目之間的間隔都相等。

  • space-around:每個項目兩側的間隔相等。所以,項目之間的間隔比項目與邊框的間隔大一倍。(開頭和最后的項目,與父容器的邊緣有一定的間隔,是項目間隔的一半。)

響應式網頁設計彈性盒布局(display:flex)

圖6-44  justify-content屬性效果

(5)align-items

align-items屬性定義項目在交叉軸(副軸)上如何對齊,基本語法格式如下,效果如圖6-44所示

 

 

.box {align-items: flex-start | flex-end | center |  baseline | stretch;}

 

響應式網頁設計彈性盒布局(display:flex)

圖6-44  justify-content效果 

 

響應式網頁設計彈性盒布局(display:flex)

響應式網頁設計彈性盒布局(display:flex)

                                           圖6-45align-content效果

  • flex-start:交叉軸的起點對齊。

  • flex-end:交叉軸的終點對齊。

  • center:交叉軸的中點對齊。

  • baseline: 項目的第一行文字的基線對齊。(文字的行高,字體大小會影響每行的基線)

  • stretch(默認值):如果項目未設置高度或設為auto,將占滿整個容器的高度。

(6)align-content

align-content屬性在開啟換行模式后有換行時設置多行在副軸方向的對齊方式,如果項目只有一根軸線,該屬性不起作用,效果如圖6-45所示。

.box {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
  • flex-start:與交叉軸的起點對齊。

  • flex-end:與交叉軸的終點對齊。

  • center:與交叉軸的中點對齊。

  • space-between:與交叉軸兩端對齊,軸線之間的間隔平均分布。

  • space-around:每根軸線兩側的間隔都相等。軸線之間的間隔比軸線與邊框的間隔大一倍。

  • stretch(默認值):軸線占滿整個交叉軸。

3.作用于子元素的相關屬性

作用于子元素的6個相關屬性如下所示。

 

Order             flex-grow             flex-shrink

 

flex-basis        flex                  align-self

 

1order

order屬性定義項目的排列順序,值為無單位整數,數值越小,排列越靠前,默認為0,效果如圖6-46所示。

響應式網頁設計彈性盒布局(display:flex)

圖6-46   order屬性效果

2flex-grow

定義子元素放大比例,只有在容器主軸方向大小大于子元素總大小時才有效果,即容器有空余,值為無單位非負數字,可設置浮點數,默認為0;當值為0時代表子元素不放大,如果容器有剩余空間則空出;如果有子元素 flex-grow 值不為0,則子元素會按照 flex-grow 值的比例放大并填充容器的剩余空間,效果如圖6-47所示。

響應式網頁設計彈性盒布局(display:flex)

響應式網頁設計彈性盒布局(display:flex)

                               圖6-47   flex-grow屬性效果

如果所有項目的flex-grow屬性都為1,則它們將等分剩余空間(如果有的話)。如果一個項目的flex-grow屬性為2,其他項目都為1,則前者占據的剩余空間將比其他項多一倍。具體計算方式:

 

假設 A, B, C的寬度分別是 100, 100, 100,父級的寬度是850,父級寬減去子級的全部寬度,這樣剩余空間就是550。案例中B, A定義了flex-grow,分別是1,2,那剩余空間分成3份,B1份,A2份,比例就是1:2, 這個時候剩余空間就被計算出來了,

 

B的計算公式:100 +  (550 / 3) * 1
     A的計算公式: 100  + (550 / 3) * 2

 

3flex-shrink

定義子元素縮小比例,只有在容器主軸方向大小小于子元素總大小且不換行時才有效果,即容器空間不足,值為無單位非負數字,可設置浮點數,默認為1;為0表示子元素不縮小,如果容器大小小于子元素總大小,而所有子元素均不縮小,則子元素會超出容器范圍;如果有子元素 flex-shrink 值不為0,則子元素會按照 flex-shrink 值的比例縮小在容器中,效果如圖6-48所示。

響應式網頁設計彈性盒布局(display:flex)

圖6-48  flex-shrink屬性效果

(4)    flex-basis

響應式網頁設計彈性盒布局(display:flex)

圖6-49  flex-basis屬性效果

    flex-basis屬性定義項目占據的主軸空間,如果主軸為水平,則設置這個屬性,相當于設置項目的寬度,原寬度width將會失效。推薦在彈性布局中多使用 flex-basis 而不是直接設置 width height 屬性,它的默認值為auto,即項目的本來大小,效果如圖6-49所示。

5flex

flex屬性是flex-grow, flex-shrink  flex-basis的簡寫,默認值為0 1auto。后兩個屬性可選。這個屬性有兩個快捷設置:auto=(1 1 auto)/none=(0 0 auto)。通常直接用 flex 設置子元素比例大小,例如使用 flex: 1 直接設置大小比例,而不再單獨寫 flex-grow: 1

6align-self

align-self 屬性允許單個項目有與其他項目不一樣的對齊方式,可覆蓋 align-items 屬性。默認值為 auto,表示繼承父元素的 align-items 屬性,如果沒有父元素,則等同于 stretch(默認值),基本語法格式如下。除多出默認值 auto 外,屬性值同 align-items。效果如圖6-50所示。

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

響應式網頁設計彈性盒布局(display:flex)

圖6-50  flex-basis屬性效果

下面通過案例6-29來測試以上彈性盒布局的各個屬性,效果如圖6-51所示。

6-29   example29.html

 

<!DOCTYPE html>

 

<html>

 

<head>

 

   <meta  charset="utf-8">

 

   <title>彈性盒屬性</title>

 

    <style  type="text/css">

 

     .box{

 

            /*設置主軸方向,主軸為水平方向,起點在左端*/

 

             flex-direction: row ;min-height: 160px;width: 850px;

 

             display: flex;/*設置為彈性布局*/

 

             flex-wrap:nowrap;/*設置是否可換行,不換行*/

 

             background-color: red;margin-top:100px;

 

        }

 

      .A,.B,.C{border: 1px solid gold;width: 100px;height: 80px;}

 

     .box div.A{ background-color: green; order:  1; flex-grow: 0;

 

      flex-shrink:0;/*定義子元素縮小比例*/

 

      flex-basis: 400px;

 

        }

 

        .box  div.B{background-color: pink;order: 2;}

 

        .box  div.C{background-color: beige;order: 0;}

 

     </style>

 

</head>

 

<body>

 

    <div>

 

        <div>A</div>

 

        <div>B</div>

 

        <div>C</div>

 

    </div>

 

</body>

 

</html>

 

響應式網頁設計彈性盒布局(display:flex)

6-51彈性盒屬性應用效果

學習完彈性盒的各個屬性,接下來使用彈性盒來做一個非常常見且實用的響應式布局,圣杯布局。圣杯布局是指在頁面主體部分分為 left content right 3部分,leftright固定大小,content部分會自適應屏幕大小,后來國內的淘寶團隊對其進行了改良,改良后效果基本相同,一般叫做雙飛翼布局,使用搜索引擎搜索有很多相關介紹。

圣杯布局是使用 floatmargin padding 和定位等盒模型方法實現的,關鍵點是使用負值的 margin 使leftright可以與設置為100%寬度的content浮動在同一行中,這里使用彈性布局則可以非常方便清晰的實現有自適應效果的圣杯布局,通過案例6-30來體驗,效果如圖6-526-53所示。

6-30  example30.html

 

<!DOCTYPE html>

 

<html>

 

<head>

 

    <meta  charset="utf-8">

 

    <title>彈性盒布局</title>

 

    <style  type="text/css">

 

        * {margin: 0;padding: 0;}

 

        html,body {height: 100%;}

 

        .container {height:  100%;display: flex;

 

 /*flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式*/

 

            flex-direction:  column; /*主軸垂直方向*/

 

        }

 

        .header {flex: 1;background-color:  darkcyan;

 

        border-radius:  8px;margin-bottom: 5px;max-height: 50px;

 

        }

 

        .content {flex: 3;display:  flex; }

 

        .content .left  {background-color: darkgreen;

 

            flex: 0 0  200px;border-radius: 8px;

 

        }

 

        .content .right  {background-color: red;

 

            flex: 0 0  200px;border-radius: 8px;

 

        }

 

        .content .middle {

 

      background-color:  palegoldenrod;flex: 1;border-radius: 8px;

 

            justify-content:  center;

 

/*水平居中*/align-items:center;  /*垂直居中*/

 

            display:-webkit-flex;font-size: 28px;

 

        }

 

        .footer {

 

            flex:  1;background-color: darkcyan;margin-top: 5px;

 

            border-radius:  8px;max-height: 50px;

 

        }

 

        @media screen and  (max-width: 640px) {

 

            .content  {flex-direction: column;

 

            }

 

       .content .left, .content .right{

 

                flex:  1;max-height: 180px;min-height: 50px;

 

            }

 

        .content .middle {

 

                min-height:  250px;/*最小高度*/

 

                flex: 1;margin:  5px 0px ;

 

                justify-content:  center;/*水平居中*/

 

                 align-items:center; /*垂直居中*/

 

                /*注:Webkit內核的瀏覽器,必須加上-webkit前綴。 */

 

                 display:-webkit-flex;font-size: 28px;

 

            }

 

        }

 

    </style>

 

</head>

 

<body>

 

    <div>

 

        <div></div>

 

        <div>

 

            <div></div>

 

            <div>移動端頁面</div>

 

            <div></div>

 

        </div>

 

        <div></div>

 

    </div>

 

</body>

 

</html>

 

Web瀏覽器運行效果如圖6-52所示。

響應式網頁設計彈性盒布局(display:flex)

                                  圖6-52 彈性盒布局PC端頁面效果

Web瀏覽器響應式設計模式下運行效果如圖6-53所示。

Web瀏覽器響應式設計模式下運行,如果頁面的高度超過設備屏幕的高度時,頁面的下半部分不會完全展示在移動設備上,這時,可以通過滑動屏幕的方式查看頁面下半部分內容。

本模塊詳細講解了HTML5的一些高級特性,過渡,變形,動畫,畫布,響應式布局設計等知識點。重點講解了什么是響應式WEB設計,然后對響應式WEB設計相關知識點,視口,媒體查詢,彈性盒模型等核心技術進行了講解。學習本模塊內容后,要求讀者能進行頁面基本動畫的處理,了解響應式布局的設計,掌握媒體查詢盒彈性盒布局的應用。

響應式網頁設計彈性盒布局(display:flex)

圖6-53 彈性盒布局移動端頁面效果


相關推薦

日韩欧美高清在线播放_欧美日韩一区二区综合_在线观看精品_中文在线а√在线8_日韩色性视频_中文视频一区_日韩电影不卡一区_青青一区二区三区_欧美日韩黑人_偷拍欧美精品
国产精品三p一区二区| 国产日产一区| 蜜臀a∨国产成人精品| 久久国产电影| 91成人噜噜噜在线播放| 国产精品一区二区99| 欧美在线看片| 神马久久资源| sm捆绑调教国产免费网站在线观看 | 日本成人中文字幕| 99久久婷婷国产综合精品首页 | 色爱综合av| 激情不卡一区二区三区视频在线| 国产精品视频一区二区三区综合| 高清亚洲高清| 成人国产精品入口免费视频| 婷婷精品在线观看| 国产亚洲精aa在线看| 影音先锋亚洲电影| 国产日韩一区二区三区在线播放| 日本在线高清| 五月天国产在线| 丝袜美腿亚洲色图| 亚洲一区中文| 99亚洲视频| 香蕉久久夜色精品| 99riav国产精品| 成人短片线上看| 婷婷精品视频| 婷婷成人综合| 激情国产一区| 国模吧视频一区| 久久神马影院| 欧美日韩国产亚洲一区| 欧美日韩国产一区二区三区不卡| 9999精品视频| 国产精品777777在线播放| 一区二区中文| 国产精品一区二区三区av麻| 高清一区二区三区av| 欧美人与拘性视交免费看| 国产欧美大片| 精品国产亚洲一区二区三区| 日韩一区网站| 久久国产日本精品| 国产综合久久| 在线亚洲伦理| 人人狠狠综合久久亚洲| 美女福利一区二区三区| 国产成人精品一区二区三区视频| 日韩专区视频网站| 天天色天天射综合网| 一本色道久久综合亚洲精品不卡| 日韩有码一区二区三区| 在线天堂资源| 欧美一区高清| 欧美精品三级在线| 好吊妞国产欧美日韩免费观看网站| 久久久久久黄| 日韩亚洲国产精品| 超碰在线cao| 欧美一区激情| 亚洲国产欧美日韩在线观看第一区 | 日韩中文字幕高清在线观看| 国产综合色区在线观看| 国产一区二区三区久久| 999精品嫩草久久久久久99| 亚洲一二av| 婷婷综合伊人| 欧美丰满日韩| 久久精品麻豆| 日本亚洲视频在线| 欧美成人综合| 天堂av在线| 亚洲久久视频| 国产精品videossex| 99国产精品久久久久久久成人热| 91亚洲自偷观看高清| 日韩高清一级片| 日本精品视频| 欧美女激情福利| 国产成人精品123区免费视频| 日本伊人色综合网| 亚洲视频国产| 91精品国产自产在线观看永久∴| 亚洲激情亚洲| 久久九九国产| 久久久久久夜| 中文在线日韩| 久久蜜桃av| 日韩午夜电影网| 国内精品久久久久久99蜜桃| 欧美 日韩 国产 一区| 午夜久久中文| 国产一区二区精品福利地址| 亚洲国产综合在线看不卡| 伊人网在线播放| 欧美一区在线观看视频| 伊人久久大香线蕉综合网蜜芽| 青青青国产精品| 国产欧美高清视频在线| 九一精品国产| 日韩欧美精品一区二区综合视频| 亚洲成aⅴ人片久久青草影院| 午夜日本精品| 久久国产三级| 久久精品在线| 91精品国产66| 亚洲国产一区二区三区网站| 人人超碰91尤物精品国产| 欧美激情 亚洲a∨综合| 天天av综合| 国产一区二区三区的电影 | 日韩动漫一区| 日韩中文字幕麻豆| 国产高清日韩| 日韩视频不卡| 99精品国产九九国产精品| 加勒比久久综合| 99精品视频免费观看| 欧美wwwwww| 99久久婷婷国产综合精品首页 | 播放一区二区| 少妇精品在线| 日韩一区二区中文| 国产精品毛片视频| 全球中文成人在线| 加勒比色综合久久久久久久久| 在线亚洲观看| 国产欧美日韩精品高清二区综合区| 亚洲精品a级片| 亚洲天堂免费| 亚洲一区自拍| 日韩精品视频一区二区三区| 日韩国产网站| 91欧美极品| 祥仔av免费一区二区三区四区| 精品国产午夜肉伦伦影院| 日韩久久一区| 欧美最新另类人妖| 久久久久影视| 天堂va蜜桃一区二区三区 | 香蕉国产精品| www久久久| 国产精品精品| 女同一区二区三区| 日本不卡一区二区三区| 西西裸体人体做爰大胆久久久| 亚洲肉体裸体xxxx137| 午夜激情电影在线播放| 久久久久一区| 国产精品v亚洲精品v日韩精品 | 日韩国产欧美三级| 一本久道久久综合狠狠爱| 国产一区二区三区四区大秀| 日韩欧美自拍| 在线一区电影| 精品国产亚洲一区二区三区| 国内精品99| 婷婷精品在线| 欧美淫片网站| 日韩在线观看一区二区| 禁果av一区二区三区| 亚洲精品欧洲| 日韩在线观看| 伊人成人在线视频| 凹凸av导航大全精品| 日韩精品亚洲专区| 91影院成人| 国精品一区二区| 日韩免费成人| 日本欧美一区二区三区乱码| 石原莉奈在线亚洲二区| 午夜在线精品偷拍| 国产精品日本一区二区不卡视频| 久久毛片亚洲| 在线精品国产| 欧美交a欧美精品喷水| 亚洲精品无播放器在线播放| 欧美一区久久久| 亚洲自拍另类| 久久国产欧美| 日韩成人在线观看视频| 久久婷婷国产| 亚洲一二三区视频| 丝袜亚洲另类丝袜在线| 99精品美女| 香港久久久电影| 影音先锋日韩精品| 久久精品国产99国产精品| 四虎8848精品成人免费网站| 九一国产精品| 天堂日韩电影| 一区二区三区高清在线观看| 国产精品视频一区二区三区| 青娱乐精品在线视频| 日本久久二区| 天堂√8在线中文| 免费观看久久久4p| 欧美中文日韩|