詳細解讀css中的浮動以及清除浮動的方法

?? 對于前端初學者來說,css浮動部分的知識是一塊比較難以理解的部分,下面我將把我學習過程中的心得分享給大家。

導讀:

? 1.css塊級元素講解

? 2.css中浮動是如何產生的

 3.出現浮動后,如何清除浮動(本文將涉及到多種清除浮動的方法)

博客正文:

? 1.css塊級元素講解

  常見的塊級元素主要有以下幾種:<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form><dir><hr>。

  css中塊級元素的特點:塊級元素可以設置寬高,如果不設置的話,默認為父容器的寬高;總是在新行上開始并且獨占一行;高度,行高以及外邊距和內邊距都可控制;可以容納內聯元素和其他塊元素;

 2.css中浮動是如何產生的

  在網頁布局中為了布局更美觀,布局更方便,于是我們不可避免的要使用元素浮動,在css中我們使用float來設置浮動。下面我們來詳細講解浮動:

  請看下圖,當把框 1 向右浮動時,它脫離文檔流并且向右移動,直到它的右邊緣碰到包含框的右邊緣:

???? 再請看下圖,當框 1 向左浮動時,它脫離文檔流并且向左移動,直到它的左邊緣碰到包含框的左邊緣。因為它不再處于文檔流中,所以它不占據空間,實際上覆蓋住了框 2,使框 2 從視圖中消失。

?? 如果把所有三個框都向左移動,那么框 1 向左浮動直到碰到包含框,另外兩個框向左浮動直到碰到前一個浮動框。

?  

  如下圖所示,如果父容器的包含框太窄,將三個元素都設置為浮動后,如果水平排列的三個浮動元素超出包含框的寬度,那么排在后面的浮動塊向下移動,直到有足夠的空間。如果浮動元素的高度不同,最前面的元素高度高于后面被擠下來的元素,那么當它們向下移動時可能被其它浮動元素“卡住”:

     

? ?在實際開發中設置完浮動后,有的時候我們需要清除浮動,一次我們需要了解clear屬性。

  3.出現浮動后,如何清除浮動(本文將涉及到多種清除浮動的方法)    

?????? 清除浮動的語法:

?

??????   clear : none | left | right | both

?

?????? 取值:

?

??????   none? :? 默認值。允許兩邊都可以有浮動對象

?

??????   left?? :? 不允許左邊有浮動對象

?

??????   right? :? 不允許右邊有浮動對象

?

??????   both? :? 不允許有浮動對象

  牢記:css浮動的規則只能影響使用的元素本身,不會影響其他元素。

  在實際討論清除浮動前我們先討論下為什么要清除浮動,首先看一下下面的例子,有助于更好地理解為什么要清除浮動:

??    

   代碼如下:

     <!DOCTYPE html>
     <html>
