<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### float 塊狀化的意思是:元素一旦float值不為none,則其display計算值就自動變成了block,不管你之前是內聯還是塊級。 兩側定寬,中間自適應: ``` .left { float: left; width: 70px; } .right { float: right; width: 70px; } .container { margin: 0 70px; } ``` ### clear clear的意思是:設置了clear屬性的元素自身如何如何,而不是讓float元素如何如何。 * none: 默認值,左右浮動來就來 * left:左側抗浮動 * right:右側抗浮動 * both:兩側抗浮動 ``` li { width=height=20px; float: left; } li:nth-child(3) { clear: both; } ``` ![](https://box.kancloud.cn/0065ca17601dcedd1d24926e26ef3566_500x277.jpg) 你可能好奇為什么不是三行? clear屬性是讓自身不能和前面的浮動元素相鄰,也就是說后面的浮動元素它是不管的。更進一步講,float為left時,clear: left有效float為right時,clear: right有效。其實,float為left時,both等同于left,float為right時,both等同于right。 clear屬性只有塊級元素才有效。而偽元素默認都是內聯,這就是平時借助偽元素清除浮動時需要設置display的原因: ``` .clear:after { content: '', display: table\block\list-item; clear: both; } ``` ### BFC(!!!) BFC全稱為塊級格式化上下文。如果一個元素是BFC,那么它的內部元素再怎么折騰都不會影響外部元素(比如absolute,再怎么折騰,會影響外層元素嗎?不會!)。所以,BFC元素是不可能發生margin重疊的,因為margin重疊是會影響外部元素的。BFC元素也可以用來清除浮動,因為如果不清除,子元素浮動會導致父元素高度塌陷,必然影響后面元素的布局和定位。 如何BFC?(滿足一個即可) * html根元素 * float值不為none * overflow值為hidden(常用) * display值為table-cell或inline-block(常用) * position為absolute或fixed 具有BFC特性的元素的子元素不會受外部元素影響,也不會影響外部元素。 舉個例子: ``` <div> <img src="xxx.jpg"/> <p>文字</p> </div> img { float: left; } ``` ![](https://box.kancloud.cn/dba859076b1fdc1b46ec291db69cf0a7_437x226.jpg) float為left后影響了原有的布局。 我們為p設置`overflow: hidden`讓p變成BFC(子元素也就是文本不會受外部元素float: left影響)。 ![](https://box.kancloud.cn/e42cbaad2d397aca8823182888668601_424x210.jpg) 再舉個例子: ``` <div class="father"> <div class="child"></div> </div> .father { border: 1px solid black; } .child { float: left; width=height=100px; background-color: red; } ``` ![](https://box.kancloud.cn/91f1b888af85fd391fa5bfe7131c7386_424x210.jpg) 可以看到,float影響了father的布局。我們為father設置`overflow: hidden`,效果如下: ![](https://box.kancloud.cn/76c5f6386709b274f2a06873c6da5205_424x210.jpg) table-cell的特性:不管你給他設置多么大的寬,它都不會超過父級的寬。 ### overflow 當子元素內容超過容器高度限制的時候,裁剪的邊界是`border box`,而非`padding box`。 在chrome瀏覽器下,如果容器可滾動,則padding-bottom也算在滾動尺寸之內,ie和firefox會忽略padding-bottom。 當滾動到底部時,chrome的效果: ![](https://box.kancloud.cn/cc5e6c601f4672a13c9dbffb02f572c9_424x210.jpg) ie和firefox的效果: ![](https://box.kancloud.cn/2e345a0cd433efdb5afb64859954c7fc_424x210.jpg) 瀏覽器的差異會導致scrollHeight和其他值不一樣,因此,不要在滾動容器中設置padding-bottom,而是在最底部的子元素上設置margin-bottom。 在pc端,窗體滾動高度可以使用`document.documentElement.scrollTop`獲取,在移動端可以使用`document.body.scrollTop`獲取。 *** 文字溢出時的點點點效果: ``` .ell { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } ``` 錨點定位的兩種方法: * id * a標簽的href ``` <div id="here"></div> <a name="there"></a> <a href="#here">toHere</a> <a href="#there">toThere</a> ``` 在滾動元素上設置overflow: hidden,你會看見內容被裁剪了,滾動條也不見了。其實,內容并沒有被裁剪,滾動條也僅僅是隱藏了,鼠標無法滾動了而已。不信你用js更改滾動條的滾動距離或者錨點定位一下,你會發現和overflow: auto\scroll沒區別。 ### absolute 絕對定位的寬與高均是針對參照物定位的。 正常流的width100%和height100%參考自father的`content box`,absolute則參考自參照物的`padding box`。absolute的top\right\bottom\left無視參照物的padding,始終從padding外側開始定位。absolute的margin和trbl是可以共存的,效果是二者之和。trbl的百分比同width和height,參照的是參照物的`padding box`,你就這么認為吧,絕對定位的所有百分比均參考的是參照物的`padding box`。 如果只設置了absolute而沒有指定trbl中的任何一個,那么元素的布局與正常流沒區別,唯一的區別就是它不占據空間了。舉個例子: ![](https://box.kancloud.cn/f75564a60b2a10531a3722603620b5ba_372x384.jpg) absolute的定位(不使用trbl)則不需要父元素設置為relative,當然,如果你設置的值是百分比就需要指定父元素為relative,否則它會一直向上尋找直到找到參照物并參考它的`padding box`作為百分比的值。 *** 父級的text-align會影響absolute(不管absolute的元素是內聯還是塊級),因此用它實現水平居中: ``` .father { text-align: center; } .child { display: inline-block; position: absolute; width=height=100px; margin-left: -50px; } //原理:inline-block會在child前面產生幽靈空白節點,text-align: center使得幽靈空白節點居中于father。而child為absolute使其表現為無依賴的絕對定位,最終位于幽靈空白節點的后面。然后我們再使用margin-left調整位置。 //兼容edge瀏覽器 .father:before { content: ''; } ``` ### absolute與overflow 以下幾種情況,overflow不會裁剪: ``` <div style="overflow: hidden;"> <img src="xxx.jpg" style="position: absolute;"> </div> //子元素設置了absolute,不裁剪 ``` ``` <div style="position: relative;"> <div style="overflow: hidden;"> <img src="xxx.jpg" style="position: absolute;"> </div> </div> //overflow的父級元素是定位元素,不裁剪 ``` ``` <div style="overflow: hidden; position: relative;"> <img src="xxx.jpg" style="position: absolute;"> </div> //overflow本身也是定位,裁剪,請與1做對比 ``` ``` <div style="overflow: hidden;"> <div style="position: relative;"> <img src="xxx.jpg" style="position: absolute;"> </div> </div> //overflow和定位元素之間還有一個定位元素,裁剪。請與2做對比 ``` 如果overflow的屬性值不是hidden,那么即使絕對定位元素高度比overflow元素高度還要大,也不會出現滾動條。 除了以上之外,當遇到absolute元素被裁剪或者fiexd固定定位失效時,看看定位元素的子元素是不是設置了transform。 ### absolute的流體特性 當設置了trbl后,絕對定位才真正變成絕對定位元素。 絕對定位的height百分比直接參考參照物的`padding box`垂直方向,不需要從html、body開始一層層設置height。 ### relative 相對定位設置trbl是相對于自身進行偏移的,有點像margin,但不會影響后面元素的布局。 ``` //文字不動,只是div上移100 <div relative top-100></div> <p>123</p> //文字跟著div一起上移100 <div margin-top-100></div> <p>123</p> ``` 相對定位中,一切百分比均參考自父級的`content box`,注意是父級,而不是參照物。對于relative來說,參照物就是父級。垂直方向參考自父級的height。 與absolute不同,當relative的設置了對立方向(top-bottom、left-right)時,根據文檔流的方向保留,比如,正常文檔流下設置同時設置了trbl,只有tl生效。 定位元素的層級大于正常元素。 ### fixed fixed元素的參照物是根元素html。 我們往往使用fixed實現全屏模態框(將遮罩層設為fixed),但你會發現當模態框內容溢出時你去滾動它,正常文檔也會跟著滾動沒有鎖定。如果是移動端項目,阻止touchmove事件的默認行為可以防止滾動;如果是pc端項目,直接讓根元素overflow: hidden即可。
                  <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>

                              哎呀哎呀视频在线观看