搜尋
首頁web前端html教學float的深入剖析_html/css_WEB-ITnose

float是什么?

float即为浮动,在html中的作用是使元素脱离正常的文档流并使其移动到其父元素的“最左边”或“最右边”。下面解释下这个定义中的几个名词的概念:

文档流:在html中文档流即为元素从上至下排列的顺序。 脱离文档流:元素从正常的排列顺序被抽离。 最左边/最右边:上述的移动到父元素最左和最右是指元素往左或往右移动直到碰到另一个浮动元素或父元素内容区的边界(不包括padding)。 float造成的影响 对其父元素的影响

对于其父元素来说,元素浮动之后,它脱离正常文档流,所以它也无法撑开其父元素,造成父元素的塌陷,效果如下图所示。

  

 1 //CSS 2 #wrapper { 3     padding: 20px; 4     border: 1px solid red; 5     width: 350px; 6 } 7 .floatL { 8     width: 100px; 9     height: 100px;10     border: 1px solid #000;11     float: left;12 }13 .floatR {14     width: 100px;15     height: 100px;16     border: 1px solid #000;17     float: right;18 }19 .blue {background: #6AA;}20 .red {background: #A66;}

1 //html 2 <div id="wrapper"> <div class="floatL blue">AAAAAAAA</div> </div>

对其兄弟元素(非浮动)的影响

如果兄弟元素为 块级元素 ,该元素会忽视浮动元素的而占据它的位置,并且元素会处在浮动元素的下层(并且无法通过z-index属性改变他们的层叠位置),但它的内部文字和其他行内元素都会环绕浮动元素。 需要注意的是,在IE 6、7下则分别都有不同的表现,IE 6、7中,如果非浮动元素触发了自身的hasLayout,则该元素会紧跟在浮动元素的右侧。并且在IE6中两者之间留有3px的空隙。这就是著名的“IE 3px bug”

1 //CSS,其他的样式按照上面给出的,此处就不再重复了2 .block {3     width: 200px;4     height: 150px;5     border: 1px solid #000;6     background: #CCC;7 }

1 <div id="wrapper">2     <div class="floatL blue">AAAAAAAA</div>3     <div class="block">BBBBBBBBB</div>4 </div>

现代浏览器:

IE 6:

IE 7:

如果如果兄弟元素为 内联元素

则元素会环绕浮动元素排列。

1 <div id="wrapper">2     <div class="floatL blue">AAAAAAAA</div>3     文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字4 </div>

1 <div id="wrapper">2     <div class="floatL blue">AAAAAAAA</div>3     <img  src="/static/imghwm/default1.png"  data-src="XXX.png"  class="lazy" alt="float的深入剖析_html/css_WEB-ITnose" >4 </div>

对其兄弟元素(浮动)的影响

同一个方向的浮动元素:

当一个浮动元素在浮动过程中碰到同一个方向的浮动元素时,它会紧跟在它们后面,可以用这样一个形象的比喻来描述: 在一个购票中心里,某人从一条购票队列跑到旁边的一条购票队列中排队,那自然先跑过去的会先占据前面的位置。但这条购票队列还是位于当前的购票中心中 ,因此这条浮动的队列和正常的文档流队列也依旧在同一个父元素当中。

1 <div id="wrapper">2     <div class="floatL red">AAAAAAAA</div>3     <div class="floatL blue">BBBBBBBBBB</div>4 </div>

反方向的浮动元素:

正如上面的比喻所述,我们可以假设购票中心里左右两边的各有一个购票点(如图,这里我们把一个div看做一个购票者),左浮动的队列可看做左购票点的购票队列,反方向的浮动(即右浮动)则是右边购票点的购票队列,所以在购票中心足够宽的时候两条队列的人群是互不受影响的。因此他们在同一条水平线上。

1 <div id="wrapper">2     <div class="floatL red">AAAAAAAA</div>3     <div class="floatR blue">BBBBBBBBBB</div>4 </div>


但当购票中心过窄或者左右两边的购票队列过长时,其中一条队列则会另起一行排列(此处为B队列,有人可能会问为什么不是A队列另起一行?从下面HTML结构上可知,这是因为在时间上,A队列比B队列更早地建立,根据先到先得的原则,B队列的购票者在位置不够的时候自然要另起了一行了)。

1 <div id="wrapper">2     <div class="floatL red">AAAAAAAA</div>3     <div class="floatL red">AAAAAAAA</div>4     <div class="floatR blue">BBBBBBBBBB</div>5     <div class="floatR blue">BBBBBBBBBB</div>6 </div>


当同一行中连一个购票者的位置都容不下时,两条队列则会错开两行

1 <div id="wrapper">2     <div class="floatL red">AAAAAAAA</div>3     <div class="floatL red">AAAAAAAA</div>4     <div class="floatL red">AAAAAAAA</div>5     <div class="floatR blue">BBBBBBBBBB</div>6     <div class="floatR blue">BBBBBBBBBB</div>7 </div>

float对自身元素的影响

float对象将被视作块对象(block-level),即display属性等于block。

float对子元素的影响

我们知道当一个元素浮动时,在没有清楚浮动的情况下,它无法撑开其父元素,但它可以让自己的浮动子元素撑开它自身,并且在没有定义具体宽度情况下,使自身的宽度从100%变为自适应(浮动元素display:block)。其高度和宽度均为浮动元素高度和非浮动元素高度之间的最大值。

