使用Flexcss
使用 CSS3 transformjquery
display:relative
transform: translate(-50%,-50%);position: absolute;top: 50%;left: 50%;
使用 display:table-cell 方法bootstrap
display:table-cell; text-align:center;vertical-align:middle
;display:inline-block;vertical-align:middle
;position 的常見四個屬性值: relative,absolute,fixed,static。通常都要配合"left"、"top"、"right" 以及 "bottom" 屬性使用。瀏覽器
float屬性的取值:安全
浮動的特性:框架
浮動元素的展現在不一樣狀況下會有不一樣的規則:ide
重疊問題佈局
clear屬性 clear屬性:確保當前元素的左右兩側不會有浮動元素。clear只對元素自己的佈局起做用。 取值:left、right、both字體
爲何要清除浮動,父元素高度塌陷 解決父元素高度塌陷問題:一個塊級元素若是沒有設置height,其height是由子元素撐開的。對子元素使用了浮動以後,子元素會脫離標準文檔流,也就是說,父級元素中沒有內容能夠撐開其高度,這樣父級元素的height就會被忽略,這就是所謂的高度塌陷。flex
方法1:給父級div定義 高度 原理:給父級DIV定義固定高度(height),能解決父級DIV 沒法獲取高度得問題。 優勢:代碼簡潔 缺點:高度被固定死了,是適合內容固定不變的模塊。(不推薦使用)
方法二:使用空元素,如<div class="clear"></div> (.clear{clear:both})
原理:添加一對空的DIV標籤,利用css的clear:both屬性清除浮動,讓父級DIV可以獲取高度。 優勢:瀏覽器支持好 缺點:多出了不少空的DIV標籤,若是頁面中浮動模塊多的話,就會出現不少的空置DIV了,這樣感受視乎不是太使人滿意。(不推薦使用)
方法三:讓父級div 也一併浮起來 這樣作能夠初步解決當前的浮動問題。可是也讓父級浮動起來了,又會產生新的浮動問題。 不推薦使用
方法四:父級div定義 display:table 原理:將div屬性強制變成表格 優勢:不解 缺點:會產生新的未知問題。(不推薦使用)
方法五:父元素設置 overflow:hidden、auto; 原理:這個方法的關鍵在於觸發了BFC。在IE6中還須要觸發 hasLayout(zoom:1) 優勢:代碼簡介,不存在結構和語義化問題 缺點:沒法顯示須要溢出的元素(亦不太推薦使用)
方法六:父級div定義 僞類:after 和 zoom
.clearfix:after{ content:'.'; display:block; height:0; clear:both; visibility: hidden; } .clearfix {zoom:1;} 複製代碼
原理:IE8以上和非IE瀏覽器才支持:after
,原理和方法2有點相似,zoom
(IE轉有屬性)可解決ie6,ie7浮動問題 優勢:結構和語義化徹底正確,代碼量也適中,可重複利用率(建議定義公共類) 缺點:代碼不是很是簡潔(極力推薦使用)
經益求精寫法
.clearfix:after {
content:」\200B」;
display:block;
height:0;
clear:both;
}
.clearfix { *zoom:1; } 照顧IE6,IE7就能夠了
複製代碼
詳細關於浮動的知識請參看這篇文章: http://luopq.com/2015/11/08/CSS-float/
定義:BFC(Block formatting context)直譯爲"塊級格式化上下文"。它是一個獨立的渲染區域,只有 Block-level box 參 與, 它規定了內部的 Block-level Box 如何佈局,而且與這個區域外部絕不相干。
BFC佈局規則 BFC 就是頁面上的一個隔離的獨立容器,容器裏面的子元素不會影響到外面的元素。反之也如此。
margin
決定,取最大值清除浮動原理
)。哪些元素會生成 BFC
設置CSS盒模型爲標準模型或IE模型。標準模型的寬度只包括content
,二IE模型包括border
和padding
box-sizing屬性能夠爲三個值之一:
px 像素(Pixel)。絕對單位。像素 px 是相對於顯示器屏幕分辨率
而言的,是一個虛擬長度單位,是計算 機系統的數字化圖像長度單位,若是 px 要換算成物理長度,須要指定精度 DPI。
em 是相對長度單位,相對於當前對象內文本的字體尺寸
。如當前對行內文本的字體尺寸未被人爲設置, 則相對於瀏覽器的默認字體尺寸。它會繼承父級元素的字體大小,所以並非一個固定的值。
rem 是 CSS3 新增的一個相對單位(root em,根 em),使用 rem 爲元素設定字體大小時,仍然是相對大小, 但相對的只是 HTML 根元素
。
有四種:內聯(元素上的style屬性)、內嵌(style標籤)、外鏈(link)、導入(@import) link和@import的區別:
link
是XHTML標籤,除了加載CSS外,還能夠定義RSS等其餘事務;@import
屬於CSS範疇,只能加載CSS
。link
引用CSS時,在頁面載入時同時加載
;@import須要頁面網頁徹底載入之後加載
。link
是XHTML標籤,無兼容問題
;@import
是在CSS2.1提出的,低版本的瀏覽器不支持
。link
支持使用Javascript控制DOM去改變樣式
;而@import
不支持。流式佈局 使用非固定像素來定義網頁內容,也就是百分比佈局
,經過盒子的寬度設置成百分比來根據屏幕的寬度來進 行伸縮,不受固定像素的限制,內容向兩側填充。
響應式開發 利用CSS3 中的 Media Query(媒介查詢),經過查詢 screen 的寬度來指定某個寬度區間的網頁佈局。
因爲響應式開發顯得繁瑣些,通常使用第三方響應式框架來完成,好比 bootstrap 來完成一部分工做,固然也 能夠本身寫響應式。
區別
- | 流式佈局 | 響應式開發 |
---|---|---|
開發方式 | 移動Web開發+PC開發 | 響應式開發 |
應用場景 | 通常在已經有PC端網站,開發移動的的時候只須要單獨開發移動端 | 針對一些新建的網站,如今要求適配移動端,因此就一套頁面兼容各類終端 |
開發 | 正對性強,開發效率高 | 兼容各類終端,效率低 |
適配 | 只適配移動設備,pad上體驗相對較差 | 能夠適配各類終端 |
效率 | 代碼簡潔,加載快 | 代碼相對複雜,加載慢 |
關鍵的區別是他們所側重的內容,以及這種不一樣形成的工做流程的差別
區別:
display:none
visibility:hidden
display:none
的區別在於,元素在頁面消失後,其佔據的空間依舊會保留着
,因此它只會致使瀏覽器重繪
而不會重排。opacity:0
visibility:hidden
的一個共同點是元素隱藏後依舊佔據着空間,但咱們都知道,設置透明度爲0後,元素只是隱身了,它依舊存在頁面中。設置height,width等盒模型屬性爲0
margin
,border
,padding
,height
和width
等影響元素盒模型的屬性設置成0
,若是元素內有子元素或內容,還應該設置其overflow:hidden
來隱藏其子元素,這算是一種奇技淫巧。其餘腦洞方法
img { display: block; }
img { vertical-align: bottom; }
.box { line-height: 0; }
「nth-child」選擇的是父元素的子元素,這個子元素並無指定確切類型,同時知足兩個條件時方能有效果:其一是子元素,其二是子元素恰好處在那個位置;「nth-of-type」選擇的是某父元素的子元素,並且這個子元素是指定類型。