cs3幀動畫與js實現(xiàn)方式

1.幀動畫

先來看實際的效果

Video_2019-07-29_132517.gif

原圖 ( 原圖是一張高度為9000的2倍圖 ):

image.png

什么是幀動畫

其實就類似于電影中的膠片上的每一格,通過連續(xù)的一幀一幀的表現(xiàn)最終實現(xiàn)一個動畫效果,而在cs3中,膠片就相當于是一張精靈圖

使用幀動畫的好處

既然都是動畫,那為什么不直接使用GIF呢

第一種解決方案

GIF在交互上有致命的缺點,無法根據(jù)我們定義的事件去在規(guī)定的事件內完成我們想要達到的效果~,比如你想做點什么,那必須得等到動畫結束

第二,在性能上GIF會引起頁面周期性的繪畫,性能較差

第二種解決方案

當然,其實還有其他的替代方案,就是通過更改 background-image的屬性值,不斷的切換圖片,也能實現(xiàn)一幀一幀播放的效果

但是這種方式會向服務器發(fā)生多個HTTP請求,服務器壓力大

那我們其實面臨著2個問題,第一是動畫如何交互,第二是減少圖片的請求次數(shù),減少服務器的壓力

第三種解決方案

連續(xù)切換精靈圖的背景位置,將動畫所有需要的幀提前在精靈圖上拼接好,并且精靈圖只需要想HTTP發(fā)送一次請求,這樣就解決了我們的第二個問題.我們先來看看css3具體是如何實現(xiàn)這種效果的

1.css實現(xiàn)方式

Video_2019-07-29_133143.gif
 .boxA {
  width: 75px;
  /*寬高尺寸任意增減*/
  height: 75px;
  position: absolute;
  background: url("./images/20-2.jpg") no-repeat;
  background-size: 100%;
  animation: run steps(60,end) 1s infinite ;
  }
  @keyframes run {
  0% {
  background-position: 0 0;
  }
  100% {
  background-position: 0 -4500px;
  }
  }

steps屬性:

參數(shù)1:分幾步執(zhí)行

參數(shù)2:第一幀是動畫結束(start) / 第一幀是動畫開始(end)

一幀的高度是75px.所有100%的狀態(tài)下y軸為-4500;

如果單單給cs3加上鼠標移入事件,通過移除和添加class類來實現(xiàn)鼠標移入和移除,會出現(xiàn)一個渲染的bug,類似于一個空白的頓閃,而且在動畫中無法去控制交互的效果,于是就馬上按照js的原理用JavaScript實現(xiàn)了一下

2.js實現(xiàn)交互

需求:

1,當鼠標移入的時候

2.當鼠標移出的時候

需求拆解:

1.每次切換背景圖片的x軸位置為0

2.每次切換背景圖片Y軸的位置為幀數(shù) * 一幀高度

3.幀數(shù) = 圖片高度 / 一幀高度

Video_2019-07-29_132517.gif

效果展示

  //每次y運動的坐標(正方向)
  var num = 0;
  //每次y運動的坐標(反方向)
  var nums = 0;
  //當前y的坐標
  var y = 0;
  //正反定時器
  var timid = null;
  var timids = null;
 ?
  //鼠標移入
  $(".service_body ul li i").mouseenter(function () {
  if(timids){
  clearInterval(timids);
  }
  nums = 0;
  var that = $(this);
  //每次定時器執(zhí)行一次都讓y的坐標減去一幀的高度150,移入的動畫
  timid = setInterval(function () {
  that.css("backgroundPositionX", 0);
  that.css("backgroundPositionY", (-150 + num));
  num -= 150;
  //如果到達最小高度,就把定時器清零
  if (parseInt(that.css("backgroundPositionY")) == -4350) {
  clearInterval(timid)
  timid = 'null'
  num = 0;
  }
  }, 20);
  })

  //鼠標移出
  $(".service_body ul li i").mouseleave(function () {
  if(timid){
  clearInterval(timid);
  }
  num = 0;
  var that = $(this);
  //接收鼠標移除時當前y的坐標
  var y = parseInt(that.css("backgroundPositionY"));
  //每次定時器執(zhí)行,都讓y加150,反方向動畫,移出的動畫
  timids = setInterval(function () {
  that.css("backgroundPositionX", 0);
  that.css("backgroundPositionY", (y + nums));
  nums += 150;
  //如果到達最大高度,就把定時器清零
  if (Math.abs(parseInt(that.css("backgroundPositionY"))) == 0) {
  clearInterval(timids)
  timids = 'null'
  nums = 0;
  }
  }, 20)
  })
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末折柠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子前塔,更是在濱河造成了極大的恐慌承冰,老刑警劉巖巷懈,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凑保,居然都是意外死亡涌攻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門芝此,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人岸更,你說我怎么就攤上這事膊升∏补模” “怎么了烂琴?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵郭膛,是天一觀的道長么库。 經常有香客問我秸抚,道長歹垫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任排惨,我火速辦了婚禮吭敢,結果婚禮上,老公的妹妹穿的比我還像新娘暮芭。我一直安慰自己鹿驼,他們只是感情好,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布辕宏。 她就那樣靜靜地躺著畜晰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瑞筐。 梳的紋絲不亂的頭發(fā)上凄鼻,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音聚假,去河邊找鬼块蚌。 笑死膘格,一個胖子當著我的面吹牛峭范,可吹牛的內容都是我干的。 我是一名探鬼主播瘪贱,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼纱控,長吁一口氣:“原來是場噩夢啊……” “哼辆毡!你這毒婦竟也來了?” 一聲冷哼從身側響起甜害,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤舶掖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后唾那,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體访锻,經...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡褪尝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年闹获,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片河哑。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡避诽,死狀恐怖,靈堂內的尸體忽然破棺而出璃谨,到底是詐尸還是另有隱情沙庐,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布佳吞,位于F島的核電站拱雏,受9級特大地震影響,放射性物質發(fā)生泄漏底扳。R本人自食惡果不足惜铸抑,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望衷模。 院中可真熱鬧鹊汛,春花似錦、人聲如沸阱冶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽木蹬。三九已至至耻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間镊叁,已是汗流浹背有梆。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留意系,地道東北人泥耀。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像蛔添,于是被迫代替她去往敵國和親痰催。 傳聞我的和親對象是個殘疾皇子兜辞,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容

  • 在iOS實際開發(fā)中常用的動畫無非是以下四種:UIView動畫,核心動畫夸溶,幀動畫逸吵,自定義轉場動畫。 1.UIView...
    請叫我周小帥閱讀 3,082評論 1 23
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,090評論 1 32
  • 一粹污、知識儲備 二段多、閉包函數(shù) 三、簡單裝飾器 四壮吩、無參裝飾器修訂 五进苍、無參裝飾器之auth 六、有參裝飾器 七鸭叙、加多...
    張大志的博客閱讀 218評論 0 0
  • 永遠不需要感激傷害過你的人觉啊,哪怕你確實因為那些事變得堅強,也不是捅刀人的功勞沈贝。讓你變得更好的人是你自己杠人,是你在受傷...
    一傻解千愁閱讀 193評論 0 0
  • 4月一個普通的晨間搜吧,閱讀微信公眾號剽悍晨讀看到長投小白理財訓練營的介紹,覺得9塊錢太便宜啦杨凑,立馬付款報名滤奈。到...
    尋廣娟閱讀 241評論 3 6