1 //这里我们去掉#wrapper的固定宽度,并在其外部增加一个固定宽度的div,以便更好地展示2 <div class="container">3     <div id="wrapper">4         <div class="floatL red">AAAAAAAA</div>5         <div class="floatL red">AAAAAAAA</div>6     </div>7 </div>

1 <div class="container">2     <div id="wrapper"   style="max-width:90%">3         <div class="floatL red">AAAAAAAA</div>4         <div class="floatL red">AAAAAAAA</div>5     </div>6 </div>

1 .block {2     width: 250px;3     height: 50px;4     border: 1px solid #000;5     background: #CCC;6 }

1 <div class="container">2     <div id="wrapper" style="float:left;">3         <div class="floatL red">AAAAAAAA</div>4         <div class="floatL red">AAAAAAAA</div>5         <div class="block"></div>6     </div>7 </div>

1 .block {2     width: 150px;3     height: 150px;4     border: 1px solid #000;5     background: #CCC;6 }

float对父元素之外的元素的影响

父元素之外的非浮动元素

从上面可知,当一个元素浮动时,在没有清楚浮动的情况下,它无法撑开其父元素,也就是父元素的宽高都为0。并且其父元素之外的非浮动元素也会无视该浮动元素,浮动元素仿佛到了另外一个世界里。

1 //CSS2 .outer {3     height:150px;4     width: 350px;5     border:1px solid blue;6 }

1 //HTML2 <div id="wrapper">3     <div class="floatL red">AAAAAAAA</div>4 </div>5 <div class="outer"></div>

父元素之外的浮动元素

当浮动元素的父元素之外的元素为浮动元素时,他们仿佛去到了同一个世界里。
两个元素的浮动方向相同时:

1 <div id="wrapper">2     <div class="floatL red">AAAAAAAA</div>3 </div>4 <div class="outer" style="float:left;"></div>

两个元素的浮动方向相反时:

1 //CSS,这里我们在他们外面增加一个固定宽高的div以便展示,否则右浮动的元素会浮动到body的右边界2 .container {3     width:650px;4     height: 250px;5     border: 1px solid #000;6 }

1 <div class="container">2     <div id="wrapper">3         <div class="floatL red">AAAAAAAA</div>4     </div>5     <div class="outer" style="float:right;"></div>6 </div>

1 <div class="container">2     <div id="wrapper">3         <div class="floatL red">AAAAAAAA</div>4         <div class="floatL red">AAAAAAAA</div>5         <div class="floatL red">AAAAAAAA</div>6         <div class="floatL red">AAAAAAAA</div>7     </div>8     <div class="outer" style="float:right;"></div>9 </div>

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
從文本到網站:HTML的力量從文本到網站:HTML的力量Apr 13, 2025 am 12:07 AM

HTML是一種用於構建網頁的語言,通過標籤和屬性定義網頁結構和內容。 1)HTML通過標籤組織文檔結構,如、。 2)瀏覽器解析HTML構建DOM並渲染網頁。 3)HTML5的新特性如、、增強了多媒體功能。 4)常見錯誤包括標籤未閉合和屬性值未加引號。 5)優化建議包括使用語義化標籤和減少文件大小。

了解HTML,CSS和JavaScript:初學者指南了解HTML,CSS和JavaScript:初學者指南Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML的角色:構建Web內容HTML的角色:構建Web內容Apr 11, 2025 am 12:12 AM

HTML的作用是通過標籤和屬性定義網頁的結構和內容。 1.HTML通過到、等標籤組織內容,使其易於閱讀和理解。 2.使用語義化標籤如、等增強可訪問性和SEO。 3.優化HTML代碼可以提高網頁加載速度和用戶體驗。

HTML和代碼:仔細觀察術語HTML和代碼:仔細觀察術語Apr 10, 2025 am 09:28 AM

htmlisaspecifictypefodyfocusedonstructuringwebcontent,而“代碼” badlyLyCludEslanguagesLikeLikejavascriptandPytyPythonForFunctionality.1)htmldefineswebpagertuctureduseTags.2)“代碼”代碼“ code” code code code codeSpassSesseseseseseseseAwiderRangeLangeLangeforLageforLogageforLogicIctInterract

HTML,CSS和JavaScript:Web開發人員的基本工具HTML,CSS和JavaScript:Web開發人員的基本工具Apr 09, 2025 am 12:12 AM

HTML、CSS和JavaScript是Web開發的三大支柱。 1.HTML定義網頁結構,使用標籤如、等。 2.CSS控製網頁樣式,使用選擇器和屬性如color、font-size等。 3.JavaScript實現動態效果和交互,通過事件監聽和DOM操作。

HTML,CSS和JavaScript的角色:核心職責HTML,CSS和JavaScript的角色:核心職責Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

HTML容易為初學者學習嗎?HTML容易為初學者學習嗎?Apr 07, 2025 am 12:11 AM

HTML適合初學者學習,因為它簡單易學且能快速看到成果。 1)HTML的學習曲線平緩,易於上手。 2)只需掌握基本標籤即可開始創建網頁。 3)靈活性高,可與CSS和JavaScript結合使用。 4)豐富的學習資源和現代工具支持學習過程。

HTML中起始標籤的示例是什麼?HTML中起始標籤的示例是什麼?Apr 06, 2025 am 12:04 AM

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器