整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          實用!css3實現模糊視覺差動畫效果

          般在看一些游戲網站的時候,會發現他們的網頁效果特別炫酷,一般都帶著視覺差的動畫效果,今天我就用css3兼并js的一些知識來做一個模糊的視覺差動畫效果

          先看看效果,如下:

          其中,圖片上面的文字會定時模糊閃動,有gif的既視感

          下面來看看實現的代碼:
          文字層自己另存為一張帶透明背景的圖片,然后背景圖又是一張圖片!實現起來才方便!

          html代碼如下:

          css:

          js:

          圖片文件:

          源:眾成翻譯 譯者:betsey

          游戲的靈感

          在使用過一段時間的SVG動畫之后,我相當清楚如何利用它來制作動畫片段或者網頁布局。一些動畫庫平臺,例如Greensock,和原生的CSS動畫簡直是絕配。于是我便打算深入地研究一下,看看我能否用這些來制作一款簡單的游戲。就像一個精美的工藝品一樣,好的游戲擁有許多細致的動畫細節。有一天夜里,我的腦海中突然閃現了一個游戲的靈感,我馬上起來,畫了一些草圖,之后給我的哥哥看--他是一個專業的網頁設計師。我們立即開始著手設計,討論了所有的細節動畫后(試著畫出來并且配以音效),我便開始進行游戲開發。

          如何玩: 來回彈跳的球是可以改變顏色的。你必須隨時觀察球當前的顏色,并且在球和柱子相接觸的一瞬間,確保兩者的顏色是一樣的。點擊柱子可以改變它的顏色,單擊變紅,雙擊變黃,三擊則變為紫色。

          這里是游戲的完整版: http://codepen.io/gregh/full/yVLOyO

          創作的過程

          在開發這款游戲的過程中,我不斷地遇到問題并重構代碼。其中的一個最主要的問題就是,如何能讓游戲在所有的設備和所有尺寸的顯示器上都看起來不錯。我使用我的Macbook Pro 開發,游戲的畫面很棒。但是當到了 27" iMac screen 上時,整個畫面就看起來特別小,當然在iPhone又會顯得特別大。我真心地希望可以有一把適配所有設備的“萬能鑰匙”。經過了許多次的嘗試之后,我清楚地意識到,傳統的使用媒體查詢的技術來做響應式設計是行不通的。

          這篇文章并不是一個教程,因此我將不會逐行的解釋我的代碼。但是,我會展示給你一些十分酷的東西,你可以通過在CodePen上或者是在瀏覽器的調試工具里面修改參數進行測試。同樣,我也會在相應的地方寫出一些參考資料。在CodePen上,我盡可能多的寫出代碼注釋,趕快去看看代碼吧!

          十分強大的GSAP讓我理所當然地選擇了它,而我選擇在CodePen上面寫碼的原因是它內置了一個Babel編譯器,這樣我就可以在上面書寫ES6的語法,你不知道Class和箭頭函數有多好用! 關于ES6的特性介紹,你可以點擊這里: https://github.com/DrkSephy/es6-cheatsheet

          使用GreenSock制作動畫

          我下面假設你熟悉GSAP用法,但如果你不熟悉的話,你可以看下這個“討厭番茄”的人的關于GSAP的教程。https://ihatetomatoes.net/get-greensock-101/

          背景動畫

          幾乎所有你能在背景上看到的東西都是用SVG制作的。每個波浪是一個獨立的<div>,每一層的山峰也是一個<div>,甚至云也是<div>。當你在制作一個復雜的動畫時,有一點是需要注意的。你完全可以使用一整個SVG當做背景,然后為這個SVG的子元素和路徑來制作動畫。Greensock允許我們這樣做,你需要做的僅僅是為這些SVG的元素(比如說path,group等等)分配一些ID,然后用過ID選擇到他們。但這樣做的問題在于,在移動設備上,這些動畫跑不動。所以你最好是把這些背景元素放在獨立的<div>里面,然后為這些<div>添加動畫,我實際上就是使用這些SVG的作為背景。

          通過類似于上面的代碼,我們就得到了一些簡單的補間動畫。這些動畫可以將背景水平地移動54個像素(也就是背景的寬度),在這里我們想要背景勻速地移動,所以我們不需要緩動動畫。當我們為每個背景設置不同的移動速度的時候,他們就有表現出了視覺差的效果,看上去很酷吧!

          看到畫面上漂浮著一些白色的小圓點了沒?我創造了這些圓點并為他們設置了隨機的位置和尺寸,接著我讓他們做圓周運動。

          這樣他們就緩慢地進行圓周運動,但看上去卻像隨機運動一樣。

          柱子動畫

          每一個柱子里都有一些會動的小元素,這些小元素僅僅是由HTML和CSS制作出來的。使用SASS可以節省很多時間和代碼量(通常情況下是這樣的)。我通過創建形狀的mixins來為這些柱子里面的小東西添加效果。如果我們看下bublble這個效果的代碼,我們就會發現每個圓圈都使用了絕對定位并使用到了這個mixin。在CSS中創造三角形需要很多的代碼,所以mixin就派上了大用場。

          讓我們看看紅色的柱子,柱子里面包含著很多的氣泡:

          所以現在,如果想要在柱子里面創造一些氣泡的話,我只需要調用這些mixin,設置氣泡的大小,然后讓把他們放在柱子的特定的位置上就好了:

          當你需要通過邊框來制作一些小的三角形的時候,你需要用大概20行的css代碼來生成,所以使用mixin實在是太有必要了。

          氣泡的動畫

          我使用交錯動畫來做這個效果。這個動畫可以操控柱子里面所有的氣泡元素,并且可以讓每個氣泡有一個小小的延時,讓他們不會同時開始運動。點擊這個鏈接,你可以了解更多的關于交錯動畫的知識:http://greensock.com/docs/#/HTML5/GSAP/TweenMax/staggerFrom/

          三角形的動畫

          在黃色的柱子里面,我使用到了旋轉的效果。但是你可能注意到,有些旋轉是圍繞著X軸的,有些是圍繞著Y軸進行運動的。我們在這里使用到了 cycle屬性。

          方塊的動畫

          在制作方塊的動畫的時候,我們也使用到了相同的技術。因此,有一半的方塊是從左向右移動的,而另外一般則做反方向的運動。

          分數的動畫

          讓我們點擊重新開始,再看下這個動畫吧.

          我想要分數的動畫有一種“Q彈”的感覺,于是我就寫了幾行代碼來形成這個效果。

          為了做出這種“觸電”(或者說是“Q彈”)的效果,我們需要制作正確的緩動動畫。如果你想要看看你可以使用什么樣的緩動方程,看下 Greensock 緩動觀察器:http://greensock.com/ease-visualizer 選擇 Elastic 并調整配置參數,你就可以實時地看運動效果。

          彈性盒子

          這款游戲的第一個創新性就是使用了“彈性盒子”,如果要是不了解彈性盒子的話,你可以閱讀下這篇優秀的文章: https://css-tricks.com/snippets/css/a-guide-to-flexbox/ 或者看下 Laracasts上的相關系列。一旦你開始使用了彈性盒子,你就再也離不開它。下面我們看下我的的主菜單界面和游戲界面吧。

          開始游戲的容器CSS樣式如下:


          “flex-direction: column”表示在容器內部彈性元素的排列方向。 設置為Column,則元素從上到下依次排列。而默認的(row)則將元素從左到右排列。彈性盒子可以這只空白區域,我們可以設定我們是在元素的前面、后面或者周圍放置這些空白區域。動手試下,感受下彈性盒子是多么好玩吧!因為我們設置成了“space-between”,所以 Top 被放在了頂部, How to Play被放在了底部,而Logo Holder則放在了中間,空白區域被填充在了這些元素之間。 Align-items: center, 定于交叉軸(這個游戲中代表水平軸)上元素的對齊方式,center表示居中對齊。其中 How to Play也是一個彈性盒子,它的代碼如下:


          它也是一個flex元素,我們如果去設定他的flex-direction, 它將使用默認值(row),將其中的三個彈性元素水平的排列。第一個和第三個元素的“flex”參數為1,因此他們將占據所有的空白空間,flex是一個相當高端的特性。同樣的,你也可以通過在How to Play上設置 justify-content: space-around來達到同樣的目的.我使用flex: 1 的原因是,我想讓中間的一列排在屏幕的最中央。

          下面我們看下游戲界面。這個界面也是一個彈性布局。界面有一個柱子容器和一個球的容器。我不想讓球是絕對定位的,因為我通過css讓球剛好坐在柱子上,這樣即使我改變柱子的高度,我也不需要改動其他代碼就可以讓球恰好落到柱子上。因此我將容器的flex-direction設置為 column,正如我所愿,球容器剛好緊挨著柱子的頂部。justify-content: space-between讓球的容器永遠靠著屏幕的頂部,而柱子容器永遠靠著屏幕的底部。 現在我們給球的容器如下的樣式:


          球的容器也是彈性布局,我們將flex方向設為column(這樣Y軸成為了主軸,元素從上到下排列)。之后我們通過 justify-content: flex-end將球推到了容器的底部,因此,我們便得到了兩個緊密排列的容器,并且第一個容器的內部元素被推到了該容器的最下面,這樣我們便做到了讓球坐在了柱子上的效果。

          試想下,如果我們不使用彈性布局會怎么做?我們也許會使用到floats, width: 33.33333% ,position: absolute 和 bottom: 0,我的天啊! Flexbox讓整個界面變得如此整潔有條理,寫碼簡直爽翻了.

          讓游戲界面可縮放

          做這個游戲,最重要的事情是讓畫面變得可縮放。看下這款游戲在不同尺寸的屏幕上達到了完美的效果!如同我說的,我僅僅是使用了 CSS transform, 這樣做具有它獨特的挑戰性。假如游戲的默認大小是 1200x800px.嗎,如果你的屏幕大小和這個不一樣的話,你需要通過調節系數讓游戲的容器變得大一些或者小一些,也就是做個計算"screenHeight/800\".當然,如果設備的高度大于寬度的時候(當我們的平板或者手機處于垂直模式的時候)我們也需要相應地縮放我們的屏幕,下面是計算縮放比例的代碼 :

          顯然僅僅是這樣做不能讓視覺體驗變得完美,所以我們需要在縮小我們的游戲界面的同時讓它垂直水平居中。

          因此,我們需要讓整個游戲的容器以相同的尺寸放大,這樣當縮放界面的時候,容器可以100%的占據屏幕的尺寸。如果我們將界面縮小到原始尺寸的一半的時候,我們需要讓它的容器放大到原來的兩倍大小,這樣容器便可以充滿整個屏幕。相反如果屏幕很大的時候,我們需要將界面變為原來的1.2倍,那么容器將相應的從原始尺寸縮小到 screenSize/1.2


          后記

          我希望你能喜歡這個游戲和我寫的這篇文章,我也希望通過這篇文章,你可以收獲一些新的東西并作出十分精彩的作品

          我將持續不斷地完善我的游戲,并相應地更新文章,增加新的玩法或者嘗試些新的技術哦!

          本文由眾成翻譯(zcfy.cc)的譯者翻譯完成,搶先閱讀更多優質英文技術文章,歡迎訪問眾成翻譯。

          之前我的一篇全屏滾動庫fullPage.js,今天我們再來一發有點相似,卻很特別的視覺效果滾屏庫:skrollr.js。

          那么什么是skrollr呢?

          它是一個支持移動端(Android,IOS)和PC端,通過視覺角度差(純CSS和HTML)來達到炫酷滾屏效果的js庫,他不依賴jQuery,是原生js書寫的庫喲。

          那么skrollr的兼容情況如何?

          首先是支持IE9以上瀏覽器的(IE9以下的有兼容包skrollr-ie),其他現代瀏覽器都是支持的(Chrome,Firefox、Safari、UC)。 移動端webkit內核的都是支持的。

          那么如何使用它呢?

          通過上圖,我們從引入skrollr.min.js到創建HTML動畫配置,就可以完成一個簡單的滾屏視覺效果了。

          那么一個完整的skrollr效果是什么樣子?

          通過LICEcap來錄屏為GIF圖

          上圖有點大(1M),建議WiFi下預覽喲。通過上圖,看著是不是挺有感覺的,對了,除了可以使用CSS3動畫的,還可以SVG等,盡可能的讓你發揮自己的創造力。

          那么我們如何獲取它呢?

          同樣的,你可以到github上搜索skrollr,詳細的配置說明都有的。

          親們可以收藏一下,以便今后工作中可以用到。

          圖片來自網絡,版權歸原作者所有


          主站蜘蛛池模板: 东京热无码av一区二区| 人妻无码一区二区视频| 亚洲一区二区三区免费在线观看| 2020天堂中文字幕一区在线观| 波多野结衣中文一区二区免费| 日韩精品在线一区二区| 日韩AV无码一区二区三区不卡毛片| 无码少妇一区二区三区芒果| 亚洲AV香蕉一区区二区三区| 亚洲一区二区三区在线网站| 蜜桃无码AV一区二区| 无码丰满熟妇浪潮一区二区AV| 国产一区二区在线观看| 亚洲中文字幕乱码一区| 2018高清国产一区二区三区| 亚洲中文字幕一区精品自拍| 国产吧一区在线视频| 国产一区二区草草影院| 国产情侣一区二区| 国产成人片视频一区二区| 亚洲一区视频在线播放| 亚洲av午夜福利精品一区人妖| 国产伦精品一区二区三区| 国产高清一区二区三区| 丰满爆乳无码一区二区三区| 波多野结衣一区二区三区高清av| 国产精品无圣光一区二区| 国产一区二区三精品久久久无广告 | 福利一区国产原创多挂探花| 亚洲一区二区三区夜色| 久久精品国产一区二区| 一区二区三区在线观看免费| 合区精品久久久中文字幕一区| 日本精品3d动漫一区二区| 精品国产一区二区三区香蕉| 亚洲一区二区三区亚瑟| 色窝窝免费一区二区三区| 视频在线观看一区二区三区| 国产福利酱国产一区二区| 亚洲日本中文字幕一区二区三区 | 无码人妻一区二区三区免费|