CSS之使用clearfix清除浮動
block一般一個塊佔一行,除非float
inline是自動排為一行,就象段內的文字一樣,可成為多行。
clear:both
語法:clear : none | left |right | both
none : 允許兩邊都可以有浮動物件
both : 不允許有浮動物件
left : 不允許左邊有浮動物件
right : 不允許右邊有浮動物件
說明:該屬性的值指出了不允許有浮動物件的邊。請參閱float屬性。
!important 具有優先權,提升指定樣式規則的應用優先權。
示例:div { color:red!important }
display:inline|block
display:inline比較經典的用法是用在 <ul> 下的 <li> 中
display:inline 對應不顯示為 display:none
display:block 對應不顯示為 hidden
說通俗點樣式為none的元素不佔位置,而樣式為hidden的元素雖然不顯示但還是佔地方
1.傳統處理方式:
li {float:left;}/*這樣,對固定寬度導航條來說,li不能自動居中*/
2.inline-block方式:
ul {text-align:center;font-family:simsun;font-size:14px;}
li {display:inline-block;*display:inline;zoom:1;margin-right:-0.5em;
*margin-right:0;}
a{display:block;}
/*行內顯示並且水平居中;
display:inline;zoom:1;是對ie的hack,
margin-right:0.5em是對現代瀏覽器去縫
*/
瀏覽器FireFox,Chrome下,li之間有縫隙,Google得知縫隙由字型大小產生,所以另外加入hack來除縫
關於zoom:1;的作用,可以看下幫助文件,地址:http://www.yesky.com/imagesnew/software/css/css2/c_zoom.html
而這兩種實現方法中,float:left要比display:inline;的表現方式要好。因為內聯(display:inline;)
屬於行佈局,其特性是在一行裡進行佈局,所以不能被設定寬高。塊級元素的佈局相對於內聯樣式要精
確的多。所以儘量使用float:left;
當我們使用float:left後,發現父級元素的div沒有被撐開了. 通常情況下要清理浮動.這也是我們公司現在所使用的方法. 如
<div>
<ul style="float:left">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
<!--需要清理浮動-->
<div style="clear:both"></div>
</div>
用了很久這樣的方法,每次寫Repeater繫結的時候都要加個<div style="clear:both"></div>的標籤,以
前沒有注意到這方面的東西.今天重新寫樣式的時候,就上網搜了下替代的方法.果然在Google中搜到了一
篇How To Clear Floats Without Structural Markup的文章,靈活的處理了清空浮動的問題
首先設定程式碼為:
.clearfix:after {
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
這樣我們只要對父級div引入這個clearfix的類即可,即
<div class="clearfix" >
<ul style="float:left">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
</div>
這個css的原理是經過使用after偽物件,它將在應用clearfix的元素結尾新增content中的內容,也就是一
個".",並且把他設定為塊級元素(display="block");高度設定為0,clear="both",然後將其內容隱藏掉
(visibility="hidden").這樣就會撐開此塊級元素.
但是,IE並不支援.所以如果你需要相容IE瀏覽器的話,可以設定以個Hack.
.clearfix:after {
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
* html .clearfix {zoom:1;}
這樣我們就可以只在父級div引用class類解決了繁瑣的清空步驟.
下面給出別的網站清空浮動的程式碼:
/* 豆瓣的clear both方式 */
.clearfix:after {
content: “.”;
display:block;
height:0;
clear:both;
visibility:hidden
}
.clearfix {
zoom: 1;
display: inline-block;
_height: 1px
}
*html .clearfix { height: 1% }
*+html .clearfix { height: 1% }
.clearfix { display: block }
CSS hack 用來讓網頁相容各種瀏覽器(在各種環境下都能“正確的”顯示)
*+html 與 *html 是IE特有的標籤, firefox 暫不支援.而*+html又為IE7特有標籤.
/*蝦米的方式*/
.clearfix:after{
content:”.”;
display:block;
height:0;
clear:both;
visibility:hidden;
}
直接copy下bootstrap裡面的clearfix寫法:
.clearfix {
*zoom: 1;
}
.clearfix:before, .clearfix:after {
display: table;
line-height: 0;
content: "";
}
.clearfix:after {
clear: both;
}
.clearfix{zoom:1;}
在一個有float 屬性元素的外層增加一個擁有clearfix屬性的div包裹,可以保證外部div的height,即
清除"浮動元素脫離了文件流,包圍圖片和文字的 div 不佔據空間"的問題。
看到”閒聊CSS之關於clearfix–清除浮動“ (http://www.indievox.com/e2ghost/post/50238)的文章給
了一個比較清晰的分析:
構成Block Formatting Context的方法有下面幾種:
float的值不為none。
overflow的值不為visible。
display的值為table-cell, table-caption, inline-block中的任何一個。
position的值不為relative和static。
很明顯,float和position不合適我們的需求。那隻能從overflow或者display中選取一個。
因為是應用了.clearfix和.menu的選單極有可能是多級的,所以overflow: hidden或overflow: auto也不
滿足需求
(會把下拉的選單隱藏掉或者出滾動條),那麼只能從display下手。
我們可以將.clearfix的display值設為table-cell, table-caption, inline-block中的任何一個
但是display: inline-block會產生多餘空白,所以也排除掉。
剩下的只有table-cell, table-caption,為了保證相容可以用display: table來使.clearfix形成一個Block Formatting Context因為display: table會產生一些匿名盒子,這些匿名盒子的其中一個(display值為table-cell)會形成Block Formatting Context。這樣我們新的.clearfix就會閉合內部元素的浮動。
這就是為什麼選擇display:table的原因。
firefox不支援float:right
<button class="vjs-fullscreen-control vjs-control vjs-button"
type="button" aria-live="polite" title="Fullscreen"
aria-disabled="false"></button>
<div class="vjs-volume-menu-button vjs-menu-button
vjs-menu-button-inline vjs-control vjs-button
vjs-volume-menu-button-horizontal vjs-vol-3"
title="Mute" aria-disabled="false"></div>
/********replace float:right********************/
.vjs-default-skin .vjs-volume-menu-button{
position:absolute;
right:0;
top:0;
margin-right: 4em;
}
.vjs-default-skin .vjs-fullscreen-control{
position:absolute;
right:0;
top:0;
}
/*.vjs-default-skin .vjs-volume-menu-button{
float:right;
margin-right: 4em;
}
.vjs-default-skin .vjs-fullscreen-control{
float:right;
}*/
/*******replace float:right*********************/
相關推薦
CSS之關於clearfix--清除浮動
一,什麼是.clearfix 你只要到Google或者Baidu隨便一搜"css清除浮動",就會發現很多網站都講到"盒子清除內部浮動時可以用到.clearfix"。 .clearfix:after { content:" "; display: block;
CSS之使用clearfix清除浮動
block一般一個塊佔一行,除非floatinline是自動排為一行,就象段內的文字一樣,可成為多行。clear:both語法:clear : none | left |right | both none : 允許兩邊都可以有浮動物件both : 不允許有浮動物件left : 不允許左邊有浮動物件r
CSS clearfix 清除浮動 用法詳解
一.為什使用 首先,我們來解釋一下為什麼要使用 clearfix(清除浮動)。 通常我們在寫html+css的時候,如果一個父級元素內部的子元素是浮動的(float),那麼常會發生父元素不能被子元素正常撐開的情況,如下圖所示:
clearfix清除浮動閉合容器之:after與:before
首先對偽類:before與:after做下注腳 :before 偽元素在元素之前新增內容。 :after 偽元素在元素之後新增內容。 這2個偽元素允許創作人員在元素內容的 最前面/最後面 插入生成內容。預設地,這個偽元素是行內元素,不過可以使用屬性 display
CSS篇之2. 清除浮動,什麼時候需要清除浮動,清除浮動都有哪些方法
2. 清除浮動,什麼時候需要清除浮動,清除浮動都有哪些方法 ? 一.什麼時候需要清除浮動? 我們對元素進行了浮動(float)時,我們的元素就會脫離文件流,像一隻小船一樣漂流在文件之上。 在 CSS 中,任何元素都可以浮動。浮動元素會生成一個塊級框,而
【筆記】學習CSS佈局11——清除浮動(chearfix hack)
在使用浮動的時候經常會遇到一個古怪的事情: <!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> .clearfix { b
clearfix清除浮動的幾種方法
clearfix清除浮動1..clear{clear:both;line-height:0;}缺點:頁面複雜的佈局的話會產生很多空標籤2..clearfix:after{visibility:hidden;display:block;font-size:0;content:
clearfix清除浮動方案
long long ago,在剛進入前端這個領域的時候,很多東西都不知道,清除浮動用的是 overflow:hidden … 過了段時間,看別人的原始碼,發現class類中都有個clearfix,於是
css之子元素浮動導致父元素高度塌陷解決方案
問題引入:在製作導航欄時,若父元素ul不給出高度的具體數值,只給背景。而子元素li又用到了float:left。 那麼,這種情況就會導致父元素的背景“消失”,因為浮動元素脫離文件流,不佔據空間,因此相當於父列表沒有內容。 解決方案: 一:新增進行清理浮動的元素(但書中說,這
clearfix清除浮動最佳實踐
版本一 .clearfix:after { content:"\200B"; display:block; height:0; clear:both; } 解
CSS布局模型 之 浮動模型(浮動的工作原理和清除浮動技巧?)
浮動 浮動模型 工作原理 浮動的工作原理浮動是讓某元素脫離文檔流,在浮動框之前和之後的非定位元素會當它不存在一樣,可能沿著它的另一側垂直流動,但都為其騰出空間,塊級元素也不例外(被浮動元素占據了部分行空間的塊級元素,仍然被看作是占據了一整行,只不過是被浮動元素占據的那部分空間無法利用罷了)。浮動的
CSS響應式佈局之清除浮動
在很多前端工程師日常工作中,在使用到float佈局時,總會有一點需要去考慮的,那就是清除浮動問題。 那這個問題怎麼會發生的呢? 當float子元素高度超出父級元素高度時,父級元素高度塌縮,因為float元素脫離文件流,其佈局不受父元素控制 這個情況如下圖所示 高度塌
css 清除浮動 clearfix
在學習做一個顯示圖片的網頁的時候,使用的方法是一個div父框架,包含幾個子div,佈局需要,子div全部設定成了左浮動,然後在通過瀏覽器看父div的高度一直是0,然後看一個教程說是這種情況下需要清除浮動,用的clearfix方法,當時不太理解這個方法,然後查了資
css清除浮動clearfix:after的用法詳解(轉)
三種方式 用法 html 解決 解決方法 閱讀 inline 轉移 entry css清除浮動clearfix:after的用法詳解 2015-12-10 23:11 by 流浪的詩人, 8099 閱讀, 0 評論, 收藏, 編輯 如果外部有一個div容器,其內部d
css清除浮動主要方法
清除浮動 自動 div標簽 ont 模型 display zoom wid bili 1、浮動元素尾部添加空div標簽,設置css為clear:both; 缺點:如果頁面浮動布局多,則需要添加較多div; 2、父級元素定義偽類:after和zoom:1; .fathe
CSS清除浮動方法
pla 處理 adding ges 元素 高度 height css pre HTML結構 1 <div class="wrap"> 2 <div class="div1">1</div> 3 <div clas
【Web前端】清除浮動&css中文字體
white hidden lag iso 學習資源 target 元素 關系 align 清理浮動有非常多種方式,像使用 br 標簽自帶的 clear 屬,使用元素的 overflow。使用空標簽來設置 clear:both 等等。但考慮到兼容問題和語義化
css清除浮動,清除子節點margin溢出問題
cnblogs for size flow bsp eight before 16px :after 清除浮動 .clearfix:after{ content:”.”; display:block; height:0
css之浮動
給定 round logs 比較 方向 char generator 文檔流 區別 浮動就是使元素脫離文檔流,按照指定的方向進行一個移動,遇到父元素邊界或者相鄰的浮動元素時,浮動元素會停下來。 脫離文檔流通俗的說就是在頁面中不占位置。 浮動有兩個值:float:left /
css 清除浮動的方法
意義 spa gin size 內部 是我 foo 插入 float 不添加清除浮動的時候:這裏我沒有給最外層的DIV.outer 設置高度,但是我們知道如果它裏面的元素不浮動的話,那麽這個外層的高是會自動被撐開的。但是當內層元素浮動後,就出現了一下影響:(1):背景不能顯