CSS在頁面中的組成css
瀏覽器讀取編譯css選擇器時是從右往左的順序,由於能夠有機會一次選中樣式,就算不能一次選中也能夠縮小範圍。css3
css中的優先級不是選擇器的優先級,是css聲明的優先級。web
學習css屬性時首先要記住該屬性的默認值和是否能夠繼承。瀏覽器
屬性名不須要引號,屬性值須要引號。markdown
代碼分析 #wrap li :nth-child(1)
:找到id
爲wrap
底下的全部子元素,而且選中第一個子元素,而且這個子元素必須是<li>
。ide
溢出顯示省略號函數
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
(隱含條件是元素不能是被內容撐開的元素)css全稱:cascading style sheets
工具
resize
是css屬性容許控制一個元素的可調整大小性。(必定要配合overflow:auto
使用)默認值:佈局
none
不可繼承,元素不能被用戶縮放。both
,容許用戶在水平和垂直方向上調整元素的大小。horizontal
,容許用戶在水平方向上調整元素的大小。vertical
,容許用戶在垂直方向上調整元素的大小。當按照top
和left
做爲參考時,座標系是向右向下爲正,至關於說正值往裏收,負值往外擴;當按照bottom
和right
做爲參考時,座標系是向左向上爲正,至關因而正值往外擴,負值往裏收。學習
a.浮動提高半層,只有在浮動的狀況下,才須要考慮元素分兩層。定位元素提高一層(相對定位會在文檔流裏有殘留)b.z-index
爲1怎麼都會比a高;z-index
爲-1時怎麼都會比a低。
-webkit-box-reflect
不是css3裏的是Google的,可設置圖片的方向及與原圖片的距離。box-sizing: border-box;
的元素再設置padding
之後,padding
不會增長元素的大小,而是會往裏擠內容區的空間。box-shadow
,以逗號分割列表來描述一個或多個陰影效果,能夠用到幾乎任何元素上。默認值none
不可繼承,值:inset
默認陰影在邊框外。使用inset
後,陰影在邊框內。offset-x,offset-y
這是頭兩個length
值,用來設置陰影偏移量。分別設置水平偏移量和垂直偏移量,能夠設成負值。若是二者都是0,那麼陰影位於元素後面。blur-radius
值越大,模糊面積越大,陰影就越大越淡。不能爲負值,默認爲0.此時陰影邊緣銳利。spread-radius取正值時,陰影擴大;取負值時,陰影收縮,默認爲0,此時陰影與元素一樣打。color:陰影顏色,若是沒有指定,則由瀏覽器決定。border-radius
,陰影也會有圓角效果,多個陰影時和多個text shadows
規則相同。(第一個陰影在最上面)。border-radius
用來設置邊框圓角,默認值爲0不可繼承,值:
border-image-source
屬性定義使用一張圖片來代替邊框樣式,若是隻爲none
,則仍然使用border-style
定義的樣式。默認值:none
不可繼承。border-image-slice
屬性會經過規範將border-image-source
的圖片明確的分割爲9個區域,四個角,四邊以及中心區域。並可指定偏移量。border-image-repeat
定義圖片如何填充邊框。或爲單個值,設置全部的邊框;或爲兩個值,分別設置水平和垂直的邊框。默認值:stretch
不可繼承。值:stretch(拉伸),repeat,round(平鋪)
border-image-width
:定義圖像邊框寬度。默認值:1不可繼承。border-image-outset
:屬性定義邊框圖像可超出邊框盒的大小。默認值:0 不可繼承。只能正值:可超出邊框盒的大小。background-image
屬性用於爲一個元素設置一個或多個背景圖像,圖像在繪製時,以z軸方向堆疊的方式進行,先指定的圖像會在以後指定的圖像上面進行繪製。注意:background-image-color
會在image
之下進行繪製,邊框和內容會在image
之上進行繪製。默認值:none
。不可繼承。background-position
:制定背景位置的初始位置。默認值:0% 0% 不可繼承。值:百分比:參照尺寸爲背景圖片定位區域的大小減去背景圖片的大小。background-attachment
決定背景是在視口中固定的仍是隨包含它的區塊滾動的。默認值 scroll
不可繼承。值:fixed
此關鍵字表示背景相對於視口固定。即便一個元素有滾動機制,背景也不會隨着元素的內容滾動。scroll
此關鍵字表示背景相對於元素自己固定,而不是隨着它的內容滾動。padding box
開始繪製,從border box
開始剪裁。background-origin
設置背景渲染的起始位置。值:content-box
,padding-box,border-box
background-clip
設置背景剪裁位置。值:content-box,padding-box,border-box
-webkit-background-clip:text;
能夠只給文字設置背景。background-size
設置背景圖片大小。默認值 auto auto
不可繼承。值:
background-origin
設置,默認爲和模型的內容區與內邊距。auto
:以背景圖片的比例縮放背景圖片。注意:單值時,這個值指定圖片的寬度,圖片的高度隱式的爲auto
。兩個值:第一個值指定圖片等寬度,第二個值指定圖片的高度。(*)
(#)
(.)
(元素名)
(空格)
(,(結合符))
(+)
,只會匹配緊跟着的兄弟元素。(~)
,在使用~鏈接兩個元素時,他會匹配第二個元素,條件是它必須跟(不必定緊跟)在第一個元素以後,且它們都有一個共同的元素。[attr]
:該選擇器選擇包含 attr
屬性的全部元素,不論 attr
的值爲什麼。 [attr=val]
:該選擇器僅選擇 attr
屬性被賦值爲 val 的全部元素。[attr~=val]
:表示帶有以 attr
命名的屬性的元素,而且該屬性是一個以空格做爲分隔的值列表,其中至少一個值爲val
。[attr|=val]
: 選擇attr
屬性的值是val
(包括val)或以val-開頭的元素。[attr^=val]
: 選擇attr
屬性的值以val
開頭(包括val)的元素。[attr$=val]
: 選擇attr
屬性的值以val
結尾(包括val)的元素。[attr*=val]
: 選擇attr
屬性的值中包含字符串val
的元素。link
和visited
要放在hover
和active
的前面,由於link
和visited
已經把<a>
標籤的全部狀態所有涵蓋住了,爲了避免讓一些設置的狀態失效,因此link
和visited
要放在hover
和active
的前面。link
和visited
只能在<a>
標籤身上起做用。它們叫錨點僞類也叫連接僞類。:link
,:visited
,:target
是做用於連接元素的!:link
表示做爲超連接,並指向一個未訪問的地址的全部錨:visited
表示做爲超連接,並指向一個已訪問的地址的全部錨:target
表明一個特殊的元素,它的id
是URI
的片斷標識符:target
能夠實現選項卡,步驟:
<a>
標籤中的href屬性值設置爲選項卡的<div>
的id
。<div>
標籤的display:none
;,在:target
中設置display:block
;:hover
,:active
基本能夠做用於全部的元素!:hover
表示懸浮到元素上:active
表示匹配被用戶激活的元素(點擊按住時)<a>
標籤的:link
和:visited
能夠覆蓋了全部<a>
標籤的狀態,因此當:link
,:visited
,:hover
,:active
同時出如今<a>
標籤身上時 :link
和:visited
不能放在最後!!!color
background-color
border-color
:enabled
匹配可編輯的表單:disable
匹配被禁用的表單:checked
匹配被選中的表單:focus
匹配獲焦的表單index
的值從1開始計數!!!!
index
能夠爲變量n
(只能是n
)
index
能夠爲even
odd
#wrap ele:nth-child(index)
表示匹配#wrap
中第index
的子元素 這個子元素必須是ele
#wrap ele:nth-of-type(index)
表示匹配#wrap
中第index
的ele
子元素
除此以外:nth-child
和:nth-of-type
有一個很重要的區別: nth-of-type
以元素爲中心!!!例如一個父標籤中有不一樣類型的子標籤,可是子標籤的class
值都爲一個值,那麼調用這個值的nth-of-type(1)
會給到不一樣類型的子標籤的第一個元素,而不是父標籤的第一個子標籤。因此說只要父元素中的子元素類型不一樣,最好用nth-child
。
:nth-child(index)
系列
:first-child
:last-child
:nth-last-child(index)
:only-child
(相對於:first-child:last-child
或者 :nth-child(1):nth-last-child(1)
):nth-of-type(index)
系列
:first-of-type
:last-of-type
:nth-last-type(index)
:only-of-type
(相對於:first-of-type:last-of-type
或者 :nth-of-type(1):nth-last-of-type(1)
)index
能夠是變量n
(只能是n,0到正無窮)odd
:奇數,even
:偶數;:empty
(內容必須是空的,有空格都不行,有attr
不要緊)給每一個元素設置一個右邊框,最後一個元素不要,能夠採用:not
僞類結合:last-of-type
僞類進行操做。
::after
位於一個元素以後,不可選中::before
位於一個元素以前,不可選中::firstLetter
選中第一個::firstLine
選中第一行::selection
選中時改變選中的元素樣式<input>
標籤,type=「radio」
,name
值相同。<input>
標籤包含一個<label>
標籤,給<input>
標籤一個兄弟元素<span>
元素(在頁面中點擊<span>
元素時<input>
標籤也會被選中)<label>
設置樣式,首先<label>
設置浮動float:left;
,由於<label>
標籤是內聯元素,不能指定高寬,設置浮動之後變成塊級元素,能夠指定高寬。<label>
標籤設置相對定位position:relative;
,給<label>
標籤的子標籤<input>
標籤設置絕對定位position:absolute;
此時<input>
標籤的包含塊是<label>
標籤。將<input>
標籤的left
和top
設置爲負值,將<label>
標籤設置overflow:hidden;
(這樣就將<input>
標籤的單選按鈕移出可見區域)。<label>
標籤的子標籤<span>
設置絕對定位position:absolute;``left,top,right,bottom
都設爲0;此時<span>
標籤和<label>
標籤同樣大小。<input>
的僞類:checked
再選中兄弟元素<span>
(input:checked +span
),在樣式裏設置相應的樣式。 div[id="test"]
(0,0,1,1) 和 #test
(0,1,0,0)有時某個聲明比較重要,超過了全部其餘聲明,css2.1就稱之爲重要聲明,並容許在這些聲明的結束分號以前插入 !important
來標誌必需要準確的放置 !important
不然聲明無效。
!important
老是要放在聲明的最後,即分號的前面
標誌爲 !important
的聲明並無特殊的特殊性值,不過要與非重要聲明分開考慮。
實際上全部的重要聲明會被瀏覽器分爲一組,重要聲明的衝突會在其內部解決
非重要聲明也會被分爲一組,非重要聲明的衝突也會在其內部解決
若是一個重要聲明與非重要聲明衝突,勝出的老是重要聲明
@font-face
容許網頁開發者爲其網頁指定在線字體,經過這種做者自備字體的方式,@font-face
能夠消除對用戶電腦字體的依賴。font-family
所指定的字體名字將會被用於font
或font-family
屬性,src
:字體資源。注意:不能在一個css選擇器中定義@font-face
,要在style中定義。class
中再起一個名字,而後去寫這個名字的樣式,而不要直接修改已定義好的名字的樣式。opacity
不是一個繼承屬性,可是也會影響到子元素的透明度。rgba
的格式。text-shadow
用來爲文字添加陰影,並且能夠添加多層,陰影值之間用逗號隔開。(多個陰影時,第一個陰影在最上邊)值:color``(選擇陰影的顏色)
,offset-x
,offset-y(橫向,縱向偏移量),blur-radius(陰影模糊)
text-shadow:black 1px 1px 1px
;transition:1s
;:hover
僞類,color:rgba(0,0,0,0)
;text-shadow:black 0 0 100px
;-webkit-text-stroke: 顏色,邊的大小
。direction
:控制文字的方向,必定要配合unicode-bidi:bidi-override;
linear-gradient(顏色,顏色,...)
linear-gradient(to 結束的方向,顏色,顏色)
linear-gradient(角度,顏色,顏色)
linear-gradient(顏色 長度或者百分比,顏色 長度或者百分比);
repeating-linear-gradient
radial-gradient()
函數建立一個<image>
,用來展現由原點(漸變中心)輻射開的顏色漸變。
radial-gradient(顏色,顏色)
。radial-gradient(顏色 百分比,顏色 百分比,...)
。radial-gradient(形狀,顏色,顏色)
(默認是橢圓ellipse,可選值circle)。radial-gradient(要改變的大小 形狀,顏色,顏色)``closest-side
最近邊,farthest-side
最遠邊,closest-comer
最近角,farthest-comer
最遠角。radial-gradient(要改變的大小 形狀 at px px,顏色,顏色)
默認值最遠角。css transition
提供了一種在更改css
屬性時控制動畫速度的方法。其可讓屬性變化成爲一個持續一段時間的過程,而不是當即生效的。transition-property
默認值爲all
,表示全部可被動畫的屬性都表現出過渡動畫。能夠指定多個property
。
none
沒有過分動畫。all
全部可被動畫的屬性都表現出過渡動畫。IDENT
屬性名稱(能夠指定多個)transition-duration
屬性以秒或毫秒爲單位指定過渡動畫所需的時間。默認值爲0s,表示不出現過渡動畫。能夠指定多個時長,每一個時長都會被應用到由transition-prorerty
指定的對應屬性上。若是指定的時長個數小於屬性個數,那麼時長列表會重複,若是時長列表更長,那麼該列表會被裁減,兩種狀況下,屬性列表都保持不變。屬性值 ,以毫秒或秒爲單位的數值。不接受負值,必定要加單位!transition
的影響,會產生不斷變化的中間值,而css transition-timing-function
屬性用來描述這個中間值是怎樣計算的,實質上,經過這個函數會創建一條加速度曲線,所以在整個transition
變化過程當中,變化速度能夠不斷改變。默認值:ease
timing function
,經過使用transition-property
屬性,能夠根據主列表的列表給每一個css屬性應用相應的timing function
timing function
的個數比主列中數量少,缺乏的值被設置爲初始值。timing function
比主列更多,timing function
函數列表會被截斷至適合的大小,這兩種狀況下聲明的css屬性都是有效的。transition-delay
屬性規定了在過渡效果開始做用以前須要等待的時間。默認值0s。
transition-timing-function
的時候使用的是默認值ease。transitionend
,在webkit
下是webkitTransitionEnd
。(每個擁有過渡的屬性在其完成過渡時都會觸發一次transitionend
事件)在transition
完成前設置display:none
,事件一樣不會被觸發。transition
在元素首次渲染尚未結束的狀況下是不會被觸發的。transition
簡寫屬性,css過渡由簡寫屬性transition
定義是最好的方式,能夠避免屬性值列表長度不一,節省調試時間。注意:在transition
屬性中,各個值的書寫順序是很重要的:
transition-duration
,transition-delay
。transform
屬性容許修改css視覺格式模型的座標空間。transform
屬性只對block
級元素生效。
rotate(旋轉角度)
translate(平移)
transform:translateX(距離)
;transform:translateY(距離)
;transform:translate(距離,距離)
若是距離沒有指定,它的默認值爲0.可設單值,也可設雙值。正數表示xy軸正向位移,負數爲反向位移,設單值表示只x軸位移,y軸座標不變。transform:skew
,與translate
差很少。
transform:scale()
transform-origin
, css屬性能夠更改一個元素變形的基點。對平移不會產生影響。matrix(cos θ,sinθ,-sinθ,cosθ,0,0);
matrix(1,0,0,1,x,y);
matrix(1,tanα,tanβ,1,0,0);
perspective
用於激活一個3D空間,屬性值就是景深大小。(默認none
無景深)perspective
屬性,效果會疊加而不是覆蓋)transform:perspective(depth)
depth
的默認值是none
,能夠設置爲一個長度值,這個長度是沿着z軸距離座標原點的距離。perspective()
函數,那麼它必須被放置在transform
屬性的首位,若是放在其餘函數以後,則會被忽略。rotate3d(x,y,z,angle)
x,y,z分別接受一個數值,用來計算矢量方向,矢量方向是三維空間中的一條線,從座標系原點到x,y,z肯定的那個點,元素圍繞這條線旋轉angle指定的值。transform:translateZ(length)
是3D Transform
特有的,它不能使百分比 值;那樣的移動是沒有意義的。transform:translate3d(translateX,translateY,translateZ)
;transform:scaleZ()
,transform:scale3d(scaleX,scaleY,scaleZ)
;若是隻設置scaleZ()
,元素並無被擴大或者壓縮,scaleZ()
須要和translateZ()
配合使用,number
乘以length
獲得的值,使元素沿z軸移動的距離,從而使得感受被擴大或壓縮。perspective-origin
默認值50%,50%參照於盒模型。transform-style
營造層級的3d舞臺。是一個不可繼承屬性,它做用於子元素。backface-visibility
屬性用來設置是否顯示元素的背面,默認是顯示的。有兩個值hidden
和visible
,默認值是visible
。animation-name
屬性指定應用的一系列動畫,每一個名稱表明一個動畫序列。值:none
(特殊關鍵字,表示無關鍵幀)。keyframename
標識動畫的字符串。animation-duration
指定一個動畫週期的時長。默認值爲0s,表示無動畫,值無單位無效,注意,負值無效。animation-timing-function
動畫的默認效果,由慢變快再變慢。animation-direction
定義了動畫執行的方向。(一共有四個方向)值:reverse(反轉)
反轉的也是關鍵幀和animation-timing-function
animation-delay
定義動畫開始前等待的時間,以秒或毫秒爲單位。animation-iteration-count
定義了動畫執行的次數(屬於動畫內的範疇)重複的是關鍵幀animation-fill-mode
,值backwards
:from以前的狀態與form的狀態保持一致。forwards
,通以後的狀態與to的狀態保持一致。both:backwards+forwards
animation-timing-function
:做用於一個關鍵幀週期而非整個動畫週期animation-play-state
定義了動畫執行的運行和暫停。@keyframes animiationName{ keyframes-selector{ css-style } }
animiationName
必寫項,定義動畫的名稱。keyframes-selector
:必寫項,動畫持續時間的百分比。from:0% to :100%
css-style:css聲明animation-timing-function
控制的是關鍵幀的每一個週期。css3中的彈性盒子分老版本(box
)和新版本(flex
),
flex
不等同於浮動,同時老版本的flex和新版本的flex是有區別的
分清flex
的容器和項目,項目永遠在主軸的正方向上排列
容器的佈局方向
-webkit-box-orient
屬性本質上肯定了主軸是哪個,值:horizontal(x軸),vertical(y軸)
flex-direction
屬性本質上肯定了主軸和側軸分別是哪個,值row(x軸),column(y軸)
容器的排列方向
-webkit-box-direction
控制主軸方向,值normal(正方向,默認),reverse(取反)
flex-direction
,值row-reverse(x軸取反),column-reverse(y軸取反)
富裕空間管理(主軸)
start(富裕空間在右邊(x軸),下邊(y軸))
end(富裕空間在左邊(x軸),上邊(y軸))
center(富裕空間在兩邊)
justify(富裕空間在項目之間)
四個值-webkit-box-pack
不會給項目區分配空間,只是肯定富裕空間的位置。justify-content:flex-start
(富裕空間在主軸的正方向),flex-end(富裕空間在主軸的反方向),center(富裕空間在兩邊),space-between(富裕空間在項目之間),space-around(box沒有的,富裕空間在項目兩邊)富裕空間管理(側軸)
start
(富裕空間在上邊) end
(富裕空間在下邊) center
(富裕空間在兩邊),-webkit-box-align不會給項目區分配空間,只是肯定富裕空間的位置align-items
,值stretch
(box沒有的,等高佈局,不能有高度),flex-start
(富裕空間在側軸的正方向),flex-end
(富裕空間在側軸的反方向),center
(富裕空間在側軸的兩邊),baseline
(box沒有的,按基線對齊),彈性空間的管理:將主軸上的富裕空間按比例分配到各個項目的width/height
上。-webkit-box-flex:1
; 默認值:0不可繼承。
控制側軸的方向:flex-wrap
屬性控制了容器爲單行/列仍是多行/列,而且定義了側軸的方向,新行/列將沿側軸方向堆砌。值:nowrap(不換行)
,wrap-reverse(換行)
控制多行多列時,富裕空間的管理,會把全部行,列當作一個總體。align-content
屬性定義彈性容器的側軸方向上有額外空間時,如何排佈局每一行/列,當彈性容器只有一行/列時無做用。默認值stretch
不可繼承。
flex-basis
:伸縮規則計算的基準值(默認拿width
或height
的值)
order
屬性規定了彈性容器中的可伸縮項目在佈局時的順序,元素按照order
屬性的值的增序進行佈局。擁有相同order
屬性值的元素按照他們在源代碼中出現的順序進行佈局。
align-self
會對其當前flex
行中的flex
元素,並覆蓋align-items
的值,若是任何flex元素的側軸方向margin
值設置爲auto
,則會忽略align-self
。默認值auto
,不可繼承。
老版本-webkit-box-flex
:彈性因子(默認值爲0)
新版本flex-grow
屬性定義彈性盒子項(flex item
)的拉伸因子。
可用空間=(容器大小-全部相鄰項目flex-basis
的總和)
可擴展空間=(可用空間/全部相鄰項目flex-grow
的總和)
每項伸縮大小=(伸縮基準值+(可擴展空間*flex-grow
值))
flex-shrink
起做用的前提是flex-wrap:nowrap;``flex-shrink
的默認值是1.(收縮因子)
flex-shrink
:每項flex收縮大小=伸展基準值-(收縮比例/收縮比例總和*溢出的空間) -->並非
var a= 每一項flex-shrink*flex-basis之和
var b =(flex-shrink*flex-basis)/a
var c = b*溢出的空間
側軸富裕空間的管理
align-items,align-self
(優先級高)align-content
flex簡寫屬性是一個語法糖,flex:1
;表示flex-grow:1;flex-shrink:1;flex-basis:0%;
CSS3媒體查詢選擇器,語法: @media 媒體類型 and(關鍵字) 帶條件的媒體屬性 and 帶條件的媒體屬性 { //規則 }
媒體類型
all
全部媒體(默認值)screen
彩色屏幕print
打印預覽projection
手持設備tv
電視braille
盲文觸覺設備embossed
盲文打印機speech
「聽覺」相似的媒體設備tty
不適用像素的設備媒體屬性
width
:瀏覽器的窗口尺寸device-width
:設備尺寸device-pixel-ratio
(必須加-webkit-前綴):像素比---以上三個媒體屬性可加 min
和 max
前綴
min
:最小值爲誰max
:最大值爲誰橫豎屏切換
orientation
:landscape
(橫屏)orientation
:portrait
(豎屏)關鍵字
only
:處理瀏覽器兼容問題,防止老舊的瀏覽器,不支持帶媒體屬性的查詢而應用到給定的樣式。(讓老版本的瀏覽器失效)@media only screen and (min-width:800px ){ 規則; 規則 }
@media screen and (min-width:800px ){ 規則; 規則 }
@media only
---> 由於沒有only這種設備 規則被忽略@media screen
---> 由於有screen這種設備並且老瀏覽器會忽略帶媒體屬性的查詢建議在每次抒寫media query
的時候帶上only
and
:鏈接一條查詢規則,鏈接媒體屬性 、鏈接媒體類型
,
:鏈接多條查詢規則,和and
類似
not
:取反column-width
指定每一欄的寬度(這是多列布局的第一種分法)column-count
指定要多少欄(這是多列布局的第二種分法)column-gap
column-rule