Q1 為了更好的向前兼容不同的瀏覽器,編寫(xiě)CSS3時(shí)都有哪些前綴?分別對(duì)應(yīng)什么瀏覽器?
| 前綴 | 瀏覽器 |
|---|---|
| -webkit | chrome和safari |
| -moz | firefox |
| -ms | IE |
| -o | opera |
Q2 說(shuō)說(shuō)你理解的偽類和偽元素分別是什么?
偽類:是為了通過(guò)選擇器,格式化DOM樹(shù)以外的信息,以及不能被常規(guī)CSS選擇器獲取到的信息。
通過(guò)上面的概念我們知道了偽類的功能有兩種:
1.格式化DOM樹(shù)以外的信息。比如: <a> 標(biāo)簽的:link、:visited 等。這些信息不存在于DOM樹(shù)中。
2.不能被常規(guī)CSS選擇器獲取到的信息。比如:要獲取第一個(gè)子元素,我們無(wú)法用常規(guī)的CSS選擇器獲取,但可以通過(guò) :first-child 來(lái)獲取到。
偽元素:可以創(chuàng)建一些文檔語(yǔ)言無(wú)法創(chuàng)建的虛擬元素。比如:文檔語(yǔ)言沒(méi)有一種機(jī)制可以描述元素內(nèi)容的第一個(gè)字母或第一行,但偽元素可以做到(::first-letter、::first-line)。同時(shí),偽元素還可以創(chuàng)建源文檔不存在的內(nèi)容,比如使用::before或者::after。
根據(jù)上述理解,偽類和偽元素的區(qū)別如下:
偽類其實(shí)是彌補(bǔ)了CSS選擇器的不足,用來(lái)更方便地獲取信息,而偽元素本質(zhì)上是創(chuàng)建了一個(gè)虛擬容器(元素),我們可以在其中添加內(nèi)容或樣式。
在CSS3中,偽類用單冒號(hào):表示;而偽元素用雙冒號(hào)::表示。一個(gè)選擇器可以同時(shí)使用多個(gè)偽類(但有的偽類會(huì)互斥);而一個(gè)選擇器只能同時(shí)使用一個(gè)偽元素
Q3 分清 Transform 、Transition、 Animations 三兄弟,并闡述它們分別的用處?
1、transform: 改變?cè)匦螤?/strong>
| 屬性 | 意義 |
|---|---|
| rotate | 圍繞中心點(diǎn)旋轉(zhuǎn)deg單位 |
| translate(x,y) | 向x y軸移動(dòng)位置px |
| scale | 整體縮放倍數(shù)、scaleX scaleY沿軸方向縮放 |
| skew(x,y) | 切變 、scaleX scaleT沿軸切變 |
2、transition:過(guò)渡,一個(gè)元素從一個(gè)形狀變換到另一個(gè)形狀。(需要事件觸發(fā))
| 屬性 | 含義 |
|---|---|
| property(none/all/indent) | 變換的屬性 |
| duration | 轉(zhuǎn)換持續(xù)時(shí)間,單位 s/ms |
| timing-function(ease/liner/ease-in/ease-out/ease-in-out/cubic-bezier) | 變換速率 |
| delay | 轉(zhuǎn)換開(kāi)始執(zhí)行的時(shí)間,事件觸發(fā)后多久執(zhí)行 |
transition 連寫(xiě)格式:
transition: property duration animation type delay
注意:大眾型瀏覽器 IE 全家都是不支持,另外由于各大現(xiàn)代瀏覽器Firefox,Safari,Chrome,Opera都還不支持W3C的標(biāo)準(zhǔn)寫(xiě)法,所以在應(yīng)用transition時(shí)我們有必要加上各自的前綴
3、animation動(dòng)畫(huà)
| 屬性 | 含義 |
|---|---|
| @keyframes | 定義動(dòng)畫(huà)名 ,以及該名稱包含的動(dòng)畫(huà)需要變化的屬性及內(nèi)容 |
| animation-name | 元素綁定動(dòng)畫(huà)名(@keyframes定義的動(dòng)畫(huà)名) |
| animation-duration | 動(dòng)畫(huà)持續(xù)時(shí)間 |
| animation-timing-function | 動(dòng)畫(huà)變換速率 |
| animation-delay | 開(kāi)始時(shí)間。觸發(fā)動(dòng)畫(huà)后多久開(kāi)始動(dòng)畫(huà) |
| animation-interation-count | 循環(huán)播放次數(shù)。(infinite 是無(wú)限次) |
| animation-direction | 動(dòng)畫(huà)運(yùn)動(dòng)方向 (normal/ alternate: 默認(rèn)值為normal,如果是normal動(dòng)畫(huà)每次循環(huán)都是向前播放的,也就是每次都是從0%播放到100%。 另一個(gè)值是alternate,設(shè)定animation-direction為alternate,那么就會(huì)從0%播放到100%后就會(huì)從100%播放到0%。結(jié)合 animation-interation-count:infinite,可以形成動(dòng)畫(huà)來(lái)回循環(huán)播放。例如實(shí)現(xiàn)“如何使一個(gè)小球來(lái)回?zé)o限運(yùn)動(dòng)”) |
| animation-play-state(running/pause) | 動(dòng)畫(huà)的播放狀態(tài)(其中running是默認(rèn)值,就是在播放。而paused就是暫停播放。而當(dāng)動(dòng)畫(huà)暫停播放后,再重新設(shè)置為running的時(shí)候,就會(huì)從原來(lái)的位置重新播放。) |
樣例:
.animation{
width: 300px;
height: 300px;
position: absolute;
font-size: 22px;
color: white;
background-color: brown;
animation: ccchange 3s ease alternate infinite;
}
@keyframes ccchange {
0%{
width: 300px;
height: 300px;
background-color: brown;
}
40%{
width: 500px;
height: 500px;
background-color: seagreen;
}
60%{
width: 400px;
height: 400px;
background-color: coral;
}
100%{
}
}