方向特效實現原理剖析及動手實現

2020-12-13 路飛寫代碼

大家好,我是路飛寫代碼,前端攻城獅,歡迎關注我,一起學習交流。

偶然機會發現了一個方向特效效果,感覺很不錯,然後就開始想著自己去實現一下,馬不停蹄我就開始分析其原理,並一步步實現效果。如果您對此感興趣,可以關注並私信我獲取源碼。

最終效果圖

我製作的原理圖

三個錨點位置(藍、紅、黃)div動效層的初始位置(初始旋轉角度、初始位置)div動效層旋轉方向和頂角錨點設置主要知識點

transform-origin: left top;設置或檢索對象以某個原點進行轉換。也就是設置中心點。transform:rotate(deg)。將元素旋轉某個角度。rotate():指定對象的2D rotation(2D旋轉),需先有 <' transform-origin '> 屬性的定義 。animation: name duration timing-function delay iteration-count direction fill-mode; 通過@keyframes我們設置動畫幀,一個0%起始狀態,另一個100%起始狀態。然後我們就可以設置animation動畫animation-fill-mode:forwards;設置對象狀態為動畫結束時的狀態,也就是設置最後一幀transform-origin的具體用法如下:

transform-origin:[ <percentage> | <length> | left | center① | right ] [ <percentage> | <length> | top | center② | bottom ]?

默認值:50% 50%,效果等同於center center

適用於:所有塊級元素及某些內聯元素

動畫性:當值為數值時

計算值:除了指定絕對值,否則都為百分比。

主要難點分析

需要判斷滑鼠的滑入方向,是從上到下,還是從左到右、從右到左、從下到上。自己研究了一下需要一些正切函數才能做到精準判斷,數學忘光了,我從網上找到的一個方法可用。

判斷滑鼠滑入方向

方向問題解決後,我們就可以將我們之前設置的幀動畫進行賦值。代碼貼圖

js代碼截圖(全)

js代碼貼圖(全)

html布局截圖(全)

html元素布局(全)

css代碼幀貼圖(部分)比較長,不在貼出所有CSS代碼。

CSS動畫幀(部分)

結束語

一些我們看到的動畫效果,可以通過仔細分析其原理,進行庖丁解牛,這樣就會越來越清晰,當然也需要掌握基礎的知識。知道哪些動畫CSS可以完成。所以任何高級技術都是建立在紮實基礎之上。夯實基礎,才能夠觸類旁通。

我是路飛寫代碼,歡迎關注我,一起分享知識,交流經驗。如果您感興趣,可以關注並私信我獲取源碼,百家號發雲盤地址連結審核不通過,望知曉。

封面圖

