日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

高度塌陷

發布時間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高度塌陷 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(此為從學習視頻中摘抄,如有雷同,純屬巧合)

  • 高度塌陷

    在文檔流中,父元素的高度默認是被子元素撐開的,
    也就是子元素多高,父元素就多高
    但是當為子元素設置浮動以后,子元素會完全脫離文檔流,
    此時將會導致子元素無法撐起父元素的高度,導致父元素的高度塌陷
    由于父元素的高度塌陷了,則父元素下的所有元素都會向上移動,這樣將會導致頁面布局混亂

    所以在開發中,一定要避免出現高度塌陷的問題
    我們可以將父元素的高度寫死,以避免塌陷的問題出現,
    但是一旦高度寫死,父元素的高度將不能自動適應子元素的高度,所以這種方案不推薦使用

  • 解決高度塌陷1

    根據w3c的標準,在頁面中元素都有一個隱含的屬性叫做Block Formatting Context
    簡稱BFC,該屬性可以設置打開或者關閉,默認是關閉的。
    當開啟元素的BFC以后,元素將會具有如下的特性:
    1.父元素的外邊距不會和子元素重疊
    2.開啟BFC的元素不會被浮動元素所覆蓋
    3.開啟BFC的元素可以包含浮動的子元素

    如何開啟元素的BFC
    1.設置元素浮動
    -使用這種方式開啟,雖然可以撐開父元素,但是會導致父元素的寬度丟失
    而且使用這種方式也會導致下邊的元素上移,不能解決問題
    2.設置元素絕對定位
    3.設置元素為inline-block
    可以解決問題,但是會導致寬度丟失,不推薦使用這種方式
    4.將元素的overflow設置為一個非visible的值

    推薦方式:將overflow設置為hidden是副作用最小的開啟BFC的方式
    例:overflow: hidden;

    但是在IE6及以下的瀏覽器并不支持BFC,所以使用這種方式不能兼容IE6
    在IE6中雖然沒有BFC,但是具有一個隱含屬性叫hasLayout
    該屬性的作用和BFC類似,所以在IE6瀏覽器可以通過開hasLayout來解決該問題
    開啟方式很多,直接使用一種副作用最小的:
    直接將元素的zoom設置為1即可

    zoom表示放大的意思,后邊跟著一個數值,寫幾就將元素放大幾倍
    zoom:1 表示不放大元素,但是通過該樣式可以開啟hasLayout
    zoom這個樣式,只在IE中支持,其他瀏覽器都不支持
    例:zoom: 1;

    在IE6中,如果為元素指定了一個寬度,則會默認開啟hasLayout

  • 清除浮動

    由于受到box1浮動的影響,box2整體向上移動100px
    我們有時希望清除掉其他元素浮動對當前元素產生的影響,這時可以使用clear來完成功能
    clear可以用來清除其他浮動元素對當前元素的影響
    可選值:
    none,默認值,不清除浮動
    left,清除左側浮動元素對當前元素的影響
    right,清除右側浮動元素對當前元素的影響
    both,清除兩側浮動元素對當前元素的影響
    ??????????清除對他影響最大的那個元素的浮動

    清除box1浮動對box2產生的影響,在box2中設置
    清除浮動以后,元素會回到其他元素浮動之前的位置
    例:clear: left;

  • 解決高度塌陷2

    可以直接在高度塌陷的父元素的最后,添加一個空白的div
    由于這個div并沒有浮動,所以他是可以撐開父元素的高度的,
    然后在對其進行清除浮動,這樣可以通過這個空白的div來撐開父元素的高度
    基本沒有副作用

    使用這種方式,雖然可以解決問題,但是會在頁面中添加多余的結構
    例:

  • <div class="box1"><div class="box2"></div><div class="clear"></div></div><style type="text/css">.box1{border: 1px solid red;}.box2{width: 100px;height: 100px;background-color: blue;float: left;}.clear{clear: both; }</style>
  • 解決高度塌陷3
  • 通過after偽類,選中box1的后邊
    可以通過after偽類向元素的最后添加一個空白的塊元素,然后對其清除浮動,
    這樣做和添加一個div的原理一樣,可以達到一個相同的效果,
    而且不會在頁面中添加多余的div,這是我們最推薦使用的方式,而且沒有副作用
    例:

    .clearfix:after{/*添加一個內容*/content: "";/*轉換為一個塊元素*/display: block;/*清除兩側浮動*/clear: both;}/** 在IE6中不支持after偽類* 所以在IE6中還需使用hasLayout來處理*/.clearfix{zoom: 1;}

    總結

    以上是生活随笔為你收集整理的高度塌陷的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。