亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Css3制作變形與動畫效果

2019-11-20 12:00:05
字體:
來源:轉載
供稿:網友

下面通過圖文并茂的方式給大家展示下css3制作變形與動畫效果

css3制作動畫的幾個屬性:變形(transform),過渡(transition)和動畫(animation)。

下面介紹:過渡transition。

一、例子

先通過一個例子感性認識一下transition的動畫效果。

鼠標放上去,div寬度從100px增大到200px。

<style type="text/css"> div{  width: 100px; height: 100px;  background-color: red; } div:hover{ width: 200px; }</style><div></div>

這效果其實也算是動畫,但是非常變化非常快,不平滑。

如果想讓鼠標放上去后div寬度在5s內平滑過渡到200px。只需要加一行代碼;

復制代碼 代碼如下:

div:hover{  
width: 200px;  
transition:width 5s ease-in;}

這效果其實也算是動畫,但是非常變化非常快,不平滑。

如果想讓鼠標放上去后div寬度在5s內平滑過渡到200px。只需要加一行代碼;

復制代碼 代碼如下:

div:hover{  
width: 200px; 
transition:width 5s ease-in;}

這里用到的就是transition屬性,它就是用來實現屬性值平滑過渡,視覺上產生動畫效果。

上面用的transition是縮寫,包含四個屬性:transition-property,transition-duration,transition-timing-function,transition-delay,下面會一一介紹。

二、transition

css3新增transition屬性,可以在事件觸發元素的樣式變化時,讓效果更加細膩平滑。

transition用來描述如何讓css屬性值在一段時間內平滑的從一個值過渡到另一個值。這種過渡效果可以在鼠標點擊、獲得焦點被點擊對元素任何改變中觸發。

語法:

