clear:left/right 理解
clear在w3.org官方的解釋
The clear property indicates which sides of an element's box(es) may not be adjacent to an earlier floating box.
盒子的邊不和前面浮動盒子相鄰
因為html是上下的文件流,所以這裡的邊指的左邊和右邊
clear:left/right的實際用途(一)
clear:left/right最實際也是最常見的用途就是實現垂直環繞佈局。
下圖所示的佈局實現,HTML結構
可能會把頭像div和姓名div放在同一個父級div1中,div1左浮動
自我描述div2右浮動。
這樣實現倒是也可以,但是頭像 姓名 自我描述按照中文意思均屬同級,而此實現方式則把頭像 姓名 作為子級。
哪如何將頭像 姓名 自我描述作為同級,實現上面的佈局呢
這個時候則要藉助 clear 實現垂直環繞佈局。
<div style="width:500px;height: 100px;background:cornsilk;font-size:12px;overflow:hidden;_zoom:1;">
<div style="float:left;width:100px;height: 60px;background: yellow;...">頭像</div>
<div style="float:left;clear:left;width:100px;height: 40px;background: red;...">姓名</div>
<div style="margin-left:150px;width:300px;height: 100px;background: #C3D7E4;...">自我描述……</div>
</div>
不使用clear的時候,頭像和姓名均左浮動,所有姓名會再頭像右側,想要姓名再頭像下面,則需要clear姓名的左浮動
即
使用clear的時候
clear:left/right的實際用途(二)
由於元素浮動後脫離了文件流,所以父元素是無法根據元素來自適應的。解決此問題最常用的辦法由兩種,第一種就是在所有浮動元素後加:
<div style="clear:both;height:0px;"></div>
如圖
使用clear的
不使用clear
原來後邊的Clear:both;其實就是利用清除浮動來把外層的div撐開,所以有時候,我們在將內部div都設定成浮動之後,就會發現,外層div的背景沒有顯示,原因就是外層的div沒有撐開,太小,所以能看到的背景僅限於一條線。
第二種辦法,使用萬能clear:
.clearfix:after
{
visibility: hidden;
display: block;
font-size: 0;
content: ".";
clear: both;
height: 0;
}
* html .clearfix
{
zoom: 1;
}
*:first-child + html .clearfix
{
zoom: 1;
}
然後在你需要自適應的元素上加上class=” clearfix”即可。
這裡邊的原理:
(1)、首先是利用:after這個偽類來相容FF、Chrome等支援標準的瀏覽器。
:after偽類IE不支援,它用來和content屬性一起使用設定在物件後的內容,例如:
a:after{content:"(link)";}
這個CSS將會讓a標籤內的文字後邊加上link文字文字。
(2)、利用“* html”這個只有IE6認識的選擇符,設定縮放屬性“zoom: 1;”實現相容IE6。
(3)、利用“*:first-child + html”這個只有IE7認識的選擇符,設定縮放屬性“zoom: 1;”實現相容IE7。
參考
準確理解CSS clear:left/right的含義及實際用途
經驗分享:CSS浮動(float,clear)通俗講解
正確理解 clear:both
相關文章
- Oracle Left join right jionOracle
- MySQL LEFT JOIN/ INNER JOIN/RIGHT JOINMySql
- sql中的join、left join、right joinSQL
- sql left join 和 right join解釋SQL
- Sql 中的 left 函式、right 函式SQL函式
- mysql常用連線查詢join,left,right,crossMySqlROS
- 用實驗方法加深理解Oracle的外連線(left/right/full)和內連線(inner)Oracle
- sql之left join、right join、inner join的區別SQL
- 連線查詢簡析 join 、 left join 、 right join
- 兩種連線的表達 :left(right) join 和 (+)
- SQL中聯表查詢操作(LEFT JOIN, RIGHT JOIN, INNER JOIN)SQL
- join、inner join、left join、right join、outer join的區別
- left和right屬性也可以設定元素的寬度
- sql的left join 、right join 、inner join之間的區別SQL
- mysql中的left join、right join 、inner join的詳細用法MySql
- [LeetCode] 2516. Take K of Each Character From Left and RightLeetCode
- 爆牙齒的新發現:先clear:left才能正常position:absolute。
- SQL中常用的字串LEFT函式和RIGHT函式詳解!SQL字串函式
- left join,right join,inner join的條件on和where的區別
- MySQl 擷取函式 left(),right(),substring(),substring_index() 的用法MySql函式Index
- SAP Fiori應用裡對國際化RTL需求(right-to-left)的支援
- [20170203]12c left right 外連線的增強
- oracle的left join,right join和full join的一點介紹(R1)Oracle
- 探究:絕對定位沒有設定 top, right, bottom, left 的世界是怎樣的?
- mysql INNER JOIN、LEFT JOIN、RIGHT JOIN;內連線(等值連線)、左連線、右連線MySql
- 深入理解mysql之left join 使用詳解MySql
- iOS7 UI相容 導航欄按鈕邊框 UINavigationItem left and right paddingiOSUINavigationpadding
- vector::clear(),容器vector的clear函式詳解。函式
- DataTransferItemList.clear()
- sessionStorage.clear()Session
- IDBObjectStore.clear()Object
- mysql + left joinMySql
- No space left on devicedev
- oracle知識整理(1) union和union all的區別,left join和right join的區別(各種join的區別)Oracle
- Clear Case usage tips
- Clear Code for Minimal APIAPI
- SQL Server LEFT FunctionsSQLServerFunction
- SQL Server Left joinSQLServer