這些個知識點是我我的認爲的,下面咱們就來看看這些個知識點。php
使用Flexcss
使用 CSS3 transformhtml
display:relative
transform: translate(-50%,-50%);position: absolute;top: 50%;left: 50%;
使用 display:table-cell 方法jquery
display:table-cell; text-align:center;vertical-align:middle
;display:inline-block;vertical-align:middle
;position 的常見四個屬性值: relative,absolute,fixed,static。通常都要配合"left"、"top"、"right" 以及 "bottom" 屬性使用。bootstrap
position新增的屬性「sticky」: 設置了sticky的元素,在屏幕範圍(viewport)時該元素的位置並不受到定位影響(設置是top、left等屬性無效),當該元素的位置將要移出偏移範圍時,定位又會變成fixed,根據設置的left、top等屬性成固定位置的效果。瀏覽器
sticky屬性有如下幾個特色:安全
比較蛋疼的是這個屬性的兼容性還不是很好,目前還是一個試驗性的屬性,並非W3C推薦的標準。它之因此會出現,也是由於監聽scroll事件來實現粘性佈局使瀏覽器進入慢滾動的模式,這與瀏覽器想要經過硬件加速來提高滾動的體驗是相悖的。框架
float屬性的取值:佈局
浮動的特性:
浮動元素的展現在不一樣狀況下會有不一樣的規則:
重疊問題
clear屬性 clear屬性:確保當前元素的左右兩側不會有浮動元素。clear只對元素自己的佈局起做用。 取值:left、right、both
爲何要清除浮動,父元素高度塌陷 解決父元素高度塌陷問題:一個塊級元素若是沒有設置height,其height是由子元素撐開的。對子元素使用了浮動以後,子元素會脫離標準文檔流,也就是說,父級元素中沒有內容能夠撐開其高度,這樣父級元素的height就會被忽略,這就是所謂的高度塌陷。
方法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」選擇的是某父元素的子元素,並且這個子元素是指定類型。參考
所謂「寬度分離」原則,就是CSS中的width屬性不與影響寬度的 pading/border(有時候包括margin)屬性共存,width 獨立佔用一層標籤,而padding、border、margin 利用流動性在內部自適應呈現。
舉例:元素邊框內有20px的留白問題
.father { width:102px; }
.son {
border:1px solid;
padding:20px;
}
複製代碼
超越!important
:max-width會覆蓋width,並且這種覆蓋是超級覆蓋,比!important
的權重還要高
超越最大:min-width覆蓋max-width,此規則發生在min-width和max-width衝突的時候,以下:
.container{
min-width:1400px;
max-width:1200px;
}
複製代碼
使用 height + overflow:hidden 實現會比較生硬。好的方式是使用max-height
。
.element{
max-height:0;
overflow:hidden;
transition: height .25s;
}
.element.active {
max-height: 666px; /* 一個足夠大的最大高度值 */
}
複製代碼
需求:圖片還沒加載時就把 alt
信息呈現出來。
實現:圖片沒有 src
,所以,::before
和::after
能夠生效,咱們能夠經過 content
屬性呈現 alt 屬性值。
img::after{
/* 生成 alt 信息 */
content: attr(alt);
/* 尺寸和定位 */
postion:absolute; bottom: 0;
width:100%;
background-color:rgba(0,0,0,.5);
transform: translateY(100%);
transition: transform .2s;
}
img:hover::after{
transform: translateY(0);
}
複製代碼
當咱們給圖片添加src 屬性時圖片從普通元素變成替換元素,本來還支持的::before
和::after
此時所有無效,此時再hover圖片,是不會有任何信息出現的。
img:hover{
content: url(laugh-tear.png);
}
複製代碼
content 改變的僅僅是視覺呈現,當咱們鼠標右鍵或其餘形式保存這張圖片時,所保存的仍是原來 src 對應的圖片。這種方法還能夠用在官網標誌上。
因爲使用 conetnt 生成圖片沒法設置圖片的尺寸,要想在移動端使用該技術,建議使用SVG圖片。
咱們使用 content生成的文本是沒法選中、沒法複製的,好像設置了user-select:none聲明通常,而普通元素的文本能夠被輕鬆選中。content生成的文本沒法被屏幕閱讀設備讀取,也沒法被搜索引擎抓取,所以,千萬不要自覺得是地把重要的文本信息使用 content屬性生成, 由於這對可訪問性和SEO都不友好,content屬性只能用來生成一些可有可無的內容,如裝飾性圖形或者序號之類;一樣,也不要擔憂本來重要的文字信息會被 content替換,替換的僅僅是視覺層。
content 動態生成值沒法獲取。content是一個很是強大的CSS屬性,其中一個強大之處就是計數器效果,能夠自動累加數值。如:
.total::after{
content: counter(icecream);
}
複製代碼
正在加載中<dot>...</dot>
複製代碼
dot {
display: inline-block;
height: 1em;
line-height: 1;
text-align: left;
vertical-align: -.25em;
overflow: hidden;
}
dot::before {
display: block;
content: '...\A..\A.';
white-space: pre-wrap;
animation: dot 3s infinite step-start both;
}
@keyframes dot {
33% { transform: translateY(-2em); }
66% { transform: translateY(-1em); }
}
複製代碼
margin:auto的填充規則:
塊級元素垂直方向居中:
複製代碼
.father{ height200px; writing-mode:vertical-lr; } .son{ height:100px; margin:auto; } ```
複製代碼
.father{ width:300px; height150px; position: relative; } .son{ position:absolute; top:0; right:0; bottom:0; left:0; width:200px; height:100px; margin:auto; } ```
在線效果:demo.cssworld.cn/4/3-5.php
border-color 默認顏色就是color色值,就是當沒有指定border-color顏色值的時候,會使用當前元素的color計算值做爲邊框色,如:
.box{
border: 10px solid;
color: red;
}
複製代碼
此時,.box 元素的 10px 邊框顏色就是紅色。
(持續更新)
歡迎在留言區補充或提出不一樣的看法
延伸閱讀