如何獲取元素在父級div里的位置_關于元素的浮動你了解多少

首先,在介紹什么是浮動之前我們先介紹一下html中元素的普通流布局方式。在普通流中,元素是按照它在 HTML 中的出現的先后順序自上而下依次排列布局的,在排列過程中所有的行內元素水平排列,直到當行被占滿然后換行,塊級元素則會被渲染為一整行。如果沒有特殊樣式指定,所有元素默認都是按照普通流方式排列布局,即普通流中元素的位置由該元素在 HTML 文檔中的位置決定的。什么是浮動???????浮動使元素脫離文檔普通流,漂浮在普通流之上的。浮動元素依然按照其在普通流的位置上出現,然后盡可能的根據設置的浮動方向向左或者向右浮動,直到浮動元素的外邊緣遇到包含框或者另一個浮動元素為止,且允許文本和內聯元素環繞它。浮動會產生塊級框(相當于設置display:block屬性)。

???????正是因為這種浮動的這種特性,所以本該屬于普通流中的元素浮動之后,父級元素的高度就可能會發生變化(父級元素內部由于不存在其他普通流元素了,其高度就為0),在實際應用中,會嚴重影響整體的布局。

所以我們需要使用清除浮動和閉合浮動來處理浮動帶來的問題

????????清除浮動:對被影響文檔位置的塊級元素添加屬性clear:left | right | both | none;使其下移,直到元素兩邊沒有浮動元素。指使用clear阻止這個元素盒子的邊和前面的浮動元素相鄰的行為;

????????閉合浮動:是使浮動元素閉合,使父元素高度不再塌陷,高度被撐開了,使父元素能夠包圍浮動元素,從而減少浮動帶來的影響。指避免float無法撐高父容器的默認行為

這是兩者之間的區別

694700137274b3ca53af03093bd8365a.png

閉合浮動的方法

1、添加額外的元素

   
main:wrap自己閉合浮動了,所以footer不用再清除浮動了(float:left)
side:我也浮動了(float:left)
footer:這次wrap人品爆發了, 通過在末尾添加了一個空標簽,已經閉合浮動

優點:簡單,代碼少,瀏覽器支持好,不容易出現怪問題

缺點:初學者不理解原理;如果頁面浮動布局多,就要增加很多空div,代碼語義化變差

原理:添加一個空div,利用css提高的clear:both清除浮動,讓父級div能自動獲取到高度

2、使用偽類元素:新增.parent:after偽對象,其余不變

優點:瀏覽器支持好,不容易出現怪問題

.warp:after{          content: ".";/*生成一個元素內容為".",為" "時也好用*/          display: block;/*讓元素為塊級元素*/          height: 0;/*用以下兩種方式讓元素不渲染*/          visibility: hidden;          clear: both;/*清除浮動*/    }

3、父元素設置overflow:hidden?

