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

首頁(yè) > 開(kāi)發(fā) > CSS > 正文

前端制作動(dòng)畫(huà)的幾種方式(css3,js)

2024-07-11 09:07:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

制作動(dòng)態(tài)的網(wǎng)頁(yè)是是前端工程師必備的技能,很好的實(shí)現(xiàn)動(dòng)畫(huà)能夠極大的提高用戶(hù)體驗(yàn),增強(qiáng)交互效果,那么動(dòng)畫(huà)有多少實(shí)現(xiàn)方式,一直對(duì)此有選擇恐懼癥的我就總結(jié)一下,以便在開(kāi)發(fā)的時(shí)候選擇最好的實(shí)現(xiàn)方式。

1.css的transition。

語(yǔ)法:

transition: property duration timing-function delay;

property:填寫(xiě)需要變化的css屬性如:width,line-height,font-size,color等;

duration:完成過(guò)渡效果需要的時(shí)間(2s 或者2000ms)

timing-function:完成效果的速度曲線(xiàn)(linear,ease,ease-in,ease-out等等)

 

描述
linear 勻速(等于 cubic-bezier(0,0,1,1))。
ease 從慢到快再到慢(cubic-bezier(0.25,0.1,0.25,1))。
ease-in 慢慢變快(等于 cubic-bezier(0.42,0,1,1))。
ease-out 慢慢變慢(等于 cubic-bezier(0,0,0.58,1))。
ease-in-out 先變快再到慢(等于 cubic-bezier(0.42,0,0.58,1))。漸顯漸隱效果
cubic-bezier(n,n,n,n) 在 cubic-bezier 函數(shù)中定義自己的值。可能的值是 0 至 1 之間的數(shù)值。

 

timing-delay:動(dòng)畫(huà)效果的延遲觸發(fā)時(shí)間(2s 或者2000ms)。

默認(rèn)值分別為:all 0 ease 0

transition抓住了所設(shè)置變化屬性的起始態(tài)和完成態(tài),通過(guò)設(shè)定的速度曲線(xiàn)來(lái)完成動(dòng)畫(huà)??梢陨婕暗礁鞣N變化的css屬性,默認(rèn)為all,則所有變化的屬性都會(huì)在出發(fā)時(shí),以動(dòng)畫(huà)的形式展現(xiàn)出來(lái)。

這種動(dòng)畫(huà)方式是css3的,因此ie9以下是不支持的,其他的瀏覽器需要加前綴,并且只有兩態(tài),不支持自定義中間的狀態(tài)。

例子:

<style type="text/css"> div{width:100px;height:100px;background:red;transition:width 2s;-moz-transition:width 2s; /* Firefox 4 */-webkit-transition:width 2s; /* Safari and Chrome */-o-transition:width 2s; /* Opera */}div:hover{width:300px;}</style><div></div> 

tips:transform是一種變化屬性,該屬性允許我們對(duì)元素進(jìn)行旋轉(zhuǎn)、縮放、移動(dòng)或傾斜??梢宰鳛閠ransition中需要變化的屬性。

前綴:

  1. transform:rotate(9deg);
  2. -ms-transform:rotate(9deg); /* Internet Explorer */
  3. -moz-transform:rotate(9deg); /* Firefox */
  4. -webkit-transform:rotate(9deg); /* Safari 和 Chrome */
  5. -o-transform:rotate(9deg); /* Opera */  

 2.css3的animation屬性

語(yǔ)法:

animation: name duration timing-function delay iteration-count direction;

name:keyframe的名稱(chēng),也就是定義了關(guān)鍵幀的動(dòng)畫(huà)的名稱(chēng),這個(gè)名稱(chēng)用來(lái)區(qū)別不同的動(dòng)畫(huà)。

duration:完成動(dòng)畫(huà)所需要的時(shí)間(2s 或者 2000ms)

timing-function:完成動(dòng)畫(huà)的速度曲線(xiàn)

delay:動(dòng)畫(huà)開(kāi)始之前的延遲

iteration-count:動(dòng)畫(huà)播放次數(shù)

direction:是否輪流反向播放動(dòng)畫(huà)(normal:正常順序播放,alternate下一次反向播放)如果把動(dòng)畫(huà)設(shè)置為只播放一次,則該屬性沒(méi)有效果。

使用animation屬性制作動(dòng)畫(huà)可以更加靈活的設(shè)置動(dòng)畫(huà)幀,通過(guò)不同keyframe(動(dòng)畫(huà)幀)的設(shè)置,實(shí)現(xiàn)很多優(yōu)雅的效果,keyframe中的百分?jǐn)?shù)是動(dòng)畫(huà)完成總時(shí)間的比例。

