一、複雜選擇器web
一、兄弟選擇器瀏覽器
一、相鄰兄弟函數
選擇器1+選擇器2優化
二、通用兄弟動畫
選擇器1~選擇器2url
二、屬性選擇器3d
語法:[]orm
[attr]:匹配附帶attr屬性的元素rem
elem[attr]:... ...字符串
elem[attr1][attr2]:
[attr=value]:
[class~=value]:
[attr^=value]:
[attr$=value]:
[attr*=value]:
三、僞類選擇器
一、目標僞類
:target
二、元素狀態僞類
:enabled,匹配被激活元素(表單控件)
:disabled,匹配被禁用元素(表單控件)
:checked,匹配被選中元素(radio,checkbox)
三、結構僞類
一、:first-child
二、:last-child
三、:nth-child(n)
四、:empty
五、:only-child
四、否認僞類
:not(選擇器)
四、僞元素選擇器
一、做用
匹配元素中的內容
二、語法
:first-letter,匹配元素的首字符
:first-line,匹配元素的首行
::selection,匹配用戶選中的部分
注意: :與::的區別
二、內容生成
一、語法
一、僞元素選擇器
一、:before,匹配元素內容區域以前
二、:after,匹配元素內容區域以後
二、屬性
屬性:content
取值:
一、字符串 :普通文本,""
二、url() , 生成一副圖像
三、計數器
三、解決問題
一、浮動元素的父元素高度問題
div:after{
content:"";
display:block;
clear:both;
}
二、外邊距溢出
div:before/div:after{
content:"";
display:table;
}
四、計數器
一、聲明或復位一個計數器
屬性:
counter-reset:名 值 名 值;
值,能夠省略,默認爲0
注意:
一、不能將計數器聲明在使用的元素中
二、設置計數器增量
屬性:counter-increment:名 值;
值,能夠省略,默認爲1
注意:
一、哪一個元素使用,就在哪一個元素上聲明增量
三、使用計數器
屬性:content
取值:counter(名);
注意:
配合着:before或:after一塊兒使用
三、多列
一、屬性
一、分隔列
屬性:column-count
二、列間隔
屬性:column-gap
三、列規則
屬性:column-rule:width style color;
二、兼容性
添加瀏覽器前綴
四、CSS Hack
一、CSS Hack方式
一、CSS 類內部hack
經過 屬性前綴或值後綴的方式來編寫指定瀏覽器可以識別的樣式
hack 寫法
* *color IE6,IE7
+ +color IE6,IE7
# #color IE6,IE7
- -color IE6
_ _color IE6
\0 color:red\0; IE8,IE9,IE10
\9\0 color:red\9\0; IE9,IE10
注意:
順序問題
IE8,IE9,IE10(\0)
IE9,IE10(\9\0)
IE6,IE7(+)
IE6(-)
二、選擇器Hack
在選擇器前加上瀏覽器可以識別的前綴
* : IE6
*body{
/*IE6中body的樣式*/
}
*+ : IE7
*+body{
/*IE7中body的樣式*/
}
三、HTML都不引用Hack
經過HTML的條件註釋
條件註釋語法:
<!--[if 條件 IE 版本]>
內容
<![endif]-->
條件:
一、gt :大於指定版本
二、gte :大於等於
三、lt :小於
四、lte :小於等於
五、!不是指定版本
******************************
一、轉換
二、過渡
三、動畫
四、CSS 優化
******************************
一、轉換
一、轉換簡介
一、什麼是轉換
改變元素在頁面中的大小,位置,角度和形狀的一種方式
二、轉換分類
一、2D轉換
使元素在x軸和y軸上發生變化效果
二、3D轉換
在2D轉換基礎上,增長 z軸的變化效果
三、轉換屬性
屬性:transform
取值:
一、none
默認值,不進行任何轉換
二、轉換函數
表示一個或者多個轉換函數,若是是多個函數的話,中間以空格分開
四、轉換原點
屬性:transform-origin
默認狀況下,原點是在整個元素的中心位置處
取值:數值/百分比/關鍵字
兩個值:表示 x軸 和 y軸的位置
三個值:表示 x軸 ,y軸 ,z軸的位置
二、2D轉換
一、2D位移
一、屬性 和 函數
屬性:transform
函數:
translate(x) :元素在x軸上的位移距離,取值爲正,向右移動,取值爲負,向左移動
translate(x,y) :
x表示x軸位移距離
y表示y軸位移距離,取值爲正,向下移動,取值爲負,向上移動
translateX(x) :只改變元素在x軸上的位置
translateY(y) :只改變元素在y軸上的位置
取值:
一、數值
二、百分比
二、2D縮放
一、做用
改變元素在頁面中的大小
二、屬性和函數
屬性:transform
函數:
scale(value),若是隻給一個值,那麼x軸和y軸將等比縮放
scale(x,y):改變 x軸和y軸的縮放比例
scaleX(x):只改變x軸的縮放比例
scaleY(y):只改變y軸的縮放比例
取值:
默認值 爲1
縮小:0~1 之間的數值
放大:大於1的數值
三、2D旋轉
一、做用
改變元素在頁面中的角度
二、屬性 和 函數
屬性:transform
函數:rotate(ndeg)
n取值爲正,則順時針旋轉
n取值爲負,則逆時針旋轉
三、注意
一、轉換時,座標軸會一塊兒進行轉換
二、轉換原點能夠影響轉換效果
四、2D傾斜
一、做用
改變元素在頁面上的形狀
二、屬性 和 函數
屬性:transform
函數:
skew(xdeg) : x軸傾斜指定角度
實際上時改變 y軸的傾斜角度
取值爲正:逆時針
取值爲負:順時針
skewX(xdeg) : 效果同上
skewY(ydeg) : y軸傾斜指定角度
其實是改變 x軸的傾斜角度
取值爲正:順時針
取值爲負:逆時針
三、3D轉換
一、3D轉換
增長 z軸 轉換效果
二、屬性
屬性:perspective
做用:模擬 人眼睛到 3D投射元素的距離
注意:該屬性 須要加在 3D轉換元素的父元素上
兼容性:
火狐:-moz-perspective:
Chrome,Safari:-webkit-perspective
Opera:-o-perspective
三、3D旋轉
容許元素在 x軸,y軸,z軸上進行旋轉操做
屬性 和 函數
屬性:transform
函數:
rotateX(xdeg):以x軸爲中心軸進行元素的旋轉
rotateY(ydeg)
rotateZ(zdeg)
rotate3D(x,y,z,ndeg)
x,y,z,若是取值爲 0的話,說明該軸不參與旋轉
x,y,z,若是取值爲 1的話,說明該軸是參與旋轉的
rotate3d(0,0,1,45deg)-- rotatez(45deg)
rotate3d(1,1,0,45deg)
四、3D位移
一、做用
改變元素在z軸上的位置
二、屬性 和 函數
屬性:transform
函數:
translateZ();
translate3D(x,y,z)
三、屬性 : transform-style
做用:規範當前元素的子元素如何去排列3D位置
取值:
一、flat
默認值,不保留子元素的3D位置
二、preserve-3d
保留子元素3d位置
二、過渡
一、什麼是過渡
使得CSS的屬性值在一段時間內平滑過渡
二、過渡的 4個要素(屬性)
一、指定過渡屬性
屬性:transition-property
做用:規定應用過渡效果的CSS屬性名稱
取值:
一、none
二、all
三、property-name : 具體使用過渡效果的屬性名稱
能夠設置過渡的屬性:
一、顏色屬性
二、取值爲數值的屬性
三、轉換屬性
transform
四、漸變屬性
五、visibility 屬性
六、陰影屬性
ex:
div{
transition-property:background;
}
二、指定過渡時間
屬性:transition-duration
取值:以秒(s) 或 毫秒(ms) 做爲單位的
默認值爲0,即沒有過渡效果
ex:
div{
transition-property:background;
transition-duration:300ms;
}
三、指定速度時間曲線函數
屬性:transition-timing-function
取值:
一、ease : 默認值,慢速開始,快速變快,慢速結束
二、linear : 勻速
三、ease-in : 慢速開始,加速結束
四、ease-out: 快速開始,減速結束
五、ease-in-out:慢速開始和結束,中間先加後減
ex:
div{
transition-property:background;
transition-duration:300ms;
transition-timing-function:linear;
}
四、指定過渡延遲時間
屬性:transition-delay
取值:ms 或 s 做爲單位的數值
三、觸發過渡效果
通常都是由用戶行爲觸發
五、過渡屬性-過渡子屬性的簡寫模式
transition:property duration timing-function delay;
三、動畫
一、什麼是動畫
使元素從一種樣式逐漸變化爲另外一種樣式
其原理是經過 關鍵幀 控制動畫的每一步
注意:瀏覽器兼容性
經過了瀏覽器前綴解決兼容性
-moz-
-webkit-
-o-
二、使用動畫的步驟
一、聲明動畫
聲明動畫的名稱,而且指定關鍵幀的信息
關鍵幀:
一、時間點
二、該時間點上的狀態(樣式)
二、使用動畫
經過動畫屬性,將動畫效果綁定到某個元素上
三、聲明動畫
語法
@keyframes 動畫名稱{
0%{
動畫開始時元素的樣式聲明
}
... ...(1% ~ 99%)
100%{
動畫結束時元素的樣式聲明
}
}
兼容 Chrome Safari
@-webkit-keyframes 動畫名稱{
0%{
動畫開始時元素的樣式聲明
}
... ...(1% ~ 99%)
100%{
動畫結束時元素的樣式聲明
}
}
兼容 Firefox
@-moz-keyframes 動畫名稱{
0%{
動畫開始時元素的樣式聲明
}
... ...(1% ~ 99%)
100%{
動畫結束時元素的樣式聲明
}
}
時間點:
0%(from) : 動畫開始的時候
50% : 動畫運行到一半的時候
100%(to) : 動畫結束的時候
四、動畫的調用
一、animation-name
要調用的動畫名稱
二、aniamtion-duration
動畫完成一個週期須要用的時間
以s 或 ms 爲單位
三、animation-timing-function
動畫的 速度時間 曲線函數
ease
linear
ease-in
ease-out
ease-in-out
四、animation-delay
動畫執行延遲時間
s|ms爲單位
五、animation-iteration-count
動畫播放次數
取值:
一、具體數值
二、infinite
無限次播放
六、animation-direction
動畫播放方向
取值:
一、normal
默認值,正向播放,即從 0%~100%
二、reverse
逆向播放,即從100% ~ 0%
三、alternate
輪流播放,動畫在奇數次數播放時,從 0% ~ 100%,動畫在偶數次數播放時,從100% ~ 0%
七、animation屬性
animation:name duration timing-function delay iteration-count direction;
八、animation-fill-mode
動畫播放先後的填充方式
取值:
一、none
默認值,不改變默認行爲
二、forwards
動畫完成後,將保持在最後一個關鍵幀的狀態上
三、backwards
動畫播放前(在延遲時間內),將元素保持在第一個幀的狀態上
四、both
動畫播放先後的填充模式都應用
九、animation-play-state
動畫的播放狀態
取值:
一、paused
暫停
二、running
播放