前端知識點總結——C3
1.複雜選擇器
1.兄弟選擇器
兄弟元素:具備相同父元素的平級元素之間稱為兄弟元素。
1.相鄰兄弟選擇器
作用:獲取緊緊挨在某元素後的兄弟元素
語法:選擇器1+選擇器2{}
注意:兄弟選擇器,只能向後找,不能向前找
2.通用兄弟選擇器
作用:獲取某元素後所有滿足條件的兄弟元素
語法:選擇器1~選擇器2{}
2.屬性選擇器
<input type="text" name="uname" value="" placeholder="">
1.作用
允許通過元素所附帶的屬性及其值來匹配元素
type="text"
2.語法
1.基本語法
[attr] //屬性
作用:匹配頁面中所有附帶attr屬性的元素
ex:
1.[id] 匹配頁面中所有附帶id屬性的元素
2.[class] 匹配頁面中所有附帶class屬性的元素
2.elem[attr]
elem:表示任意元素
attr:表示任意屬性
作用:匹配頁面中所有附帶attr屬性的elem元素
ex:
div[id] 匹配頁面中所有帶有id屬性的div元素
input[type] 匹配頁面中所有帶有type屬性的input元素
.text[placeholder] 匹配頁面中所有帶有placeholder屬性,並有text類選擇器的元素
3.[attr1][attr2]
作用:匹配同時附帶多個屬性的元素
ex:
div[id][class]
4.[attr=value]
作用:匹配attr屬性值為value的元素
ex:
<input type="text">
<input type="password">
//匹配的是第一個input元素(以下三種寫法均可)
input[type="text"]
input[type=text]
input[type=`text`]
3.偽類選擇器
1.已學過的偽類
連結偽類:
:link(尚未訪問) :visited(訪問過的)
動態偽類:
:hover(滑鼠懸停)
:active(啟用狀態)
:focus(獲取焦點)
2.目標偽類
作用:突出顯示活動的HTML錨點元素,匹配被啟用的錨點。
語法:
選擇器:target{...}
div:target{...}
#d1:target{...}
3.結構偽類
作用:通過元素的結構關係來匹配元素(上下級巢狀結構)
1.:first-child
匹配的元素屬於其父元素的第一個子元素
<div>
<p>p1</p>
<p>p2</p>
<p>p3</p>
</div>
ex:
p:first-child{...} //找父元素的第一個子p元素(p1)
2.:last-child
匹配的元素是屬於其父元素的最後一個子元素
ex:
p:last-child{...}//找父元素的最後一個子元素(p3)
3.:nth-child(n)
匹配的元素是屬於其父元素中第n個子元素
table tr:nth-child(2) 匹配表格第二行資料
4.:empty
匹配沒有子元素的元素
<div></div>
5.:only-child
匹配的元素是屬於其父元素中的唯一子元素
<div>
<p id="p1">ppppp1</p>
</div>
<div>
<p id="p2">ppppppppp2</p>
<span>ssssssss</span>
</div>
p:only-child{color:red;}//改變的是p1的顏色
4.否定偽類
將滿足指定選擇器的元素給排除出去(不要了,排除)
語法:
:not(selector)
ex:
table tr:not(:first-child){
font-size:24px;
}
除第一行以外所有行的文字大小變為24px
4.偽元素選擇器
1.:first-letter或::first-letter
作用:匹配某個元素的首字元
2.:first-line 或::first-line
作用:匹配某個元素的首行(第一行)
注意:首行與首字元衝突時,以首字元為準
3.::selection
匹配被使用者選取的內容
注意:只能修改文字顏色或背景顏色
2.內容生成
1.什麼是內容生成
使用CSS動態的向某元素中插入一段內容
2.偽元素選擇器
1.:before或::before
作用:匹配到某元素的內容區域之前
<p>(:before)鵝鵝鵝</p>
2.:after或::after
作用:匹配到某元素的內容區域之後
<p>鋤禾日當午(:after)</p>
3.屬性
屬性:content
作用:向匹配到的位置處增加內容
取值:
1.字串:用""引起來(普通文字)
2.url():生成一副影像
4.解決問題
1.解決浮動問題
div:after{
content:"";
display:block;
clear:both;
}
2.子元素上外邊距溢位問題
div:before{
content:"";
display:table;
}
3.彈性佈局(Flexible Layout)
1.什麼是彈性佈局
彈性佈局,是一種佈局方式,注意解決某元素中“子元素”的佈局方式,為佈局提供最大的靈活性。
2.彈性佈局的相關概念
1.彈性佈局的容器
彈性佈局的容器 簡稱為"容器"(子元素的父元素,稱為容器)
2.彈性佈局的專案
彈性佈局的專案 簡稱為"專案"(要實現佈局效果的子元素,稱"專案")
3.主軸
專案們排列方向的一根軸,就稱為主軸
如果專案們按x軸排列(橫向排列),那麼x軸就是主軸
如果專案們按y軸排列(縱向排列),那麼y軸就是主軸
4.交叉軸
與主軸交叉的一根軸就是交叉軸
如果主軸是x軸,那麼y軸就是交叉軸
如果主軸是y軸,那麼x軸就是交叉軸
3.語法
1.flex容器
將元素變為flex容器後,那麼所有的子元素將變為flex專案,都允許按照彈性佈局的方式排列
如何將元素變為flex容器?
屬性:display
取值:
1.flex:將快級元素變為容器
2.inline-flex:將行內元素變為容器
注意:
1.元素設定為flex容器之後,子元素的float,vertical-align,clear將失效
2.容器的text-align將失效
2.容器的屬性
1.flex-direction
作用:指定容器的主軸及其排列方向
取值:
1.row 預設值,即主軸為x軸,起點在左端
2.row-reverse 主軸為x軸,起點在有端
3.column 主軸為y軸,起點在頂端
4.column-reverse 主軸為y軸,起點在底端
2.flex-wrap
作用:當一個主軸排列不下所有專案時,指定子專案如何換行
取值:
1.nowrap 預設值,即空間不夠時,也不換行,專案會自動縮小
2.wrap 換行
3.wrap-reverse 換行反轉
3.flex-flow
作用:是flex-direction和flex-wrap的縮寫形式
取值:
1.row nowrap 預設值
2.direction wrap
4.justify-content
作用:定義專案在主軸上的對齊方式
取值:
1.flex-start
在主軸的起點對齊
2.flex-end
在主軸的終點對齊
3.space-between
兩端對齊(常用)
4.center
在主軸上居中對齊
5.space-around
每個專案兩端間距相同
5.align-items
作用:定義專案在交叉軸上的對齊方式
取值:
1.flex-start
交叉軸的起點對齊
2.flex-end
交叉軸的終點對齊
3.center
交叉軸居中對齊
4.baseline
交叉軸上基線對齊
5.stretch
如果專案未設定尺寸,在交叉軸上將佔滿所有空間
3.專案的屬性
該組屬性只能設定在某一專案元素上,只控制一個專案,是不影響容器以其其它專案的效果。
1.order
作用:定義專案的排列順序,值越小,越靠近起點,預設值為0
取值:整數數字,無單位
2.flex-grow
作用:定義專案的放大比例,如果容器由足夠的剩餘空間,專案將放大
取值:
整數數字,無單位
預設值0,不放大
取值越大,佔據的剩餘空間就越多
3.flex-shrink
作用:定義專案的縮小比例,即容器空間不足時,專案該如何縮小
取值:
預設值為1,空間不足時,則等比縮小
取值為0,則不縮小(常用)
4.align-self
作用:定義當前專案在交叉軸上的對齊方式
取值:
1.flex-start
2.flex-end
3.center
4.baseline
5.stretch
6.auto (繼承自父元素的align-items屬性)
4.轉換
1.什麼是轉換
改變元素在頁面中的位置,大小,角度以及形狀的一種方式。
2D轉換:只在x軸和y軸上發生的轉換效果
3D轉換:增加在z軸的轉換效果
2.轉換屬性
1.轉換屬性
屬性:transform
取值:
1.none 預設值,無任何轉換效果
2.transform-function
表示1個或多個轉換函式
如果是多個轉換函式的話,中間用空格隔開
2.轉換原點
屬性:transform-origin
取值:數字/百分比/關鍵字
2個值:表示原點在x軸和y軸上的位置
3個值:表示原點在x軸,y軸,z軸上的位置
預設的原點在 元素的中心位置處
(center center)
(50% 50%)
3.2D轉換
1.位移
1.什麼是位移
改變元素在頁面中的位置
2.語法
屬性:transform
取值:
1.translate(x)
指定元素在x軸上的位移距離
取值為正,元素向右移
取值為負,元素向左移
2.translate(x,y)
指定元素在x軸和y軸的位移距離
x:同上
y:取值為正,元素向下移
取值為負,元素向上移
3.translateX(x)
在x軸上的位移
4.translateY(y)
在y軸上的位移
2.縮放
1.什麼是縮放
改變元素在頁面中的尺寸
2.語法
屬性:transform
取值:
1.scale(value)
value:橫向或縱向的縮放比例
value:預設值為1
>1: 放大
<1: 縮小
負數:放大(水平和垂直都翻轉180度)
2.scale(x,y)
x:橫向的縮放比例
y:縱向的縮放比例
3.單向縮放函式
scaleX(x)
scaleY(y)
3.旋轉
1.什麼是旋轉
改變元素在頁面上的角度
2.語法
屬性:transform
取值:
rotate(ndeg)
n:取值為正,順時針旋轉
n:取值為負,逆時針旋轉
注意:
1.轉換原點會影響最後的轉換效果
2.旋轉是連同座標軸一起旋轉的,會影響旋轉後的位移效果
2.語法
屬性:transform
取值:
1.skewX(xdeg)
讓元素向著x軸的方向產生傾斜效果,實際上改變的是y軸的傾斜角度值
x:取值為正,y軸逆時針傾斜
x:取值為負,y軸順時針傾斜
2.skewY(ydeg)
讓元素向著y軸的方向產生傾斜效果,實際上改變的x軸的傾斜角度值
y:取值為正,x軸順時針傾斜
y:取值為負,x軸逆時針傾斜
3.skew(x)
等同於skewX(xdeg)
4.skew(x,y)
4.3D轉換
1.透視距離
模擬人的眼睛到3D轉換元素之間的距離(z軸)
屬性:perspective
注意:該屬性要加在3D轉換元素的父元素上
2.3D旋轉
屬性:transform
取值:
1.rotateX(xdeg)
以x軸為中心軸,旋轉元素的角度
取值為正,順時針旋轉
2.rotateY(ydeg)
以y軸為中心,旋轉元素的角度
3.rotateZ(zdeg)
以z軸為中心,旋轉元素的角度
4.rotate3D(x,y,z,ndeg)
x,y,z取值大於0的數字時,表示該軸要參與旋轉,取值為0則不參與旋轉
rotate3D(1,0,0,45deg)只在x軸旋轉45度
roatate3d(1,1,1,0deg)
5.過渡
1.什麼是過渡
使得css屬性值,在一段時間內平緩變化的效果
2.過渡語法
1.指定過渡屬性
屬性:transition-property
取值:
1.all 能使用過渡的屬性,一律用過渡體現
2.具體屬性名
ex:
transition-property:background
當背景的屬性在發生變化時用過渡給體現出來
transition-property:border-radius;
當邊框倒角在發生改變時用過渡體現出來
transition-property:all
允許設定過渡效果的屬性:
1.顏色屬性(背景,文字,邊框顏色,陰影顏色)
2.取值為數字的屬性(高寬,內外邊距等)
3.轉換屬性(位移,旋轉,縮放,傾斜)
4.陰影屬性
5.漸變屬性
6.visibility屬性
2.指定過渡時長
作用:指定在多長時間內完成過渡操作
屬性:transition-duration
取值:
以s或ms為單位的數值
1000ms=1s
3.指定過渡速度時間曲線函式
屬性:transition-timing-function
取值:
1.ease 預設值,慢速開始,快速變快,慢速結束
2.linear 勻速
3.ease-in 慢速開始,加速結束
4.ease-out 快速開始,慢速結束
5.ease-in-out 慢速開始和結束,中間先加速後減速
4.指定過渡延遲時間
屬性:transition-delay
取值:以s或ms為單位的數值
5.過渡屬性的編寫位置
1.將過渡放在元素宣告的樣式中
既管去,又管回
2.將過渡放在觸發的操作中(hover)
只管去,不管回
6.過渡的簡寫形式
transition:property duration timing-function delay;
ex:
transition:background 2s ease,border-radius 2s;
transition:all 2s; //上面的簡寫
6.動畫
1.什麼是動畫
使元素從一種樣式逐漸變為另一種樣式
即將多個過渡效果放下一起
動畫是通過"關鍵幀",來控制動畫的每一步
關鍵幀:
1.定義動畫執行的時間點
2.在該時間點上的樣式是什麼
2.動畫的使用步驟
1.宣告動畫
為動畫起名
定義關鍵幀
2.為元素呼叫動畫
指定元素呼叫的動畫名稱以及各個引數屬性
3.定義動畫(宣告動畫)
@keyframes 動畫名稱{
/*定義該動畫中所有的關鍵幀*/
0%{
/*動畫開始時元素時的樣式*/
}
25%{
/*動畫執行到1/4時的樣式*/
}
50%{
/*動畫執行到一半時的樣式*/
}
75%{
/*動畫執行到3/4時的樣式*/
}
100%{
/*動畫執行結束時的樣式*/
}
}
4.動畫呼叫(動畫屬性)
1.animation-name
作用:指定呼叫動畫的名稱
2.animation-duration
作用:指定動畫執行一個週期的時長
取值:以s或ms為單位的數值
3.animation-timing-function
作用:指定動畫的速度時間曲線函式
取值:ease,linear,ease-in,ease-out,ease-in-out
4.animation-dealy
作用:指定動畫的延遲時間
取值:以s或ms為單位的數值
5.animation-iteration-count
作用:指定動畫的播放次數
取值:
1.具體數字
2.infinite 無限次數播放
6.animation-diretion
作用:指定動畫的播放方向
取值:
1.normal
預設值,正常播放0%-100%
2.reverse
逆向播放 100%-0%
3.alternate
輪播播放
奇數次數播放時,正向播放
偶數次數播放時,逆向播放
7.動畫的簡寫方式
animation:name duration timing-function delay iteration-count direction;
8.animation-fill-mode
作用:規定動畫在播放前或播放後的狀態
取值:
1.none 預設值
2.forwards
動畫播放完成後,將保持在最後一個幀狀態
3.backwards
動畫播放前,延遲時間內,動畫保持在第一個幀的狀態上
4.both
forwards與backwards的合體
9.animation-paly-state
作用:指定動畫處於播放還是暫停的狀態
取值:
1.paused 暫停
2.running 播放
7.CSS Hack
1.解決問題
解決IE瀏覽器相容性問題
解決辦法:針對不同瀏覽器編寫不同CSS程式碼
2.CSSHack 的原理
使用CSS樣式的優先順序解決相容性問題
3.CSSHack的實現方式
1.CSS類內部Hack
在樣式屬性名稱前或屬性值後增加前字尾,以便於識別不同瀏覽器
+:IE6,7的字首
-:IE6的字首
:IE8,9,10的字尾
9 :IE9,10的字尾
2.CSS選擇器Hack
在選擇器前增加字首以便識別不同的瀏覽器
*:識別IE6
*+:識別IE7
div~div{}
*div~div{IE6識別}
*+div~div{IE7識別}
3.HTML頭部引用Hack
使用IE條件註釋來判斷瀏覽器的版本,從而執行不同的程式碼
語法:
<!--[if 條件 IE 版本號]>
滿足條件要執行的HTML程式碼
<![endif]-->
版本號:6-10
條件:
1.gt
只有在大於指定版本的瀏覽器中執行程式碼
ex:
<!--[if gt IE 6]>
該段內容只顯示在IE6以上版本的瀏覽器中
<![endif]-->
2.gte
大於等於
3.lte
小於等於
4.lt
小於
5.!
在指定條件以外版本的瀏覽器中執行操作
6.省略條件
只在指定版本的瀏覽器中執行操作
判斷是否為IE瀏覽器或IE的指定版本