animation是設(shè)置總的動(dòng)畫(huà)效果,而keyframe中設(shè)置上相應(yīng)的動(dòng)畫(huà)名字,然后在keyframe中設(shè)置具體的動(dòng)畫(huà)效果。當(dāng)然由于是css3的屬性,仍然需要注意它的兼容性,加上必須的前綴。

例子:

<style> div{    width:100px;    height:100px;    background:red;    position:relative;    animation:mymove 5s infinite;    -webkit-animation:mymove 5s infinite; /*Safari and Chrome*/}@keyframes mymove{    1% {left:0px;}    20%{left:200px;}    50% {left:300px;}    100%{left:200px;}} @-webkit-keyframes mymove /*Safari and Chrome*/{    1% {left:0px;}    20%{left:200px;}    50% {left:300px;}    100%{left:200px;}}</style> <div></div> 

3.Jquery的animate函數(shù)

語(yǔ)法:

$(selector).animate(styles,options)

styles:產(chǎn)生動(dòng)畫(huà)的css樣式和值;

options={   speed:動(dòng)畫(huà)的速度(可選參數(shù):slow,normal,fase)   easing:動(dòng)畫(huà)的速度函數(shù)(可選參數(shù):swing,linear)   callback:動(dòng)畫(huà)完成之后要執(zhí)行的函數(shù);   queue:是否放置在效果隊(duì)列中,是布爾值,為false則立即開(kāi)始   specialEasing:styles參數(shù)的一個(gè)或多個(gè)屬性映射及對(duì)應(yīng)的easing函數(shù)。}

$(myElement).animate({       left: 500,       top: 200}, {duration:'3000',       specialEasing: {            left: 'swing',            top: 'linear'        }}); 

該方法通過(guò)CSS樣式將元素從一個(gè)狀態(tài)改變?yōu)榱硪粋€(gè)狀態(tài)。CSS屬性值是逐漸改變的,這樣就可以創(chuàng)建動(dòng)畫(huà)效果。

只有數(shù)字值可創(chuàng)建動(dòng)畫(huà)(比如 "margin:30px")。字符串值無(wú)法創(chuàng)建動(dòng)畫(huà)(比如 "background-color:red")。

可以使用的屬性有:(使用比如 "fontSize"來(lái)設(shè)置,而非 CSS 名稱(chēng)(比如 "font-size"))

backgroundPosition,borderWidth,borderBottomWidth,borderLeftWidth

borderRightWidth,borderTopWidth,borderSpacing

margin,marginBottom,marginLeft,marginRight,marginTop

outlineWidth

padding,paddingBottom,paddingLeft,paddingRight,paddingTop

height,width

maxHeight,maxWidth,minHeight,minWidth

font,fontSize

bottom,left,right,top

letterSpacing,wordSpacing,lineHeight,textIndent

可見(jiàn)通過(guò)jquery的animation生成動(dòng)畫(huà)的過(guò)程中可同時(shí)使用多個(gè)屬性,也可以定義相對(duì)值(該值相對(duì)于元素的當(dāng)前值)。需要在值的前面加上 += 或 -=,如(height:'+=150px'),還可以使用隊(duì)列機(jī)制進(jìn)行步驟式的動(dòng)畫(huà)如:

div.animate({height:'300px',opacity:'0.4'},"slow");div.animate({width:'300px',opacity:'0.8'},"slow");div.animate({height:'100px',opacity:'0.4'},"slow");div.animate({width:'100px',opacity:'0.8'},"slow"); 

動(dòng)畫(huà)就會(huì)按照順序一步一步實(shí)現(xiàn),并且不用考慮兼容性,因?yàn)閹缀醵技嫒??!?/p>

 但是,animate函數(shù)只能夠?qū)崿F(xiàn)一些數(shù)值屬性,能夠?qū)崿F(xiàn)的變化非常有限制,而且使用這個(gè)函數(shù)時(shí)還要配合stop來(lái)使用,在達(dá)到某條件時(shí)終止動(dòng)畫(huà),設(shè)置比較復(fù)雜。

