<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## 一、基本概念 盒子模型就是網頁布局中的一種手段,包括邊框(border)、外邊距(margin)、內邊距(padding)、網頁元素(content)、寬(width)、高(height)等元素。 ![](http://nhfcloms-deveopler.oss-cn-beijing.aliyuncs.com/dwwb/portal/project/1635151970061/01.png) **要點:** - Margin(外邊距) - **清除邊框外的區域,外邊距是透明的。** - Border(邊框) - 圍繞在內邊距和內容外的邊框。 - Padding(內邊距) - **清除內容周圍的區域,內邊距是透明的。** - Content(內容) - 盒子的內容,顯示文本和圖像。 ``` <div class="parent"> <div class="child1"></div> <div class="child2"></div> </div> .parent { width: 400px; height: 400px; background: #ccc; } .child1, .child2 { width: 100px; height: 100px; margin: 10px; padding: 10px; border: 10px solid #000; background: #f00; } ``` ## 二、盒模型的兩種標準 ![](http://nhfcloms-deveopler.oss-cn-beijing.aliyuncs.com/dwwb/portal/project/1635152015272/02.png) ![](http://nhfcloms-deveopler.oss-cn-beijing.aliyuncs.com/dwwb/portal/project/1635152029619/03.png) **要點:** - 標準模型中盒模型的寬高只是內容(content)的寬高 - IE模型中盒模型的寬高是內容(content)+填充(padding)+邊框(border)的總寬高 ## 三、CSS3 box-sizing 屬性 box-sizing 是用于告訴瀏覽器如何計算一個元素的總寬度和總高度 - **標準盒模型 box-sizing: content-box** <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width = content width</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height = content height</p> - **IE盒模型 box-sizing: border-box** <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width = border + padding + content width</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height = border + padding + content height</p> ``` <div class="parent"> <div class="child1 content-box"></div> <div class="child2 border-box"></div> </div> .content-box { box-sizing: content-box; } .border-box { box-sizing: border-box; } ``` ## 四、margin折疊問題 css2.1盒子模型中規定: > In this specification, the expression collapsing margins means that adjoining margins (no non-empty content, padding or border areas or clearance separate them) of two or more boxes (which may be next to one another or nested) combine to form a single margin.所有毗鄰的兩個或更多盒元素的margin將會合并為一個margin共享之。毗鄰的定義為:同級或者嵌套的盒元素,并且它們之間沒有非空內容、padding或border分隔。 在CSS當中,相鄰的兩個盒子(可能是兄弟關系也可能是祖先關系)的外邊距可以結合成一個單獨的外邊距。這種合并外邊距的方式被稱為折疊,所結合成的外邊距稱為折疊外邊距。折疊的結果按照如下規則計算: 1. 兩個相鄰的外邊距都是正數時,折疊結果是它們兩者之間較大的值。 2. 兩個相鄰的外邊距都是負數時,折疊結果是兩者絕對值的較大值。 3. 兩個外邊距一正一負時,折疊結果是兩者的相加的和。 **產生折疊的必備條件:margin必須是鄰接的!** 解決嵌套元素產生折疊問題的方法: - 給父元素設置padding - 給父元素設置透明border ``` .parent { /* padding-top:1px; */ border: 1px solid rgba(0,0,0,0); width: 400px; height: 400px; background: #ccc; } ``` ## 五、什么是BFC ### 1、BFC 定義 > BFC(Block formatting context)直譯為"塊級格式化上下文"。它是一個獨立的渲染區域,只有Block-level Box參與, 它規定了內部的Block-level Box如何布局,并且與這個區域外部毫不相干。 **Box:css布局的基本單位** Box 是 CSS 布局的對象和基本單位, 直觀點來說,就是一個頁面是由很多個 Box 組成的。元素的類型和 display 屬性,決定了這個 Box 的類型。 不同類型的 Box, 會參與不同的 Formatting Context(一個決定如何渲染文檔的容器),因此Box內的元素會以不同的方式渲染。 Box盒子的類型: - block-level box : display 屬性為 block, list-item, table 的元素,會生成 block-level box。并且參與 block fomatting context; - inline-level box : display 屬性為 inline, inline-block, inline-table 的元素,會生成 inline-level box。并且參與 inline formatting context; **Formatting Context** Formatting context 是 W3C CSS2.1 規范中的一個概念。它是頁面中的一塊渲染區域,并且有一套渲染規則,它決定了其子元素將如何定位,以及和其他元素的關系和相互作用。最常見的 Formatting context 有 Block fomatting context (簡稱BFC)和 Inline formatting context (簡稱IFC)。 ### 2、如何創建BFC - float的值不是none - position的值不是static或者relative - display的值是inline-block、table-cell、flex、table-caption或者inline-flex - overflow的值不是visible ### 3、BFC的布局規則 - 內部的Box會在垂直方向,一個接一個地放置。 - Box垂直方向的距離由margin決定。屬于同一個BFC的兩個相鄰Box的margin會發生重疊。 - 每個盒子(塊盒與行盒)的margin box的左邊,與包含塊border box的左邊相接觸(對于從左往右的格式化,否則相反)。即使存在浮動也是如此。 - BFC的區域不會與float box重疊。 - BFC就是頁面上的一個隔離的獨立容器,容器里面的子元素不會影響到外面的元素。反之也如此。 - 計算BFC的高度時,浮動元素也參與計算。 ### 4、BFC的應用場景 **(1)利用BFC避免margin重疊** - 解決嵌套元素margin重疊,父元素可選擇添加以下樣式之一 ``` padding-top:1px; border: 1px solid rgba(0,0,0,0); display: inline-block; display: table; display: table-caption; display: flex; display: inline-flex; float: left; position: absolute; overflow:hidden; ``` - 解決同級相鄰元素margin重疊,任意相鄰元素可選擇添加以下樣式之一 ``` display:inline-block; display:table-caption; display:inline-flex; ``` **(2)自適應兩欄布局** - 要點:BFC的區域不會與float box重疊 ``` <body> <div class="left">LEFT</div> <div class="right">RIGHT</div> </body> .left { float: left; width: 200px; height: 150px; line-height: 150px; text-align: center; font-size: 40px; background: #00f; } .right { overflow: hidden; height: 300px; line-height: 300px; text-align: center; font-size: 40px; background: #f00; } ``` **(3)清除浮動** - 當我們不給父節點設置高度,同時給子節點設置了浮動的時候,就會發生高度塌陷,這個時候我們就要清除浮動 - 要點:計算BFC的高度時,浮動元素也參與計算 ``` <div class="parent"> <div class="child"></div> <div class="child"></div> </div> .parent { overflow: hidden; width: 300px; border: 5px solid #f00; } .child { float: left; width:100px; height: 100px; border: 5px solid #00f; } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看