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