理解CSS浮動float、定位position

一 . 浮動float
I . 定義及規(guī)則
float默認為none,對應標準流的情況。當float : left;時,元素就會向其父元素的左側靠緊,脫離標準流,同時寬度不再伸展至充滿父容器,而是根據(jù)自身內容來確定。
II . 演示規(guī)則
準備代碼
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title></title>
- <style>
- body
- {
- margin: 0;
- padding: 0;
- }
- #father
- {
- background-color: cyan;
- /*父級div 沒有定位 造成子div的margin-top傳遞給父級*/
- position: absolute;
- }
- #father *
- {
- margin: 10px;
- padding: 10px;
- border: 1px dashed red;
- }
- #son1
- {
- }
- #son2
- {
- }
- #son3
- {
- }
- </style>
- </head>
- <body>
- <div id="father">
- <div id="son1">#son1</div>
- <div id="son2">#son2</div>
- <div id="son3">#son3-son3son3son3</div>
- <p>
- 這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字這是文字
- </p>
- </div>
- </body>
- </html>
1、中間給#father加上position:absolute,是為了消除未定位父div的margin-top傳遞問題,相關內容如下
嵌套div中margin-top轉移問題的解決辦法
在這兩個瀏覽器中,有兩個嵌套關系的div,如果外層div的父元素padding值為0,那么內層div的margin-top或者margin-bottom的值會“轉移”給外層div。
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>無標題文檔</title>
- </head>
- <body>
- <div style="background-color:#FF0000;width:300px; height:100px">上部層</div>
- <div style="background-color:#009900; width:300px; height:300px;overflow:hidden "> <!--父層-->
- <div style="margin:50px; background-color:#000000;width:200px; height:200px"">子層</div>
- </div>
- </body>
- </html>
原因:盒子沒有獲得 haslayout 造成 margin-top無效
解決辦法:
1、在父層div加上:overflow:hidden;
2、把margin-top外邊距改成padding-top內邊距 ;
3、父元素產生邊距重疊的邊有不為 0 的 padding 或寬度不為 0 且 style 不為 none 的 border。
父層div加: padding-top: 1px;
4、讓父元素生成一個 block formating context,以下屬性可以實現(xiàn)
* float: left/right
* position: absolute
* display: inline-block/table-cell(或其他 table 類型)
* overflow: hidden/auto
父層div加:position: absolute;
顯示效果為
2、1,2的float分別為left right時,有
可見1,2脫離標準流,標準流中的son3當他們不存在,于是son3代替原來son1的位置,而son1的左border、son2的右border與son3的左右border重合
3、當1,2,3全都float left時
文字圍繞著float過的div
4、1,2左浮動,3右浮動,當窗口寬度減小時,3會被擠下來
當3左浮動,2右浮動的時候,顯示為
當瀏覽器窗口寬度減小時,猜猜誰會被擠下來,son2么?
答案還是son3,規(guī)則為 : 寫在html文件中后面的會被擠下來,在html文件中,son3在son2后面,因此總是son3先擠下來。
5、增加son1高度,son3擠下來時會卡在那里
6、刪除盒子中的文字,3個子div全部左浮動
顯示為
父div中的三個子div全部脫離標準流了,父div就縮成一條線了,可以用clear來修正
加一個margin-padding-border全為0,clear為both的空div,來撐大父div
III . clear清除浮動
如果前面有float:left的元素,他會影響下面元素,如上例中的p,在p元素中寫clear : left即可消除前面左浮動元素對本元素的影響.同理clear:both是左右都清除.
二 . 定位position
position取值有static absolute relative fixed
1. static
這個是默認的,即標準流排下來,就是static定位方式.
2. fixed
在瀏覽器窗口中固定,什么論壇中的[回到頂部]這種按鈕就是fixed做的
練習做個回到頂部玩玩
- <div id="backToTop">
- 回到頂部
- </div>
- #backToTop
- {
- width: 100px;
- height: 50px;
- background-color: red;
- color: white;
- cursor: pointer;
- border-radius: 25px 0 0 25px;
- padding-left: 20px;
- text-align: center;
- line-height: 50px;
- position: fixed;
- bottombottom: 80px;
- rightright: 0;
- }
顯示效果
3. relative相對定位
相對于自己的偏移,而且不脫離標準流,使用top/bottom left/right指定偏移量
4. absolute絕對定位
根據(jù)別的已定位元素進行定位,應用absolute規(guī)則的脫離標準流
1)、這個別的元素:
離它最近的已定位的祖先元素 或者 瀏覽器窗口,當找不到前面的祖先元素時,就以后者瀏覽器窗口來定位.
2)、已經定位 : 是指position已經設置,而且不是static...即position值不為static就是已經定位的元素,未設置position或設置為static認為它沒有定位.
Trick
只設置 position : absolute,而不設置top/bottom/left/right值,那么元素會保持在原地,但是已經脫離標準流.
三 . display
display取值有inline block none
設置為none,即可將其隱藏,像inline-block等新添加的
以上就是本文的全部內容,希望對大家學習CSS教程有所幫助。
原文網址:http://www.cnblogs.com/shouce/archive/2016/04/21/5415502.html
相關文章
- 使元素脫離文檔流,按照指定方向發(fā)生移動,遇到父級邊界或者相鄰的浮動元素停了下來。本文給大家?guī)砹薈SS清除浮動float的三種方法小結,感興趣的朋友跟隨腳本之家小編一起2018-03-13
- 這篇文章主要介紹了詳解css清除浮動float的七種常用方法總結和兼容性處理,非常具有實用價值,需要的朋友可以參考下2017-09-11
- 本文詳細介紹了CSS中position定位和float浮動的相關知識,具有很好的參考價值,下面跟著小編一起來看下吧2017-02-24
- 這篇文章主要介紹了CSS使用float屬性設置浮動元素的實例教程,包括使用overflow清除浮動的方法,需要的朋友可以參考下2016-07-07
- 這篇文章主要介紹了css浮動(float/clear)使用方法,如果你理解CSS盒子模型,但對于浮動不理解,那么這篇文章可以幫助你2014-03-14
- 對于浮動始終非常迷惑,可能是自身理解能力差,也可能是沒能遇到一篇通俗的教程,前兩天終于搞懂了浮動的基本原理,迫不及待的分享給大家,感興趣的朋友可以參考下哈,希望2013-03-28
- 這篇文章主要介紹了html/css中float浮動的用法實例詳解,需要的朋友可以參考下2019-09-10