E[attr]
只使用屬性名,但沒有肯定任何屬性值javascript
E[attr="value"]
指定屬性名,並指定了該屬性的屬性值css
E[attr~="value"]
指定屬性名,而且具備屬性值,此屬性值是一個詞列表,而且以空格隔開,其中詞列表中包含了一個value詞,並且等號前面的「〜」不能不寫html
E[attr^="value"]
指定了屬性名,而且有屬性值,並且屬性值是以value開頭的java
E[attr$="value"]
指定了屬性名,而且有屬性值,並且屬性值是以value結束的css3
E[attr*="value"]
指定了屬性名,而且有屬性值,並且屬值中包含了valueweb
E[attr|="value"]
指定了屬性名,而且屬性值是value或者以「value-」開頭的值(好比說zh-cn)(以value開頭不是)瀏覽器
IE7及以上支持;ide
<p miaov="leo">leo</p> <p miaov="dp">杜鵬</p> p[miaov]{background:red;} //兩個都變紅 p[miaov=leo]{background:red;} //只有leo都變紅
E:nth-child(n)
匹配E標籤的父節點中的第n個子節點且要是類型爲E的節點svg
是從1開始算起,而不是0;
odd/even匹配奇/偶數;
()裏能夠計算; (3n)/(4n) ; n=1,2,3...wordpress
E:nth-last-child(n)
匹配E父節點中的第n個字節點的節點,從後向前計算
E:nth-of-type(n)
匹配E父節點中的第n個類型爲E子節點
E:nth-last-of-type(n)
匹配E父節點中的第n個類型爲E子節點,從後向前計算
E:empty
匹配沒有子節點的類型爲E節點
注意:子節點包含文本節點
E:first-child
匹配E節點中的第一個子節點
等同於
:first-child==:nth-child(1)
E:last-child
匹配E節點中的最後一個子節點
等同於
:last-child==:nth-last-child(1)
E:first-of-type
匹配E父節點中的第一個子節點且節點類型是E的節點
等同於
:first-of-type==nth-of-type(1)
E:last-of-type
匹配E父節點中的最後一個子節點且節點類型是E的節點
等同於
:last-of-type==nth-last-of-type(1)
E:only-child
匹配E的父節點中只有一個子節點,並且類型爲E的惟一子節點
注意:子節點不包含文本節點
E:only-of-type
匹配E的父節點中惟一一個類型爲E的子節點(只有一個E節點,但能夠有多個子節點)
是表示一個節點他有不少個子節點,而其中只有一種類型的子節點是惟一的
注意:子節點不包含文本節點
E:target
匹配當前的URL片斷的元素類型,且這個元素必須是E
<a href="#div1">div1</a> <a href="#div2">div2</a> <div id="div1">div11</div> <div id="div2">div22</div> 點擊a標籤後,URL會從 xxx.html 變成 xxx.html#div1(叫哈希值?),而後:target會匹配到這個#div1 div{display:none;} div:target{ display:block;} 點擊a標籤顯示對應div
E:not(.box)
類名爲box的E節點不被匹配
E~F
匹配E元素毗鄰的F元素
表單類:
E:disabled
匹配不可點擊的表單控件
E:enabled
匹配可點擊的表單控件
E:checked
匹配已選中的checkbox或radio(能夠與~
配合使用)
文本類:
E:first-line
匹配E節點中的第一行
E:first-letter
匹配E節點中的第一個字符
E::selection
匹配E節點在用戶選中文字時
E::before
生成內容在E節點前
E::after
生成內容在E節點後
selection必需要雙冒號,before/after能夠單冒號
在RGB的基礎上增長了一個'A'值,表明AlphaA透明度
RGBA放到哪裏就哪裏透明;
color : rgba(255,255,255,0.5);//文字透明 border : rgba(255,255,255,0.5);//透明
RGBA能夠便捷地實現背景透明,裏面的文本不透明;
若是不用RGBA,就可能要用兩個層疊在一塊兒;
text-shadow:x y blur color;
x 橫向偏移
y 縱向偏移
blur 模糊距離
color 陰影顏色
陰影能夠疊加,用,
隔開;
text-shadow:x1 y1 blur1 color1,x2 y2 blur2 color2;
注意:先渲染後面的,再渲染前面的,疊加太多層會致使很卡
文字描邊:-webkit-text-stroke:寬度 顏色
只支持webkit內核的瀏覽器;
direction
定義文字排列方式(全兼容)
配合unicode-bidi
一塊兒使用後變成文字從左/右開始輸入;
p{direction:rtl;unicode-bidi:bidi-override;} <p>妙味課堂</p> 顯示:堂課味妙
text-overflow
定義省略文本的處理方式
注意配合overflow:hidden
和white-space:nowrap
一塊兒使用
@font-face { font-family: 'myFont';//字體名 src: url('1-webfont.eot'); src: url('1-webfont.eot?#iefix') format('embedded-opentype'), url('1-webfont.woff') format('woff'), url('1-webfont.ttf') format('truetype'), url('1-webfont.svg#untitledregular') format('svg'); font-weight: normal; font-style: normal; }
用的時候就這樣用:
p{font-family:'myFont';}
用AI等軟件建立後字體包後,再轉換爲兼容的代碼就能夠用了;
轉換字體格式生成兼容代碼:fontsquirrel
千言萬語不如看文檔 MDN 使用CSS彈性盒子
border-radius
能夠有1~4個參數:
默認xy軸半徑同樣;
border-radius:10px/15px;
這種寫法是xy軸半徑不同,x軸爲10px,y軸爲15px;
/
前是設置x軸,/
後是設置y軸;
border-radius:10px 20px 30px 40px/15px 25px 35px 45px;
參數能夠是像素px或百分比%;
border-image
能夠有如下參數:
border-image-slice
是把圖片切成九宮格,
九宮格的四個角填充到邊框對用的四個角,
中間一格正常不顯示,當使用了-webkit
前綴時能夠顯示,填充到元素內容區(至關於背景了),
其他格默認拉伸顯示,能夠經過border-image-repeat
設置;
這些參數能夠簡寫在border-image
中:
-webkit-border-image:url(border.png) 27 27 round stretch;
一條邊框還能夠有多種顏色(只在火狐下實現了):
-moz-border-left-colors:red blue yellow red blue yellow red blue yellow; 多少個顏色參數就多少個顏色;
更多詳細看 CSS3 border-image詳解、應用及jQuery插件
漸變能夠應用於任何使用背景圖片的地方。這意味着在CSS樣式中,漸變至關於背景圖片,在理論上可在任何使用url(
) 值的地方採用,好比最多見的background-image
、list-style-type
以及前面介紹的CSS3的圖像邊框屬性border-image
。但直到目前爲止,僅在背景圖片中獲得最完美的支持。
linear-gradient([[<angle> | to <side-or-corner> ],]?<color-stop>[,<color-stop>]+)
最先支持CSS3漸變的是Webkit內核的瀏覽器,後來有W3C的標準語法,這裏寫的是標準語法;
顏色值用RGBA時能夠設置透明度,同時能夠設置多個漸變顏色:
box{ background-image:-webkit-linear-gradient( to left, rgba(255,0,0,0) 0%, rgba(255,0,198,0.8) 93%, rgba(255,0,198,0) 100%); }
IE11下就不支持linear-gradient
了,須要用這個方法實現,且顏色能有兩個,方向只有上到下和左到右:
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#ff0000',GradientType='1');
除了線性漸變,還有徑向漸變、重複線性漸變和重複徑向漸變;
更多詳細請看 CSS3漸變——線性漸變
css3多重背景依然是不支持IE9如下系列版本。其餘高級瀏覽器都是支持的。
p{background:url(demo.gif) no-repeat ,url(demo1.gif) no-repeat left bottom, url(demo2.gif) no-repeat 10px 15px yellow;}
每一個背景用,
隔開;
background-size:length|percentage|cover|contain;
background-origin
屬性規定 background-position
屬性相對於什麼位置來定位。
background-origin: padding-box|border-box|content-box;
注意:若是背景圖像的background-attachment
屬性爲 "fixed",則該屬性沒有效果。
屬性規定背景的繪製區域。
background-clip: border-box|padding-box|content-box;
IE下還有一個text
的屬性,只顯示文字區的內容,其餘被裁切:-webkit-background-clip:text;
-webkit-mask-image
-webkit-mask-position
-webkit-mask-repeat
webkit下有這三個屬性能夠實現遮罩,其餘內核也有本身的實現方法;
過渡transition是一個複合屬性,包括下面這四個子屬性:
過渡transition的這四個子屬性只有transition-duration
是必需值且不能爲0。
其中,transition-duration
和transition-delay
都是時間。
當兩個時間同時出現時,第一個是transition-duration
,第二個是transition-delay
;
當只有一個時間時,它是transition-duration
,而transition-delay
爲默認值0;
transition-property
:
transition-property
屬性的樣式transition-property
: 可過渡的樣式,可用逗號分開寫多個樣式transition:width 3s, background 3s;
注意:不是全部的CSS樣式值均可以過渡,只有具備中間值的屬性才具有過渡效果
transition-delay
和transition-duration
:
transition-timing-function
:
過渡時間函數用於定義元素過渡屬性隨時間變化的過渡速度變化效果。
過渡時間函數共三種取值,分別是關鍵字、steps函數和bezier函數;
steps函數 點擊看參數
steps步進函數將過渡時間劃分紅大小相等的時間時隔來運行
關鍵字 實際上是bezier函數或steps函數的特殊值
ease:(快慢快)默認值
linear:(勻速)
ease-in:(加速)
ease-out:(減速)
ease-in-out:(和ease相似,但比ease幅度大)
step-start: 直接位於結束處。至關於steps(1,start)
step-end: 位於開始處通過時間間隔後結束。至關於steps(1,end)
steps步進函數爲:
steps(<integer>[,start | end]?)
<integer>
:用來指定間隔個數(該值只能是正整數)
第二個參數: 該參數可選,默認是end,表示開始值保持一次;若參數爲start,表示開始不保持點擊返回
transition的多個屬性值用逗號分隔開表示能夠同時爲多個值設置過渡屬性:
#test1{ transition-property: width,background,opacity; transition-duration: 2s,500ms; transition-timing-function: linear,ease; transition-delay: 200ms,0s; } /*相似於*/ #test2{ transition: width 2s linear 200ms,background 500ms ease 0s,opacity 2s linear 200ms; }
觸發方式
通常地,過渡transition的觸發有三種方式,分別是僞類觸發、媒體查詢觸發(@media
觸發)和javascript觸發。
過渡完成事件
當過渡完成後執行的事件,相似於回調函數;
Webkit內核: obj.addEventListener('webkitTransitionEnd',function(){},false); firefox(標準下): obj.addEventListener('transitionend',function(){},false);
變形transform
是一些效果的集合,主要是移動、旋轉、縮放和傾斜這四種基本操做,還能夠經過設置matrix矩陣
來實現更復雜的效果。變形transform
能夠實現2D和3D兩種效果。2D變形涉及的屬性主要有transform變形函數和transform-origin變形原點。
注意:transform
只能應用於: 非inline元素(包括block、inline-block、table、table-cell等);
變形原點(2維)
變形原點transform-origin是指變形操做所依據的基點。默認狀況下,變形原點位於元素的中心點;
transform-origin
只能應用於: 非inline元素(包括block、inline-block、table、table-cell等);
2維的變形原點transform-origin
是由x軸和y軸兩個軸的值共同肯定的(不考慮3維的狀況,z軸的值默認爲0),
有關鍵字、數值和百分比三種取值:
變形函數(2維)
變形transform是一系列變形函數的集合
transform
有如下函數:
translate()
位移函數scale()
縮放函數rotate()
旋轉函數skew()
傾斜函數注意:位移、縮放、旋轉和傾斜這四個操做中除了位移與變形原點無關,其他三個都與變形原點有關;
下面詳解各個函數:
位移
translate位移函數可使元素從原來的位置上移動指定的位移。涉及位移的2d函數共3種,分別是translate()
、translateX()
、translateY()
注意:元素髮生位移後,元素的x軸和y軸跟着也一併移動,若元素再進行其餘的變形操做,則要沿着改變後的x軸和y軸進行變形;
位移函數至關於matrix(1,0,0,1,x,y);
位移函數還能夠接受百分比。其中x%相對於元素水平方向的寬度和,y%相對於元素垂直方向的高度和;
注意:IE10瀏覽器有bug,元素的位移函數的百分比是相對於元素的可視寬高(不包括邊框)而言的;
縮放
scale縮放函數可讓元素根據變形原點進行縮放,默認縮放值爲1。涉及縮放的2d函數共3種,分別是scale()
、scaleX()
、scaleY()
注意:當元素被縮放後,若元素要進行位移,數值類型的位移值要乘以該縮放比例;百分比類型的位移值乘以原來的寬度和或高度和轉換成數值類型後,再乘以縮放比例;
縮放函數至關於matrix(x,0,0,y,0,0);
傾斜
skew傾斜函數可讓元素以其變形原點圍繞x軸和y軸進行必定角度的傾斜。涉及傾斜的2d函數共3種,分別是skew()
、skewX()
、skewY()
注意:元素傾斜後,x軸和y軸發生傾斜,若元素要進行其餘變形操做,則沿着傾斜後的x軸和y軸進行變形
傾斜函數至關於matrix(1,tany,tanx,1,0,0);
旋轉
rotate旋轉函數可讓元素經過指定的角度(deg)根據變形原點進行順時針旋轉,默認爲0deg。與skew不一樣的是,rotate不會改變元素的形狀。涉及到旋轉的2d函數只有一個,就是rotate()
注意:元素旋轉後,元素的x軸和y軸也跟着發生旋轉。若元素要進行其餘變形操做,則沿着旋轉後的x軸和y軸進行變形
旋轉函數至關於matrix(cosx,sinx,-sinx,cosx,0,0);
多值
transform變形能夠接受多值,出現多個變形函數時用空格分隔,而且按照從前日後的順序執行。
若是變形函數不是以多值的形式,多個變形函數的前後關係能夠經過多個元素的嵌套關係體現:
<div style="transform:rotate(45deg) translateX(100px)"></div> 至關於 <div style="transform:rotate(45deg)"> <div style="transform:translateX(100px)"></div> </div>
3D變形 transform 和2D的基本同樣,但要先設置變形樣式爲3D:transform-style:preserve-3d;
此外還比2D變形多了一個perspective
屬性;
perspective 屬性定義 3D 元素距視圖的距離,以像素計。
目前瀏覽器都不支持 perspective 屬性。
Chrome 和 Safari 支持替代的-webkit-perspective
屬性。
注意:perspective 屬性隻影響 3D 轉換元素。
同時能夠設置景深基點Perspective- origin
,有如下三個屬性:
經過 CSS3,咱們可以建立動畫,這能夠在許多網頁中取代動畫圖片、Flash 動畫以及 JavaScript。
如需在 CSS3 中建立動畫,您須要學習@keyframes
(關鍵幀) 規則。
@keyframes
規則用於建立動畫。在@keyframes
中規定某項 CSS 樣式,就能建立由當前樣式逐漸改成新樣式的動畫效果。
當您在@keyframes
中建立動畫時,請把它捆綁到某個選擇器,不然不會產生動畫效果。
經過規定至少如下兩項 CSS3 動畫屬性,便可將動畫綁定到選擇器:
把 "myfirst" 動畫捆綁到 div 元素,時長:5 秒: div { animation: myfirst 5s; -moz-animation: myfirst 5s; /* Firefox */ -webkit-animation: myfirst 5s; /* Safari 和 Chrome */ -o-animation: myfirst 5s; /* Opera */ }
注意:您必須定義動畫的名稱和時長。若是忽略時長,則動畫不會容許,由於默認值是 0。
關鍵幀的時間單位:
有如下幾個屬性:
animation
全部動畫屬性的簡寫屬性,除了 animation-play-state
屬性。animation-name
規定 @keyframes 動畫的名稱。animation-duration
規定動畫完成一個週期所花費的秒或毫秒。默認是 0。animation-timing-function
規定動畫的速度曲線。默認是 "ease"。animation-delay
規定動畫什麼時候開始。默認是 0。animation-iteration-count
規定動畫被播放的次數。默認是 1。animation-direction
規定動畫是否在下一週期逆向地播放。默認是 "normal"。animation-play-state
規定動畫是否正在運行或暫停。默認是 "running"。animation-fill-mode
規定對象動畫時間以外的狀態。