相關焦點

  • 阿里P9都窺視已久的「Java並發實現原理:JDK源碼剖析」
    本書基於JDK 7和JDK 8,對整個Concurrent包進行全面的源碼剖析。JDK 8中大部分並發功能的實現和JDK 7一樣,但新增了一些額外特性。例如CompletableFuture、ConcurrentHashMap的新實現、StampedLock、LongAdder等。
  • KVO的實現原理與具體應用
    概念部分旨在剖析 KVO 這一設計模式的實現原理;應用部分通過創建的項目,以說明 KVO 技術在 iOS 開發中所帶來的作用;如果是作為剛接觸 KVO 的初學者,可以在了解第一部分的基本原理後粗略看幾遍底層實現原理,再認真閱讀第二部分的應用內容「學會」怎麼去使用 KVO,往後再慢慢深入了解 KVO 這一「黑魔法」技術的實現原理。
  • Open Clustering HashMap實現原理:ThreadLocalMap中HashMap實現原理的深度剖析
    一、前言看到標題大家都應該覺得奇怪,我們去面試被問到HashMap的實現,大家不都是說的基於數組+鍊表的方式麼。
  • iOS新浪新聞首頁卡片滾動特效實現淺談
    Leader非常中意這個特效,說要在我們app中使用,問我能不能實現,我一看這個特效,臥槽,涉及了好多技術點,實現難度很大。如果是自己做特效還好,模仿別人的特效,做的粗糙沒什麼,如果要做得好,就得考慮好多細節。身為男人,怎麼能說不行,自己給自己安排時間,偷偷搞,經過了幾天的艱苦奮戰,終於完成了,開森。
  • 資料庫事務處理原理與實例剖析
    熟悉關係型資料庫內核的原理和技術,並有較豐富的實踐經驗。喜歡琢磨資料庫內核的基本原理和算法,並樂於討論和分享。  正文  我今天的演講叫資料庫事務處理的原理和實例剖析。共分為三部分:事務處理的原理,PostgreSQL的事務處理機制剖析,和一個簡單的總結和展望。
  • 抖音裡面的變身特效怎麼玩 抖音變身特效可以實現嗎
    18183首頁 抖音裡面的變身特效怎麼玩 抖音變身特效可以實現嗎 抖音裡面的變身特效怎麼玩 抖音變身特效可以實現嗎
  • Python 中 property 的實現原理及實現
    _x = valuec = C()print(c.x)  # Tomc.x = 'Tony'print(c.x)  # Tony儘管 property 的實現是 C 實現,但仍不妨礙探究它的實現原理,本文最後也會給出它的純 Python 版本的實現。
  • 深入JVM,這本書講透了G1回收的原理和實現!
    用R大的話說,這本書非常適合用於入門——它既系統地介紹了GC的經典基礎算法(及其若干變種),又貼近現實剖析了一些實用系統中的GC實現,在抽象與具體,理論與實現之間找到了一個不錯的平衡。GC書實現篇的作者叫作中村成洋。他因為偶然的機會對GC產生濃厚興趣,本人卻說不清為何喜歡GC。被人追問原因時,總是回答「是緣分」。中村是CRuby的committer,現在仍每天致力於GC的改善。
  • 虛擬化動手實驗之高可用實現:容錯實現
    相關閱讀:  虛擬化動手實驗之高可用實現1:背景描述及解決方案   http://virtual.it168.com/a2010/0831/1097/000001097072.shtml  虛擬化動手實驗之高可用實現2:準備軟硬體環境
  • 高斯濾波器的原理和實現
    高斯模板的生成 知道模板生成的原理,實現起來也就不困難了 void generateGaussianTemplate(double window[][11], int ksize 基於OpenCV的實現 在生成高斯模板好,其簡單的實現和其他的空間濾波器沒有區別,具體代碼如下: void GaussianFilter(const Mat &src, Mat &dst, int ksize, double sigma) { CV_Assert(src.channels() || src.channels
  • KVO實現原理分析
    在開發過程中,很多時候會用到KVO鍵值觀察,它能夠很輕鬆地去監聽某對象屬性的變化,監聽一些帶狀態的控制項的狀態變化,字符串的改變等等,今天就來探討一下KVO的使用及實現原理。舉例:很多情況下我們會藉助KVO,實現對某一對象屬性的觀察。我們不禁感嘆,只有這簡簡單單的幾行代碼,就能對被觀察對象的屬性變化獲得實時通知,這麼強大的功能,底層的實現原理是什麼呢?
  • Java中的線程池實現原理
    Java中的線程池實現原理上文從自定義一個線程池Java線程池,簡單說了線程的實現原理,本文就從Java實現的線程池說說線程池的原理。線程池的實現原理首先創建一個線程池,當添加一個新的任務的時候,線程池的處理流程。
  • 在 iOS 中使用 GLSL 實現抖音特效
    本文通過模仿抖音中幾種特效的實現,來講解 GLSL 的實際應用。前言本文的靈感來自於 《當一個 Android 開發玩抖音玩瘋了之後(二)》[1]這篇文章。這位博主在 Android 平臺上,通過自己的分析,嘗試還原了抖音上的幾種視頻特效。他是通過「部分 GLSL 代碼 + 部分 Java 代碼」的方式來實現的。
  • Java 8 Lambda 的實現原理及源碼剖析
    為了支持函數式編程,Java 8引入了Lambda表達式,那麼在Java 8中到底是如何實現Lambda表達式的呢?
  • 圖解剖析四柱液壓機工作原理
    圖解剖析四柱液壓機工作原理1.四柱液壓機主缸的運動(1)快速下行快速下行時,電磁鐵IYA通電,先導閥3和主缸換向閥圖解剖析四柱液壓機工作原理(4)洩壓、快速返回保壓結束(到了預定的保壓時間)後,時間繼電器發出信號,使電磁鐵2YA通電,主缸先導閥3右位接入系統,釋壓閥9使主缸換向閥7也以右位接入系統
  • Linux的ACL權限實現原理及實現詳解
    Linux安全模塊框架(LSM)原理與代碼實現解析3. Linux的RWX權限管理實現詳解及chmod使用如果閱讀本文時發現有不清楚的地方,歡迎大家留言。作者會儘量回答大家的問題。前面我們介紹了RWX-UGO的權限控制方法,但是這種方法過於簡單,很多場景無法滿足要求。
  • 抖音上超火的酷炫特效,用這個殘影分身效果就能實現!
    抖音上很火的酷炫特效,殘影分身效果:添加一個愛剪輯的轉場特效,就能快速Get!裁剪出需要添加殘影分身效果的片段在主界面右上角的視頻預覽窗口中,將時間進度條先定位到需要分段的畫面附近,配合上下左右方向鍵進行精準定位,然後點擊主界面底部的「超級剪刀手」(快捷鍵「Ctrl+Q/K」),快速把視頻剪開。
  • 傳奇技能,第十五祭:光柱等各種特效實現與重繪物品名稱
    技能獻祭,Get 新技能:傳奇技能——應用篇,光柱特效實現跟航家學技能,用正式服帶你飛,底部有配套學習資源本篇目錄一、光柱特效的實現二、掉落物品名稱重新繪製光柱特效的實現,同上篇武器特效操作有所區別,光柱實物等特效可以通過綁定WIL資源來實現。
  • Spring事務實現原理
    但是由於不了解底層的原理,這樣的問題可能在今後的工作中往復出現。本文就為大家揭開@Transactional下的秘密。原生的事務管理在沒有Spring存在的時候,事務就已經誕生了。其實框架依賴的還是底層提供的能力,只不過它對這一過程的抽象和復用。
  • weight normalization 原理和實現
    本文作者:尹相楠https://zhuanlan.zhihu.com/p/114314389未經授權,嚴禁二次轉載除了最近很火的 spectral norm 之外,pytorch 還實現了本文介紹該模塊的原理和 pytorch 的實現細節。Weight Normalization通常的梯度下降法直接將損失函數對 weight 求導得到梯度,然後以一定學習率,沿著梯度下降的方向更新權重。而 weight normalization 將每個神經元 weight 的方向和長度解耦,即把參數 weight 分為兩部分:v 和 g,其中 v 代表方向,而 g 代表長度。