<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

          存檔

          国产精品丝袜久久久久久不卡| 伊人久久大香线蕉无码麻豆| 久久国产色AV免费看| 日本一区精品久久久久影院| 久久中文字幕视频、最近更新| 亚洲中文字幕无码久久2017| 国产成人久久精品激情| 成人a毛片久久免费播放| 亚洲欧洲久久av| 国产精品久久久亚洲| 午夜精品久久久久成人| 亚洲va中文字幕无码久久不卡| 99热精品久久只有精品| 久久久久亚洲精品无码蜜桃 | 久久精品九九亚洲精品| 色噜噜狠狠先锋影音久久| 日本精品久久久久影院日本| 国产精品久久成人影院| 国产成人综合久久精品红| 91精品国产91久久久久久青草 | 2020最新久久久视精品爱| 一本久久a久久精品亚洲| 久久伊人色| 国产精品一区二区久久精品无码 | 欧美麻豆久久久久久中文| 99久久99久久| 久久夜色精品国产噜噜噜亚洲AV| 久久夜色精品国产| 国产精品免费久久久久久久久| 伊人久久大香线蕉亚洲五月天| 欧美性猛交xxxx免费看久久久| 国产69精品久久久久777| 人妻少妇久久中文字幕| 狠狠综合久久AV一区二区三区| 久久精品国产精品亜洲毛片| 狠狠人妻久久久久久综合蜜桃 | 91久久精品无码一区二区毛片| 亚洲AV无码久久| 久久久久亚洲AV成人片| 久久综合香蕉国产蜜臀AV| 久久99精品国产99久久|