.wrap{        margin:0 auto;        width: 500px;        border: 2px solid #EA2C0A;        padding: 10px;        overflow: hidden;/*新增*/        zoom:1;/*新增,針對IE6,但沒有經過測試*/???}//第二種,在parent容器中添加overflow:auto的屬性,并針對于IE6增加zoom:1的屬性。

優點:不存在結構和語義化問題,代碼量極少。

缺點:內容增多時候容易造成不會自動換行導致內容被隱藏掉,無法顯示需要溢出的元素。

原理:必須定義width或zoom:1,同時不能定義height,使用overflow:hidden時,瀏覽器會自動檢查浮動區域的高度。

4、父元素也設置浮動

????????只需給parent容器添加 float:left,也可閉合浮動。

  ?優點:代碼少

  ?缺點:會導致整個頁面大部分都處于浮動狀態,頁面布局容易出現問題

????????當然方法還有很多比如:display:table;改變盒模型屬性。還有給父級元素添加position:absolute定位等方法。

說到底閉合浮動或者清楚浮動的原理主要就是這么兩個原理:

  • 通過在浮動元素的末尾添加一個空元素,設置 clear:both屬性,after偽元素其實也是通過 content 在元素的后面生成了內容為一個點的塊級元素;

  • 通過設置父元素 overflow 或者display:table 屬性等來閉合浮動,其實這是觸發了Block formatting contexts (塊級格式化上下文,簡稱 BFC)。塊級格式化上下文是CSS可視化渲染的一部分。它是一塊區域,規定了內部塊盒的渲染方式,以及浮動相互之間的影響關系。

塊格式化上下文(BFC)有下面幾個特點:

???????BFC就像一道屏障,隔離出了BFC內部和外部,內部和外部區域的渲染相互之間不影響。BFC有自己的一套內部子元素渲染的規則,不影響外部渲染,也不受外部渲染影響。

???????BFC的區域不會和外部浮動盒子的外邊距區域發生疊加。也就是說,外部任何浮動元素區域和BFC區域是涇渭分明的,不可能重疊。

???????BFC在計算高度的時候,內部浮動元素的高度也要計算在內。也就是說,即使BFC區域內只有一個浮動元素,BFC的高度也不會發生塌縮,高度是大于等于浮動元素的高度的。

???????HTML結構中,當構建BFC區域的元素緊接著一個浮動盒子時,即,是該浮動盒子的兄弟節點,BFC區域會首先嘗試在浮動盒子的旁邊渲染,但若寬度不夠,就在浮動元素的下方渲染。

現在我們再來分析一下overflow清除浮動的原理:

??????當元素設置了overflow樣式,且值不為visible時,該元素就建構了一個BFC。.warp因設置了值為auto的overflow樣式,所以該元素建構出一個BFC,按照上面第三個特點,BFC的高度是要包括浮動元素的,所以.warp的高度被撐起來,達到了清除浮動影響的目的。overflow的作用就是為了構建一個BFC區域,讓內部浮動的影響都得以“內化”。

????? 至于哪些情況下,元素可以建構出BFC,大家可以自行查看CSS文檔對BFC的定義,這里就不再贅述了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393685.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393685.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393685.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

獲取iOS頂部狀態欄和Navigation的高度

狀態欄的高度 20 [[UIApplication sharedApplication] statusBarFrame].size.height Navigation的高度 44 self.navigationController.navigationBar.frame.size.height 加起來一共是64 轉載于:https://www.cnblogs.com/Free-Thinker/p/6478715.html

Java電商項目-5.內容管理cms系統

目錄 實現加載內容分類樹功能實現內容分類動態添加刪除內容分類節點實現內容分類節點的分頁顯示實現廣告內容的添加實現廣告內容刪除實現廣告內容編輯到Github獲取源碼請點擊此處實現加載內容分類樹功能 注: 往后將不在說編寫遠程服務方法和編寫web模塊等重復語句, 直接用"…

leetcode738. 單調遞增的數字(貪心)

給定一個非負整數 N&#xff0c;找出小于或等于 N 的最大的整數&#xff0c;同時這個整數需要滿足其各個位數上的數字是單調遞增。 &#xff08;當且僅當每個相鄰位數上的數字 x 和 y 滿足 x < y 時&#xff0c;我們稱這個整數是單調遞增的。&#xff09; 示例 1: 輸入: …

MySQL purge 線程

MySQL中purge線程知識&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/innodb-improved-purge-scheduling.htmlInnoDB中delete所做刪除只是標記為刪除的狀態&#xff0c;實際上并沒有刪除掉&#xff0c;因為MVCC機制的存在&#xff0c;要保留之前的版本為并發所使用。最終…

安裝inde.html使用babel,reactjs – 使用Babel Standalone進行單個React組件渲染,僅使用index.html和Component...

Noob與React在這里.我正在玩React.我有一個簡單的組件在我的component.js中呈現.它包含在我的index.html文件中.我在頭部包含了React,ReactDOM和babel的腳本.我只想看到一個div正確渲染.我還沒有使用Node,只是使用React和Babel(使用babel-standalone).我正在使用一個簡單的http…

軟件工程師轉正申請_這是申請軟件工程師工作的4種最佳方法-以及如何使用它們。...

軟件工程師轉正申請by YK Sugi由YK Sugi 這是適用于軟件工程師工作的最佳方法&#xff0c;以及確切的使用方法。 (Here are the best methods for applying to software engineer jobs — and exactly how to use them.) When people think of applying for jobs, they often …

【JS新手教程】LODOP打印復選框選中的任務或頁數

之前的博文&#xff1a;【JS新手教程】LODOP打印復選框選中的內容關于任務&#xff1a;Lodop打印語句最基本結構介紹&#xff08;什么是一個任務&#xff09;關于本文用到的JS的eval方法&#xff1a;JS-JAVASCRIPT的eval()方法該文用的是不同checkbox&#xff0c;對應不同的val…

查詢范圍_企二哥:查詢企業經營范圍的三種方法

一、查詢企業經營范圍的三種方法1. 進經營地的工商局網站,有個“全國企業信用信息公示系統”進去后輸入公司名稱搜索就出來了。2. 有個軟件叫做天眼查&#xff0c;打開天眼查輸入要查詢的公司名稱&#xff0c;就可以搜出來了。不光是經營范圍&#xff0c;還有許多和企業相關的資…

C#用DataTable實現Group by數據統計

http://www.cnblogs.com/sydeveloper/archive/2013/03/29/2988669.html 1、用兩層循環計算&#xff0c;前提條件是數據已經按分組的列排好序的。 DataTable dt new DataTable();dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(string)), …

CI框架取消index.php

首先看文檔&#xff1a; http://codeigniter.org.cn/user_guide/general/urls.html#url-index-php 大致意思是&#xff0c;先Apache開啟rewrite&#xff0c;再index.php同級目錄下創建一個.htaccess文件 設置好后還是不起作用&#xff01;&#xff01;&#xff01;&#xff01;…

電子工程師自學成才pdf_給新開發人員的最佳建議:自學成才的軟件工程師的建議...

電子工程師自學成才pdfby Ali Spittel通過Ali Spittel 給新開發人員的最佳建議&#xff1a;自學成才的軟件工程師的建議 (My best tips for new developers: advice from a (mostly) self-taught software engineer) The most common question I get from blog readers is “W…

leetcode1090. 受標簽影響的最大值(貪心算法)

我們有一個項的集合&#xff0c;其中第 i 項的值為 values[i]&#xff0c;標簽為 labels[i]。 我們從這些項中選出一個子集 S&#xff0c;這樣一來&#xff1a; |S| < num_wanted 對于任意的標簽 L&#xff0c;子集 S 中標簽為 L 的項的數目總滿足 < use_limit。 返回子…

html顯示hdf5文件,python讀取hdf5文件

python怎樣讀取hdf5文件python 中h5py讀文件,提示錯誤File "h5py\_objects完整代碼和完整錯誤信息的圖片。Windows環境下給Python安裝h5py失敗&#xff0c;HDF5已經安裝使用pip install h5py命令安裝已經安裝了HDF5-1.10.0-win64.msi3第一張圖上說的是,“不能打開頭文件hd…

課后練習----實現窗口的切換

1、運用事件處理相關知識&#xff0c;完成兩個窗口之間的切換&#xff0c;例如&#xff1a;登陸窗口------》注冊窗口 package Date; import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing…

Hello 云棲

這是第一篇博客

ai物聯網工業_人工智能和物聯網將如何改變行業

ai物聯網工業by Mariya Yao姚iya(Mariya Yao) 人工智能和物聯網將如何改變行業 (How Artificial Intelligence & the Internet of Things will transform industries) 微軟首席技術官凱文斯科特(Kevin Scott)訪談 (An interview with Microsoft CTO Kevin Scott) As part …

20145206鄒京儒《網絡對抗》逆向及Bof基礎實踐

20145206鄒京儒《網絡對抗》逆向及Bof基礎實踐 1 逆向及Bof基礎實踐說明 1.1 實踐目標 本次實踐的對象是一個名為pwn1的linux可執行文件。 該程序正常執行流程是&#xff1a;main調用foo函數,foo函數會簡單回顯任何用戶輸入的字符串。 該程序同時包含另一個代碼片段&#xff0c…

計算機專業考研過關率高么,考研過國家線的幾率有多大?被刷的有多少?

考研每年究竟有多少人可以過國家線&#xff0c;可能很多同學都對很奇心&#xff0c;很想知道這個數據。很多人應該都知道&#xff0c;教育部在劃定國家線時&#xff0c;會統計考生的總體情況&#xff0c;然后再分別統計13個大類學科&#xff0c;產生一個大致的數據的&#xff0…

復工復產三個一內容_節后復產復工,彭聰恩強調“三個一”

彭聰恩查看大良永旺購物商場監控室順德城市網消息 (記者張瓊)春節已過&#xff0c;元宵將至&#xff0c;安全生產工作時刻不可放松。為確保全區市民過上一個安全祥和的元宵節&#xff0c;昨日(2月21日)上午&#xff0c;順德區委副書記、區長彭聰恩&#xff0c;副區長賴雪暉帶隊…

leetcode1405. 最長快樂字符串(貪心算法)

如果字符串中不含有任何 ‘aaa’&#xff0c;‘bbb’ 或 ‘ccc’ 這樣的字符串作為子串&#xff0c;那么該字符串就是一個「快樂字符串」。 給你三個整數 a&#xff0c;b &#xff0c;c&#xff0c;請你返回 任意一個 滿足下列全部條件的字符串 s&#xff1a; s 是一個盡可能…