4.原生js動(dòng)畫(huà)

 原生js動(dòng)畫(huà)利用js代碼,將動(dòng)畫(huà)一步以函數(shù)的方式寫(xiě)出來(lái),可以實(shí)現(xiàn)多種動(dòng)畫(huà)樣式,而且可以自己做兼容性處理,自己設(shè)立每一步的動(dòng)畫(huà)效果,并且能夠完成比較復(fù)雜的效果,但是代碼量很大。如下面的例子:需要自己定義所有的動(dòng)態(tài)函數(shù),并進(jìn)行計(jì)算、判斷和處理

<div id="odiv" class="odiv">     <div id="sdiv" class="sdiv">     </div></div><script language="javascript">window.onload = function(){     var odiv = document.getElementById('odiv');     odiv.onmouseover = function(){      startMover(0); } odiv.onmouseout = function(){      startMover(-200); }}var timer = null;function startMover(a){//速度和目標(biāo)值     clearInterval(timer);//執(zhí)行當(dāng)前動(dòng)畫(huà)同時(shí)清除之前的動(dòng)畫(huà)     var odiv = document.getElementById('odiv'); timer = setInterval(function(){     var speed = (a-odiv.offsetLeft)/10;//緩沖動(dòng)畫(huà)的速度參數(shù)變化值 //如果速度是大于0,說(shuō)明是向右走,那么就向上取整     speed = speed>0?Math.ceil(speed):Math.floor(speed); //Math.floor();向下取整     if(odiv.offsetLeft == a){      clearInterval(timer);     } else{      odiv.style.left = odiv.offsetLeft+speed+'px';  } },30);}</script> 

5.插件

網(wǎng)上可以搜到很多封裝好的動(dòng)畫(huà)插件,這些插件可以直接引入到頁(yè)面中,通過(guò)初試話(huà)和配置的方式進(jìn)行設(shè)定,直接在頁(yè)面中展示動(dòng)畫(huà)。

如:waves,textillate.js等等。

6.使用canvas制作動(dòng)畫(huà)

我們還可以使用canvas在瀏覽器上畫(huà)圖,并且利用其api,制作動(dòng)畫(huà)。canvas使用的地方非常多,尤其是在制作h5小游戲上。

同樣都是使用編碼的方式由前端開(kāi)發(fā)工程師完成動(dòng)畫(huà)效果,canvas要比原生js效率高的多,流暢的多。通過(guò)畫(huà)筆的方式,能夠輕松的實(shí)現(xiàn)更多的動(dòng)畫(huà)效果。

至于canvas如何使用,請(qǐng)看我博客中正在連載的教程--html5 canvas常用api總結(jié)。

 7.引用gif圖片

如果在需求特別緊急,而且動(dòng)畫(huà)又特別復(fù)雜的情況下,自己沒(méi)有把握按時(shí)實(shí)現(xiàn)效果,或者代價(jià)太大,真的,別猶豫,上gif圖片吧,不要在技術(shù)上糾結(jié)了,雖然在工程師的角度上這樣做很low,但是,用戶(hù)的體驗(yàn)是沒(méi)有影響的~所以,別糾結(jié),就是要快!完成最重要了!

 以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到CSS教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
久久精品国语| 欧美日韩国产免费| 91成品视频入口| 成人免费无遮挡无码黄漫视频| 在线视频国产一区| 亚洲福利视频免费观看| 久久艹国产精品| 国产精品一二三| 日本精品性网站在线观看| 中文字幕欧美日韩在线不卡| 中日韩在线视频| 6080成人| 国产精品50p| 欧美日韩在线观看一区二区三区| 理论片播放午夜国外| 成人高清视频观看www| 午夜精品一区二区三区电影天堂| 欧美中日韩一区二区三区| 91精品国产综合久久精品图片| 最近2019年好看中文字幕视频| 亚洲成人自拍网| 一区二区三区四区五区视频在线观看| 蜜桃久久精品成人无码av| 三级黄在线播放| 亚洲av色香蕉一区二区三区| 黄色在线免费看| 日韩av一卡二卡| 欧美电影影音先锋| 日韩亚洲欧美中文高清在线| 国产精品88久久久久久妇女| 中文字幕资源网在线观看免费| 日批视频网站| 视频二区欧美毛片免费观看| 久久日一线二线三线suv| 国产精品传媒毛片三区| 99视频精品全部免费在线视频| 99精品视频网站| 日韩一级免费在线观看| 色成人亚洲网| 免费在线小视频| 国产情侣第一页| 欧美在线观看视频| 国内自拍视频一区| 欧美日韩中文在线| 欧美麻豆久久久久久中文| 中文字幕日本精品| 亚洲激情自拍| 欧美视频官网| 欧美日韩中文字幕精品| 国产口爆吞精一区二区| 日韩成人av网站| 好男人中文字幕官网| 久久国内精品自在自线400部| 久久国产精品99久久人人澡| 日日摸日日碰夜夜爽无码| 欧美一级二级三级乱码| 精品欧美不卡一区二区在线观看| 91高清视频在线| 最近2019中文字幕在线高清| 亚洲色图在线视频| 男人久久天堂| 久久黄色网页| 在线亚洲人成| 欧美日韩一级在线观看| 亚洲激情社区| 国产乱码精品一区二区三区四区| 日av在线不卡| 日韩女在线观看| 欧美成人精品高清在线播放| 久久国产热视频| 亚洲一区二区免费视频| 波多野结衣爱爱| 亚洲成a人片在线| 欧美大香线蕉线伊人久久国产精品| 综合日韩av| 一级久久久久久久| 人妻熟妇乱又伦精品视频| 成人亚洲精品777777ww| 中文字幕高清20页| 国产视频一区二区在线播放| 国产亚洲欧美日韩一区二区| 国产 日韩 欧美 综合| 精品久久久久久久久国产字幕| 亚洲天堂一区在线| 456成人影院在线观看| 欧美日韩精品一区二区| 黄色av免费在线播放| 欧美在线不卡| 激情综合网五月天| 一级日本不卡的影视| 黑吊大战白xxxxxx| 无圣光视频在线观看| 在线影视一区| 日本在线高清| 国产成人在线小视频| 亚洲国语精品自产拍在线观看| 国产1区2区3区精品美女| 性欧美videossex精品| 成人在线免费公开观看视频| 91麻豆精品国产| 凹凸av导航大全精品| 中文字幕精品影院| 亚洲欧美综合精品久久成人| 亚洲一区二区三区四区五区| 日韩精品福利片午夜免费观看| 在线观看免费污视频| 久久久精品电影| 国产成人久久精品77777综合| 影音先锋男人资源在线| 555www成人网| 欧美video巨大粗暴18| 免费看黄色网| 欧美成年人视频在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美扣逼视频| 久久久久亚洲精品中文字幕| 久久99精品久久久久久国产越南| 亚洲一区二区三区乱码aⅴ蜜桃女| 99久久夜色精品国产亚洲狼| 国产美女精品视频免费播放软件| 嫩草影院一区二区| 欧美1级片网站| 国产91精品一区二区绿帽| 精品国产一区二区三区久久狼5月| 亚洲午夜无码av毛片久久| 波多野结衣亚洲一二三| 天堂av在线| 热久久精品国产| 日本在线电影一区二区三区| 亚洲午夜av在线| 国产精品大陆在线观看| 两根大肉大捧一进一出好爽视频| 麻豆精品新av中文字幕| 日韩丝袜视频| 欧美 日韩 国产一区二区在线视频| 精品成人无码久久久久久| 久久精品亚洲一区二区三区浴池| 2020最新国产精品| **欧美日韩在线| 欧美精品亚洲一区二区在线播放| 青青青青草视频| 国产精品国产对白熟妇| 日本一区午夜艳熟免费| 午夜免费福利视频在线观看| kk眼镜猥琐国模调教系列一区二区| 国产三级漂亮女教师| 成人亚洲综合| 久久色在线观看| 碰碰在线视频| a黄色片在线观看| 亚洲精品国产品国语在线| 日韩中文字幕三区| 热re久久精品国产99热| 黑人巨大精品| 久久亚洲精品大全| 精品国偷自产在线视频99| av不卡中文字幕| 黄色91在线观看| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲2区在线| 国产精成人品2018| 日韩亚洲国产中文字幕欧美| 亚洲美女精品一区| 日韩电影免费一区| 国产91精品高潮白浆喷水| 亚洲夜夜综合| 午夜爽爽爽男女免费观看影院| 亚洲综合视频在线| 日韩国产一区| 性高湖久久久久久久久aaaaa| 精品久久久久久久久久久久久久久| 中文字幕一区在线| 蜜桃麻豆91| jizz在线观看| 亚洲色图第一区| 欧美一级日本a级v片| 青娱乐极品盛宴一区二区| 国产直播在线| 亚州欧美一区三区三区在线| 成人短视频在线观看免费| 精品无人区卡一卡二卡三乱码免费卡| 一区二区日本伦理| 国产午夜精品久久久久久免费视| 欧美91在线|欧美| 91香蕉在线视频| 欧美精品日韩综合在线| 欧美日韩美女在线| japan乱配videos老少配| 免费国产a级片| 九草视频在线观看| 中文字幕成人网| 亚洲精品中文字幕乱码三区不卡| 中文字幕在线观看av| 福利片一区二区三区| 免费视频拗女稀缺一区二区| 国产啊啊啊视频在线观看| 色综合老司机第九色激情| 中文字幕免费精品一区| 国产女大学生av| 亚洲字幕在线观看| 国产精品福利av| 综合毛片免费视频| 黑人巨大精品欧美一区二区免费| www.日韩一区| 美女日批在线观看| 免费一区二区视频| av片在线免费看| 亚洲不卡一卡2卡三卡4卡5卡精品| 亚洲电影中文字幕在线观看| 国产91精品入口17c| 日韩熟女精品一区二区三区| 亚洲影视在线观看| 免费在线视频你懂得| 国产欧美日韩精品a在线观看| 久久成人国产| 综合一区中文字幕| wwww在线观看| 国产成人精品综合网站| 丁香花在线电影小说观看| 青娱乐精品在线视频| 欧美日韩一级在线观看| 欧美一区二区三区爱爱| 欧美影院午夜播放| 国产精品30p| 国产在线播放不卡| 极品尤物av丝袜美腿在线观看| 欧美三区免费完整视频在线观看| 91大神福利视频| 欧美成人小视频| 国产麻豆综合视频在线观看| 欧美日韩中文字幕精品| 看成年女人免费午夜视频| 亚洲精品www| 久久久精品国产免费观看同学| 日本一区二区三区视频在线看| 5月婷婷6月丁香| av男人的天堂在线观看| а√天堂www在线а√天堂视频| 国产经典久久久| 热久久免费国产视频| 日本片在线看| 特级西西444www高清大视频| 免费一区二区三区视频导航| 四季av综合网站| 视频免费在线观看| 成人豆花视频| 欧美**vk| 欧美久久久久免费| 亚洲欧洲日韩一区二区三区| 97dyy97影院理论片在线| 青青视频在线播放| 91专区在线观看| 午夜伦理大片视频在线观看| xxxcom在线观看| 男女啪啪在线观看| 黑人精品视频| 97成人在线观看视频| 日韩精品影院| 亚洲天堂免费观看| 逼特逼视频在线观看| 欧洲熟妇的性久久久久久| 91精品人妻一区二区三区四区| 91久久精品一区二区三区| 亚洲一区二区三区精品在线观看| 久久不卡国产精品一区二区| 欧美一级黄色网| 亚洲码国产岛国毛片在线| 一区二区三区久久网| 黄色漫画在线免费看| 久久久久久毛片免费看| 日韩三级视频中文字幕| 精品深夜av无码一区二区老年| 日本视频在线播放| 麻豆av在线免费观看| 欧美日韩国产经典色站一区二区三区| 激情综合婷婷| 四虎国产精品成人免费入口| 欧美 日韩精品| 免费观看国产视频| 在线日韩网站| 色乱码一区二区三区网站| 爱爱精品视频| 亚洲综合日韩在线| 欧美gv在线观看| 久久av一区二区三| 国产chinese中国hdxxxx| www.久久99| 99re视频在线| 亚洲第一色在线| 亚洲欧洲日产国码无码久久99| 日本深夜福利视频| 日本成人免费| 国产成人精品三级麻豆| 69亚洲乱人伦| 国产一区福利在线| 国产在线视频一区二区三区| 欧美亚洲另类色图| 在线免费a视频| 五月婷婷免费视频| 中文子幕无线码一区tr| 日韩xxxx视频| 久久久久久久国产视频| 在线国产一级| 久久久久亚洲av无码专区喷水| 成人小视频免费看| 国内欧美视频一区二区| 午夜影视一区二区三区| 欧美美女色图| sese在线视频| 波多野吉衣在线视频| 国产一级爱c视频| 国产一区二区三区在线观看精品| 欧美国产精品一区二区三区| 日韩福利视频导航| 在线成人激情| xxx视频在线观看| 欧美爱爱视频网站| 亚洲av无码一区二区三区观看| 成年人在线观看视频免费| 穿情趣内衣被c到高潮视频| 国产成人精彩在线视频九色| 中文字幕在线视频精品| 一区二区成人国产精品| 国产精品99久久久久| 丰满人妻一区二区三区四区| 国产精品免费人成网站酒店| 91美女片黄在线观看| 好吊色视频在线观看|