<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 談談BFC

          2018-5-14    周周

          一、什么是BFC
                 BFC(block formatting context)簡單來說,BFC 就是一種屬性,這種屬性會影響著元素的定位以及與其兄弟元素之間的相互作用。
              中文常譯為塊級格式化上下文。是 W3C CSS 2.1 規范中的一個概念, 從樣式上看,具有 BFC 的元素與普通的容器沒有什么區別,但是從功能上,具有 BFC 的元素可以看作是隔離了的獨立容器,容器里面的元素不會在布局上影響到外面的元素,并且 BFC 具有普通容器沒有的一些特性,它決定了元素如何對其內容進行定位,以及與其他元素的關系和相互作用。

          、如何觸發 BFC

                上面介紹了 BFC 的定義,那么如何觸發 BFC 呢?
              滿足下面任一條件的元素,會觸發為 BFC :
              1、浮動元素,float 除 none 以外的值
              2、絕對定位元素,position(absolute,fixed)
              3、display 為以下其中之一的值 inline-blocks,table-cells,table-captions
              4、overflow 除了 visible 以外的值(hidden,auto,scroll)

          、BFC布局與普通文檔流布局區別      
              普通文檔流布局規則
              1.浮動的元素是不會被父級計算高度
              2.非浮動元素會覆蓋浮動元素的位置
              3.margin會傳遞給父級
              4.兩個相鄰元素上下margin會重疊

              BFC布局規則
              1.浮動的元素會被父級計算高度(父級觸發了BFC)
              2.非浮動元素不會覆蓋浮動元素位置(非浮動元素觸發了BFC)
              3.margin不會傳遞給父級(父級觸發了BFC)

              4.兩個相鄰元素上下margin會重疊(給其中一個元素增加一個父級,然后讓他的父級觸發BFC)

             下面來說一下BFC的實際使用場景
             場景1:解決子盒子都浮動時 父盒子高度不參與計算問題
              <style>
                .far {
                   border: 10px solid pink;
                   width: 300px;
               }
                .child {
                   border: 10px solid yellowgreen;
                   width:100px;
                   height: 100px;
                   float: left;
              }
               .far{
                   overflow: hidden;
              }
              </style>
              <body>
                  <div class="far">
                       <div class="child"></div>
                       <div class="child"></div>
                  </div>
              </body>

              根據overflow 除了 visible 以外的值(hidden,auto,scroll)就會觸發BFC的原則 計算BFC高度時 ,floatbox也參與其中。


              場景2:box垂直方向的距離 會由margin來決定 相鄰兩個盒子之間margin會重疊 ,這就是margin上下間值合并的原因

              <style>
              p {
                  color: pink;
                  background: #fcc;
                  width: 200px;
                  height:100px;
                  text-align:center;
                  margin: 100px;
              }
              </style>
              <body>
                 <p></p>
                 <p></p>
              </body>

              要解決這個問題我們可以在p外面包裹一層容器,并觸發該容器生成一個BFC。那么兩個P便不屬于同一個BFC,就不會發生margin重疊了,解決代碼如下。
              <style>
                 .box {
                    overflow: hidden;
                 }
                 p {
                    background: green;
                    width: 200px;
                    height: 200px;
                    margin: 100px;
                }
              </style>
              <body>
                 <p></p>
                 <div class="box">
                     <p></p>
                 </div>

              </body>

              場景3:實現左側固定右側自適應等類似布局
              <style>
                  .out{
                      border: 1px solid red;
                      height: 200px;
                  }
                  .left{
                      width: 200px;
                      height: 150px;
                      background-color: green;
                      float: left;
                  }
                  .right{
                      background-color: pink;
                      height: 250px;
                      overflow: hidden;
                  }
                </style>
                <body>
               <div class="out">
                  <div class="left"></div>
                  <div class="right"></div>
                </div>

          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.sdgs6788.com

          存檔

          99久久99久久精品国产片果冻| 国产精品内射久久久久欢欢| 午夜精品久久久久9999高清| 久久久久久av无码免费看大片| 久久精品中文无码资源站| 精品久久久久久无码中文字幕一区| 91精品国产色综久久| 99蜜桃臀久久久欧美精品网站| 2020最新久久久视精品爱| 日本欧美久久久久免费播放网| 九九热久久免费视频| avtt天堂网久久精品| 久久中文字幕视频、最近更新 | 久久精品国产亚洲一区二区| 2020久久精品亚洲热综合一本| 精品久久久久久亚洲| 久久午夜伦鲁片免费无码| 伊人久久大香线蕉成人| 色综合久久88色综合天天 | 精品久久久久中文字幕一区| 欧美va久久久噜噜噜久久| 精品国产乱码久久久久软件| 久久久99精品一区二区| 99久久成人18免费网站| 久久最近最新中文字幕大全 | 国产精品视频久久| 久久精品99久久香蕉国产色戒| 亚洲欧美成人综合久久久 | 一本久久a久久精品vr综合| 亚洲国产天堂久久综合| 少妇久久久久久被弄到高潮 | 中文字幕久久欲求不满| 色偷偷888欧美精品久久久| A级毛片无码久久精品免费| 88久久精品无码一区二区毛片 | 伊人久久大香线焦AV综合影院| 亚洲人AV永久一区二区三区久久| 伊人色综合九久久天天蜜桃| 亚洲国产一成久久精品国产成人综合 | 青青国产成人久久91网| 99久久综合国产精品二区|