transition :[<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> ||<'transition-delay'> [, [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'>]]*

transition有四個屬性值:

transition-property:執行過渡的屬性。

transition-duration:指定完成過渡需要的時間。

transition-timing-function,在延續時間段,過渡變換的速率變化,簡單理解就是指定過渡函數。

transition-delay:過渡延遲時間。

1、transition-property

transition-property用來指定哪個屬性使用過渡動畫效果。

語法:

復制代碼 代碼如下:

transition-property : none | all | [ <IDENT> ] [ ',' <IDENT> ]*

none:所有屬性都不應用過渡效果。

all:默認值。當值為all時,元素產生任何屬性值變化時都將執行transition效果。

ident:元素屬性名。通過ident指定具體哪些屬性。如果指定的多個屬性中有某個屬性不能應用過渡效果,其他屬性還是生效的。

過渡屬性只有具備一個中點值的屬性(需要產生動畫的屬性)才能具備過渡效果。在w3c中列出了所有可以實現transition效果的css屬性值以及值的類型

Property Name  Typebackground-color as colorbackground-position as repeatable list of simple list of length, percentage, or calcborder-bottom-color as colorborder-bottom-width as lengthborder-left-color as colorborder-left-width as lengthborder-right-color as colorborder-right-width as lengthborder-spacing as simple list of lengthborder-top-color as colorborder-top-width as lengthbottom as length, percentage, or calcclip as rectanglecolor as colorfont-size as lengthfont-weight as font weightheight  as length, percentage, or calcleft as length, percentage, or calcletter-spacing as lengthline-height  as either number or lengthmargin-bottom as lengthmargin-left as lengthmargin-right as lengthmargin-top  as lengthmax-height  as length, percentage, or calcmax-width as length, percentage, or calcmin-height as length, percentage, or calcmin-width as length, percentage, or calcopacity as numberoutline-color as coloroutline-width as lengthpadding-bottom as lengthpadding-left as lengthpadding-right as lengthpadding-top as lengthright  as length, percentage, or calctext-indent as length, percentage, or calctext-shadow as shadow listtop  as length, percentage, or calcvertical-align  as lengthvisibility  as visibilitywidth as length, percentage, or calcword-spacing as lengthz-index as integer

Note:并不是什么屬性改變都會觸發transiton動畫效果,比如頁面的自適應寬度,當瀏覽器改變寬度時,并不會觸發transition的效果。但上述表格所示的屬性類型改變都會觸發一個transition動作效果。

舉例:可以同時給幾個屬性設置動畫效果,比如給height和line-height同時設置動畫效果,實現div變高文字仍然垂直居中。

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>變形與動畫</title> <style type="text/css">div { width: 300px; height: 200px; line-height: 200px; text-align: center; background-color: orange; margin: 20px auto; -webkit-transition-property: height line-height; transition-property: height line-height; -webkit-transition-duration: 1s; transition-duration: 1s; -webkit-transition-timing-function: ease-out; transition-timing-function: ease-out; -webkit-transition-delay: .2s; transition-delay: .2s;}div:hover { height: 100px; line-height: 100px;}</style></head><body> <div>文字垂直居中</div></body></html>

2、transition-duration

transition-duration用來設置從舊屬性過渡到新屬性需要的時間,即持續時間。

3、transition-timing-function

語法:

復制代碼 代碼如下:

<single-transition-timing-function> = ease | linear | ease-in | ease-out | ease-in-out | step-start | step-end | steps(<integer>[, [ start | end ] ]?) | cubic-bezier(<number>, <number>, <number>, <number>)

transition-timing-function屬性指的是過渡的“緩動函數”。通過這個函數會建立一條加速度曲線,因此在整個transition變化過程中,變化速度可以不斷改變。主要包括以下幾種函數。

ease:默認值,元素樣式從初始狀態過渡到終止狀態速度由快到慢,逐漸變慢。linear:意思是線性過渡,即過渡過程恒速。ease-in:速度越來越快,呈現加速狀態,通常稱為“漸顯效果”。ease-out:速度越來越慢,呈現減速狀態,通常稱為“漸隱效果”。ease-in-out速度先加速后減速,稱為“漸顯漸隱效果”。

舉例:鼠標經過問號,幫助信息漸顯漸隱。

<!doctype html><html><head> <meta charset="utf-8"> <title>transition-demo by starof</title> <style>#help{ width:20px; height:20px; border-radius:10px; color:#fff; background:#000; text-align:center; position:relative; margin:50px 20px; cursor:pointer;}#help .tips{ position:absolute; width:300px; height:100px; background:#000; top:-30px; left:35px; border-radius:10px; opacity:0; /*漸隱效果*/ transition: opacity .8s ease-in-out; -moz-transition: opacity .8s ease-in-out; -webkit-transition: opacity .8s ease-in-out;}.tips:before{ content:""; border-width:10px; border-style:solid;  border-color:transparent #000 transparent transparent;  position:absolute;  left:-20px;  top:30px;}#help:hover .tips{  opacity:0.5;  /*漸顯效果*/  transition: opacity .8s ease-in-out;  -moz-transition: opacity .8s ease-in-out;  -webkit-transition: opacity .8s ease-in-out;}</style></head><body>  <div id="help">   ?   <div >幫助信息</div> </div></body></html>

4、transition-delay

transition-delay設置改變屬性值后多長時間開始執行動畫。

5、屬性簡寫

在改變多個css屬性的transition效果時,把幾個transition聲明用逗號隔開,然后每個屬性就都有各自的過渡時間和效果。

Note:第一個時間是時長,第二個是延時。

復制代碼 代碼如下:

a{
transition: background 0.8s ease-in 0.3,
color 0.6s ease-out 0.3;}

 三、貝塞爾曲線和transition

transition的數學模型就是貝塞爾曲線,下面介紹。

曲線其實就是兩點之間插值的效果,貝塞爾曲線是一種插值算法,比線性插值復雜一點。

貝塞爾曲線:起始點,終止點(也稱錨點),控制點。通過調整控制點,貝塞爾曲線的形狀發生變化。

k階貝塞爾插值算法需要k+1個控制點。

一階貝塞爾曲線(線段):意思就是從P0到P1的連續點,用來描述一段線段。一次貝塞爾插值就是線性插值。

 

二階貝塞爾曲線(拋物線):P0-P1是曲線在P0處的切線。

三階貝塞爾曲線:

transition用到的就是三階貝塞爾插值算法,如下圖。

時間在0,1區間,待變換屬性也認為是0,1區間。P0和P3的坐標一直是(0,0)和(1,1)。transition-timing-function屬性用來確定P1和P2的坐標。

 

ease [0, 0] [0.25, 0.1] [0.25, 1.0] [1.0,1.0]linear [0, 0] [0.0, 0.0] [1.0, 1.0] [1.0,1.0]ease-in [0, 0] [0.42, 0] [1.0, 1.0] [1.0,1.0]ease-out [0, 0] [0, 0] [0.58, 1.0] [1.0,1.0]ease-in-out [0, 0] [0.42, 0] [0.58, 1.0] [1.0,1.0]step-start steps(1,start)step-end steps(1,end)cubic-bezier(x1,y1,x2,y2) [0, 0] [x1, y1] [x2, y2] [1.0,1.0]

四、其他相關資料

canvas畫貝塞爾曲線

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>bezier demo</title></head><body><div style="width:800px;height:600px;background-color:#fac0c0;"><canvas id="cvs" width="800" height="600">騷瑞,您的瀏覽器不支持canvas</canvas></div><script type="text/javascript">var cvs=document.getElementById("cvs"),context=cvs.getContext("2d"),points=[];function getXY(node){var x=0,y=0;if (node.offsetParent){while (node.offsetParent){x += node.offsetLeft;y += node.offsetTop;node = node.offsetParent;}}else {node.x && (x += node.x);node.y && (y += node.y);}return [x,y];}function drawPoint(x,y,c,b) {!b && (b=2);context.fillStyle=c || "red";context.fillRect(x,y,b,b);}function bezier(points,t){var i,n=points.length-1,x=0,y=0;function fn(p,n,i,t){return arrangement(n,i)*p*Math.pow(1-t,n-i)*Math.pow(t,i);}for(i=0;i<n+1;i++){x+=fn(points[i][0],n,i,t);y+=fn(points[i][1],n,i,t);}return [x,y];}function factorial(n){if(isNaN(n) || n<=0 || Math.floor(n)!==n){return 1;}var s=1;while(n){s*=n--;}return s;}function arrangement(n,r){return factorial(n)/(factorial(r)*factorial(n-r));}cvs.addEventListener("click",function(event){var i,point=getXY(this),x=event.clientX-point[0]+(document.documentElement.scrollLeft || document.body.scrollLeft),y=event.clientY-point[1]+(document.documentElement.scrollTop || document.body.scrollTop);points.push([x,y]);context.clearRect(0,0,screen.width,screen.height);context.beginPath();//pointsfor(i=0;i<points.length;i++){drawPoint(points[i][0],points[i][1],"blue",4);}//bezierfor (i = 0; i < 1; i += 0.001){drawPoint.apply(this, bezier(points,i));}//lineif(points.length==1){context.moveTo(points[0][0],points[0][1]);}else if (points.length>1){for(i=0;i<points.length;i++){context.lineTo(points[i][0],points[i][1]);}context.lineWidth=0.2;context.stroke();context.closePath();}},true);</script></body></html>

 

希望這些內容可以幫助到大家,謝謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品视频99| 久久久久久av| 欧美电影电视剧在线观看| 91亚洲永久免费精品| 韩国v欧美v日本v亚洲| 欧美极品在线视频| 欧美一区二区三区……| 欧美日韩国产丝袜另类| 精品国产欧美一区二区三区成人| 欧美激情图片区| 欧美贵妇videos办公室| 亚洲永久在线观看| 国产www精品| 大量国产精品视频| 久久久久久久影视| 青青草国产精品一区二区| 亚洲电影在线观看| 欧美一区二区三区免费观看| 色琪琪综合男人的天堂aⅴ视频| 亚洲国产私拍精品国模在线观看| 欧美一级淫片aaaaaaa视频| 亚洲国产成人久久| 久久人人爽人人爽人人片av高请| 成人国产亚洲精品a区天堂华泰| 亚洲国产精品人久久电影| 国产一区二区三区免费视频| 精品国偷自产在线视频| 国产suv精品一区二区| 欧美精品在线播放| 91成人在线观看国产| 蜜臀久久99精品久久久久久宅男| 日韩视频中文字幕| 成人乱色短篇合集| 亚洲精品国产福利| 国产精品网站大全| 亚洲精品www| 久久99国产综合精品女同| 91爱爱小视频k| 亚洲自拍小视频免费观看| 日韩不卡在线观看| 亚洲精品自产拍| 久久国产精品影片| 亚洲毛片在线观看.| 欧美成人一区二区三区电影| 中文字幕av日韩| 国产日韩中文字幕在线| 国产97在线|亚洲| 一区国产精品视频| 久久久噜噜噜久久| 亚洲人成在线一二| 亚洲三级黄色在线观看| 欧美成人免费在线观看| www.久久色.com| 国产精品91一区| 国产精品久久久久影院日本| 不卡伊人av在线播放| 亚洲va久久久噜噜噜久久天堂| 日韩电影免费观看在线| 亚洲第一福利网| 久久久久99精品久久久久| 亚洲男人的天堂网站| 久久精品男人天堂| 国产午夜精品视频免费不卡69堂| 992tv在线成人免费观看| 亚洲一区二区三区xxx视频| 国产精品亚洲аv天堂网| 亚洲精品美女免费| …久久精品99久久香蕉国产| 亚洲乱亚洲乱妇无码| 国产精品爽爽ⅴa在线观看| 国产噜噜噜噜久久久久久久久| 日韩电影在线观看中文字幕| 美女啪啪无遮挡免费久久网站| 日韩精品久久久久久久玫瑰园| 亚洲色图欧美制服丝袜另类第一页| 97成人在线视频| 国产亚洲欧美另类中文| 日韩亚洲欧美中文高清在线| 国产精品免费久久久| 97久久超碰福利国产精品…| 热99久久精品| 久久99热这里只有精品国产| 日韩不卡在线观看| 精品国偷自产在线视频| 亚洲综合中文字幕在线观看| 亚洲天堂2020| 91成人免费观看网站| 久久久精品久久久久| 亚洲最大激情中文字幕| 中文字幕日韩欧美在线视频| 久久国产精品久久精品| 91老司机精品视频| 精品激情国产视频| 久久在线免费视频| 亚洲精品一二区| 国产深夜精品福利| 精品国偷自产在线| 亚洲国产成人精品女人久久久| 亚洲精品一区二区网址| 国产成人jvid在线播放| 国产成人自拍视频在线观看| 国产成人福利网站| 一区二区三区无码高清视频| 国产精品日韩欧美综合| 欧美大片欧美激情性色a∨久久| 久久中文字幕在线视频| 久久久精品999| 日韩av手机在线看| 亚洲精品乱码久久久久久金桔影视| 久久久之久亚州精品露出| 久久成人国产精品| 91久久中文字幕| 91人人爽人人爽人人精88v| 日本欧美一二三区| 亚洲免费视频一区二区| 超碰日本道色综合久久综合| 国产综合香蕉五月婷在线| 在线亚洲国产精品网| 日韩资源在线观看| 国内精品久久久久影院优| 亚洲天堂影视av| 97人人模人人爽人人喊中文字| 欧美大胆a视频| 欧美激情中文网| 日韩在线视频观看| 操日韩av在线电影| 日韩精品中文字幕在线| 欧美电影在线观看| 国产伦精品一区二区三区精品视频| 91视频免费网站| 久久久欧美精品| 日韩精品免费在线观看| 国产精品亚洲第一区| 91麻豆国产精品| 亚洲男人7777| 欧美日本啪啪无遮挡网站| 成人黄色激情网| 国产精品嫩草视频| 亚洲精品网站在线播放gif| 亚洲国产黄色片| 欧美日韩一区二区免费在线观看| 在线精品高清中文字幕| 亚洲美女免费精品视频在线观看| 国产伊人精品在线| 日韩www在线| 欧美激情精品久久久久久久变态| 久久视频国产精品免费视频在线| 欧美黄色三级网站| 日韩成人av网址| 国产亚洲视频中文字幕视频| 国产精品爱啪在线线免费观看| 亚洲精品一区久久久久久| 久久影视三级福利片| 国产精品午夜一区二区欲梦| 久久久久这里只有精品| 欧美日韩国产综合视频在线观看中文| 欧美多人乱p欧美4p久久| 91av在线不卡| 色偷偷噜噜噜亚洲男人| 亚洲天堂第二页| 亚洲欧美日韩直播| 2019亚洲日韩新视频| 国产成+人+综合+亚洲欧洲| 97国产在线观看|