?? ?????? <head>
?? ??? ???? <meta charset="UTF-8">
?? ??? ? ?? <title></title>
?? ??? ? ?? <style type="text/css">
?? ??? ??? ? .div1{width: 200px;height: 200px;background: orange; float: left;}
?? ??? ??? ? .div2{width: 200px;height: 200px;background: green; float: left;}
?? ??? ??? ? .div3{width: 200px;height: 200px;background: red; float: left;}
?? ??? ??? ? .outer{border: 1px solid #ccc;background: #fc9;color: #fff;}
?? ??? ??? </style>
?? ?????? </head>
?? ? ? ?? <body>
?? ??? ???? <div class="outer clear-outer">
?? ??? ?????? <div class="div1">1</div>
?? ??? ??? ?? <div class="div2">2</div>
?? ??? ?????? <div class="div3">3</div>

       <div class="clear">3</div>
?? ???????? </div>
?? ?????? </body>
????????? </html>
   未清除浮動帶來的影響主要有以下三點;

????????????? 1、背景不能顯示

?

??????    2、邊框不能撐開

?

     ?? 3、margin padding設置值不能正確顯示
  清除浮動的方法:

  方法一:

    

.clear{clear:both; height: 0; line-height: 0; font-size: 0}

  方法二:父級div定義 overflow: auto 

    .clear-outer{      overflow: auto; zoom: 1; //zoom: 1; 是在處理兼容性問題     }

?

  方法三:

??    .outer {zoom:1;}??? /*==for IE6/7 Maxthon2==*/
    .outer :after {clear:both;content:'.';display:block;width: 0;height: 0;visibility:hidden;}/*==for FF/chrome/opera/IE8==*/

    這種方法清除浮動是現在網上最拉風的一種清除浮動,他就是利用:after和:before來在元素內部插入兩個元素塊,從面達到清除浮動的效果。其實現原理類似于clear:both方法,只是區別在于:clear在html插入一個div.clear標簽,而outer利用其偽類clear:after在元素內部增加一個類似于div.clear的效果。

   清除浮動后的效果展示如下:

  

 總結:

  清除浮動的方式雖然是有很多種,但是不是每種都適合你,也不是每種都能很好的兼容所有瀏覽器,所以參照你覺得最好的方式去做,個人覺得方法三不錯,不需多于的標簽,而且也能很好的兼容。

?

?

  

?

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

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

相關文章

微信多開txt_電腦版微信怎么雙開、多開

新建一個txt文本文件&#xff0c;在文件中寫入如下代碼&#xff1a;echo offstart /d "C:\Program Files (x86)\Tencent\WeChat\" WeChat.exestart /d "C:\Program Files (x86)\Tencent\WeChat\" WeChat.exeexit保存文本文件。這里需要注意的是&#xff1a…

java 基礎--隨筆

---恢復內容開始--- java 對大小寫敏感。 java沒有任何無符號類型&#xff08;unsigned&#xff09;。 C/C是編譯型語言&#xff0c;java是解釋性語言。 JAVA編譯過程同C/C 的 編譯有些不同。當C編譯器編譯生成一個對象的代碼時&#xff0c;該代碼是為在某一特定硬件平臺運行而…

多源計算機培訓,多源數據匯聚的多流形學習算法研究

摘要&#xff1a;隨著信息技術和互聯網的飛速發展,人們可以從多個信息源獲得數據,即多源數據.由于多源數據具有類型多樣,尺度不統一等特點,對多源數據進行匯聚并提取有效信息是機器學習和模式識別等領域研究的熱點.由于多流形學習能夠有效地揭示復雜數據中的內在結構,因此本文主…

Ubuntu 16.04 安裝mysql5.7

技術更新換代&#xff0c;數據庫也不斷更新&#xff0c;需要不斷努力學習&#xff0c;下面就是如何在 ubuntu中安裝 mysql。 廢話不多說&#xff0c;上來就是干 一、安裝mysql 5.7 sudo apt-get update sudo apt-get install mysql-server 中間會提示您輸出root 密碼&#xff…

CSS多列布局(實例)

前言 一列布局二列布局三列布局 1 一列布局 一列布局&#xff1a; HTML部分 <!DOCTYPE html> <html> <head> <meta charset"utf-8" /> <title>一列布局</title> </head> <body> <div class"head">…

阿帕奇駱駝備忘單

輪詢一個空目錄&#xff08;并發送一個空消息&#xff0c;正文為空&#xff09;&#xff1a; from(file://temp?sendEmptyMessageWhenIdletrue)停止路線&#xff1a; .process(new Processor() {public void process(Exchange exchange) throws Exception {getContext().stopR…

js中雙感嘆號_JavaScript中雙嘆號(!!)作用

經常看到這樣的例子&#xff1a;vara&#xff1b;var b!!a;a默認是undefined。!a是true&#xff0c;!!a則是false&#xff0c;所以b的值是false&#xff0c;而不再是undefined&#xff0c;也非其它值&#xff0c;主要是為后續判斷提供便利。!!一般用來將后面的表達式強制轉換為…

大頭貼計算機教程,推薦!自家電腦也能拍大頭貼的秘密

您可能感興趣的話題&#xff1a;美圖拍拍核心提示&#xff1a;一直都超愛拍大頭貼&#xff0c;喜歡每張都能換不同的框框&#xff1b;喜歡可以直接看到效果&#xff0c;做出滿意的動作&#xff1b;喜歡將大頭貼和朋友們分享……不過夏日炎炎的&#xff0c;出門太麻煩&#xff0…

用CSS偽類制作一個不斷旋轉的八卦圖?

前言 介紹一下如何制作一個不斷旋轉的八卦圖。快速預覽代碼及效果&#xff0c;點擊&#xff1a;八卦圖 代碼如下&#xff1a; HTML部分 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>JS Bin</title> </head&…

js根據ip自動獲取地址(省市區)

HTML&#xff1a; <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0"><title>標題</title>&l…

流利的對象創建

關于此主題的文章很多&#xff08;絕大多數&#xff09;&#xff0c;但我只是想貢獻我的兩分錢&#xff0c;寫一篇簡短的文章&#xff0c;介紹如何使用Java中的Fluent Object Creation模式或對象構建器實例化Value Objects。 值對象是由其狀態&#xff08;值&#xff09;而不是…

計算機等級考試試題4,計算機等級考試二級模擬試題4

計算機等級考試二級模擬試題計算機等級考試二級模擬試題4基礎知識與FOXBASE程序設計(考試時間120分鐘&#xff0c;滿分100分)一、選擇題((1)-(40)每個選項1分,(41)-(50)每個選項2分,共60分)下列各題A)、B)、C)、D)、四個有選項中,只有一個選項是正確的(1)通常所說的主機主要包括…

springboot怎么替代jsp_如何在SpringBoot中使用JSP ?

1. 在pom.xm中加入支持JSP的依賴org.apache.tomcat.embedtomcat-embed-jasperprovidedjavax.servlet.jsp.jstljstl-api1.22. 在src/main/resources/application.properties文件中配置JSP和傳統Spring MVC中和view的關聯# MVCspring.view.prefix/WEB-INF/views/spring.view.suff…

css選擇器的綜合使用

代碼實現&#xff1a; 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"utf-8">5 <title>css的綜合使用</title>6 <style>7 div {8 colo…

啟動tomcat時 一閃而過解決方法

【前文】 在實際開發中一般都是eclipsetomcat(也許還會用到tomcat的插件)&#xff0c;我們只需要在eclipse中單擊servers上的按鈕就可以成功啟動tomcat了&#xff0c; 但是如果想在tomcat的安裝目錄下 雙擊startup.bat啟動時卻一閃而過了。這是為什么呢&#xff08;tomcat啟動失…

Google Guava多集

繼續這次番石榴之旅&#xff0c;我們到達了Multiset 。 我可能不像Multimaps或Bimaps那樣使用它&#xff0c;但是它確實有它的用途。 那么什么是多重集&#xff1f; 也許您可以猜到它是一個可以容納同一對象的多個實例的集合。 這不僅僅是列表嗎&#xff1f; 在Java中&#x…

用javascript實現簡單的用戶登錄驗證

用javascript實現簡單的用戶登錄驗證 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title> </head> <body><script type"text/javascript">function c…

怎么把計算機改程序,怎樣修改程序軟件

大家好&#xff0c;我是時間財富網智能客服時間君&#xff0c;上述問題將由我為大家進行解答。修改程序軟件的方法是&#xff1a;這個必須要會編程才行&#xff1b;不會編程的話那是不可能的&#xff1b;對它進行反編譯&#xff1b;脫殼&#xff1b;反編譯好再把它重新加殼。程…

HTML的display屬性將行內元素、塊狀元素、行內塊狀元素互相轉換以及三者的區別

1.行內元素 查看演示 (1)設置寬高無效 (2)對margin僅設置左右方向有效&#xff0c;上下無效&#xff1b;padding設置上下左右都有效&#xff0c;即會撐大空間 (3)不會自動進行換行 <html> <head> <meta charset"utf-8" /> <title>行內元…

linux里面三劍客的重要作用

在服務器日志fresh.log中&#xff0c;找到所有報錯的日期 $ sed -n /Error/p | awk {print $1} fresh.log grep:查找sed:行編輯器awk:文本處理工具 正則表達式的應用場景查找所有包含xxx的行取出以abc開頭的所有單詞匹配兩位數、密碼、QQ號、身份證號等 查找、取出、匹配符合條…