国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
經(jīng)驗教訓(xùn)1:80天太長了。
經(jīng)驗教訓(xùn)1A:60天仍然太長了。
經(jīng)驗教訓(xùn)2:交互式動畫很難製作,響應(yīng)式設(shè)計更難。
經(jīng)驗教訓(xùn)3:如果你想要響應(yīng)式動畫,請將所有內(nèi)容都放入(其中一個)視口單位中。
經(jīng)驗教訓(xùn)3A:對SVG元素內(nèi)部的移動使用像素單位。
經(jīng)驗教訓(xùn)4:SVG在運行時縮放效果很差。
經(jīng)驗教訓(xùn)5:坐標軸並非普遍真理。
經(jīng)驗教訓(xùn)6. 將復(fù)雜的動畫分解成同心元素以方便調(diào)整。
經(jīng)驗教訓(xùn)7:SVG和CSS變換是相同的。
經(jīng)驗教訓(xùn)8:在變換SVG的一部分時,使用transform-origin保持理智
經(jīng)驗教訓(xùn)9:精靈動畫可以是響應(yīng)式的
經(jīng)驗教訓(xùn)9A:在創(chuàng)建響應(yīng)式精靈動畫時,使用視口單位設(shè)置圖像的背景大小
經(jīng)驗教訓(xùn)10:邀請人們參與項目。
首頁 web前端 css教學(xué) 從60天用手工編碼的CSS重新動畫殭屍中汲取的經(jīng)驗教訓(xùn)

從60天用手工編碼的CSS重新動畫殭屍中汲取的經(jīng)驗教訓(xùn)

Apr 02, 2025 pm 06:20 PM

掌握60天純CSS殭屍動畫的十個經(jīng)驗教訓(xùn)

Lessons Learned from Sixty Days of Re-Animating Zombies with Hand-Coded CSS

警告:前方高能預(yù)警,大量殭屍及惡搞內(nèi)容來襲!本文將分享一些實用技巧,但示例幾乎都與殭屍和趣味笑話有關(guān)。請做好心理準備。

我將在討論中鏈接到各個動畫作品,但如果您想了解整個項目,請訪問Undead Institute查看“60天動畫”系列。該項目始於2020年6月1日,並在8月1日結(jié)束,與我撰寫的一本關(guān)於CSS動畫、幽默和殭屍的書籍出版日期相吻合——因為很明顯,如果不運用你的網(wǎng)頁技能阻止末日,殭屍就會毀滅世界。沒有什麼比動態(tài)HTML元素更能打擊殭屍群了!

我在整個項目中給自己制定了一些規(guī)則:

  1. 所有CSS代碼都需手動編寫。 (我就是一個受虐狂。)
  2. 所有動畫都由用戶觸發(fā)。 (我討厭那些已經(jīng)進行到一半的動畫。)
  3. 盡可能少用JavaScript,並且絕不用於動畫。 (我只在最終動畫中使用了一次JavaScript,那是為了啟動音頻。我並不反對JavaScript,只是這裡不需要它。)

經(jīng)驗教訓(xùn)1:80天太長了。

標題不是說“60天”嗎?是的,但我最初的目標是80天,當?shù)谝惶斓絹頃r,我只有不到20個動畫準備就緒,每個動畫的平均製作時間為3天,我驚慌失措,於是改為60天。這讓我多了20天準備時間,也減少了20個動畫作品。

經(jīng)驗教訓(xùn)1A:60天仍然太長了。

在有限的時間、創(chuàng)意和更有限的藝術(shù)技能下,要完成如此多的動畫,這確實是一項挑戰(zhàn)。雖然我曾想過縮短到30天,但我慶幸我沒有這樣做。 60天讓我突破自我,更深入地了解CSS動畫——以及CSS本身——的工作原理。我也為後期完成的許多作品感到自豪,因為我的技能有所提高,我不得不更具創(chuàng)新性,並更深入地思考如何讓作品更有趣。一旦你用盡了所有簡單的選項,真正的工作和最佳成果才會開始。 (是的,最終是62天,因為我從6月1日開始,想在8月1日完成最終動畫。從6月3日開始感覺很彆扭。)

所以,真正的經(jīng)驗教訓(xùn)1:挑戰(zhàn)自我

經(jīng)驗教訓(xùn)2:交互式動畫很難製作,響應(yīng)式設(shè)計更難。

如果你想讓某個元素飛過屏幕並與另一個元素連接,或者似乎啟動另一個元素的移動,你必須使用所有標準的、不靈活的單位或所有靈活的單位。

三個變量決定了動畫元素在任何動畫過程中的時間和位置:持續(xù)時間、速度和距離。動畫的持續(xù)時間在animation屬性中設(shè)置,不能根據(jù)屏幕大小更改。動畫時間函數(shù)決定速度;屏幕大小也不能改變這一點。因此,如果距離隨屏幕大小而變化,則除了特定屏幕寬度和高度外,時間安排都會出現(xiàn)偏差。

看看Tank!在寬屏和窄屏上運行動畫。雖然我將時間安排得很接近,但如果你進行比較,你會發(fā)現(xiàn)當最後一個殭屍倒下時,坦克相對於殭屍的位置不同。

為了避免這些時間問題,您可以使用固定單位和一個較大的數(shù)字,例如2000或5000像素或更大,以便動畫可以覆蓋除最大顯示器外的所有顯示器的寬度(或高度)。

經(jīng)驗教訓(xùn)3:如果你想要響應(yīng)式動畫,請將所有內(nèi)容都放入(其中一個)視口單位中。

對單位比例採取折中方案(例如,以像素設(shè)置寬度和高度,但以視口單位設(shè)置位置和移動)會導(dǎo)致不可預(yù)測的結(jié)果。也不要同時使用vwvh ,而應(yīng)使用其中一個;哪個是主要方向?;旌鲜褂?code>vh和vw單位會使你的動畫變得“古怪”,我相信這是專業(yè)術(shù)語。

例如,看看Superbly Zomborrific。它混合使用了像素、 vwvh單位。前提是超級殭屍向上飛,“攝像機”跟隨。超級殭屍撞到一個壁架上並掉下來,而攝像機繼續(xù)移動,但是如果你的屏幕足夠高,你就不會理解這一點。

這也意味著,如果你需要某些東西從頂部進入——就像我在Nobody Here But Us Humans中所做的那樣——你必須將vw高度設(shè)置得足夠高,以確保在大多數(shù)縱橫比下忍者殭屍不可見。

經(jīng)驗教訓(xùn)3A:對SVG元素內(nèi)部的移動使用像素單位。

也就是說,轉(zhuǎn)換SVG元素內(nèi)的元素不應(yīng)使用視口單位。 SVG標籤是它們自己的比例宇宙。 SVG“像素”將在SVG元素內(nèi)保持與其所有其他SVG元素子元素的比例,而視口單位則不會。因此,在SVG元素內(nèi)使用像素單位進行轉(zhuǎn)換,但在其他地方使用視口單位。

經(jīng)驗教訓(xùn)4:SVG在運行時縮放效果很差。

對於動畫,例如Oops…,我將殭屍的SVG圖像放大到原來的五倍,但這會使邊緣模糊。 [對“可縮放”矢量圖形揮舞拳頭。 ]

 /* 導(dǎo)致邊緣模糊的原始代碼*/
.zombie {
 transform: scale(1);
 width: 15vw;
}

.toggle-checkbox:checked ~ .zombie {
 animation: 5s ease-in-out 0s reverseshrinkydink forwards;
}

@keyframes reverseshrinkydink {
 0% {
  transform: scale(1);
 }
 100% {
  transform: scale(5);
 }
}

我學(xué)會了將它們的尺寸設(shè)置為動畫結(jié)束時將生效的最終尺寸,然後使用縮放變換將它們縮小到動畫開始時的尺寸。

 /* 修改後的代碼*/
.zombie {
 transform: scale(0.2);
 width: 75vw;
}

.toggle-checkbox:checked ~ .zombie {
 animation: 5s ease-in-out 0s reverseshrinkydink forwards;
}

@keyframes reverseshrinkydink {
 0% {
  transform: scale(0.2);
 }
 100% {
  transform: scale(1);
 }
}

簡而言之,修改後的代碼從圖像的縮小版本移動到完整的寬度和高度。瀏覽器始終以1進行渲染,從而使邊緣在1的比例下清晰銳利。因此,我沒有從1縮放至5,而是從0.2縮放至1。

經(jīng)驗教訓(xùn)5:坐標軸並非普遍真理。

元素的坐標軸與其自身保持同步,而不是頁面。在translateX之前進行90度旋轉(zhuǎn)會將translateX的方向從水平變?yōu)榇怪?。在Nobody Here But Us Humans… 2中,我使用180度旋轉(zhuǎn)翻轉(zhuǎn)了殭屍。但是正Y值會將忍者移動到頂部,負值會將它們移動到底部(與正常情況相反)。注意旋轉(zhuǎn)如何影響後續(xù)的變換。

經(jīng)驗教訓(xùn)6. 將復(fù)雜的動畫分解成同心元素以方便調(diào)整。

在創(chuàng)建多方向移動的複雜動畫時,添加包裝div或父元素,並分別為每個元素設(shè)置動畫,可以減少變換衝突,並防止你崩潰。

例如,在Space Cadet中,我有三個不同的變換。第一個是宇航員殭屍的上下運動。第二個是橫向移動。第三個是旋轉(zhuǎn)。我沒有嘗試在一個變換中完成所有操作,而是添加了兩個包裝元素,並在每個元素上進行了一個動畫(我還保住了我的頭髮……至少一部分)。這有助於避免上一課中討論的坐標軸問題,因為我在最內(nèi)層的元素上進行了旋轉(zhuǎn),從而保留了其父元素和祖父母元素的坐標軸。

經(jīng)驗教訓(xùn)7:SVG和CSS變換是相同的。

某些路徑、組和其他SVG元素在其上已經(jīng)定義了變換。這可能是由優(yōu)化算法造成的,或者可能只是插圖軟件生成代碼的方式。如果SVG中的路徑、組或任何其他元素已經(jīng)具有SVG變換,則刪除該變換將重置元素,通常與其餘繪圖相比,其位置或大小會發(fā)生奇異變化。

由於SVG和CSS變換是相同的,因此你所做的任何CSS變換都會替換SVG變換,這意味著你的CSS變換將從該奇異位置或大小開始,而不是SVG中設(shè)置的位置或大小。

您可以將變換從SVG元素複製到CSS,並將其設(shè)置為CSS中的起始位置(首先將其更新為CSS語法)。然後,您可以在CSS動畫中對其進行修改。

例如,在我的《上班族》致敬作品Uhhh, Yeah…中,不死倫伯格的右上臂(#arm2元素)在原始SVG代碼中有一個變換。

<path d="M0 171h9v9H0z" fill="#91c1a3" fill-rule="nonzero" transform="translate(0 -343) scale(4 3.55)"></path>

將該變換移動到CSS中,如下所示:

<path d="M0 171h9v9H0z" fill="#91c1a3" fill-rule="nonzero"></path>
 #arm2 {
 transform: translate(0, -343px) scale(4, 3.55);
}

……然後,我可以創(chuàng)建一個不會意外重置位置和比例的動畫:

 .toggle-checkbox:checked ~ .z #arm2 {?
 animation: 6s ease-in-out 0.15s arm2move forwards;
}

@keyframes arm2move {
 0%, 100% {
  transform: translate(0, -343px) scale(4, 3.55);
 }
 40%, 60% {
  transform: translate(0, -403px) scale(4, 3.55);
 }
 50% {
  transform: translate(0, -408px) scale(4, 3.55);
 }
}

當生成SVG代碼的工具嘗試將變換“簡化”為矩陣時,此過程會更加困難。雖然您可以通過將其複製到CSS來重新創(chuàng)建矩陣變換,但要以你想要的方式精確地進行縮放、旋轉(zhuǎn)或平移是一項艱鉅的任務(wù)。

或者,您可以使用平移、旋轉(zhuǎn)和縮放來重新創(chuàng)建矩陣變換,但是如果路徑很複雜,那麼你能夠及時地重新創(chuàng)建它而不讓自己陷入困境的可能性很低。

最後也是最簡單的選擇是用一個組( )標籤包裝元素。為其添加一個類或ID以便於CSS訪問,並轉(zhuǎn)換組本身,從而分離變換,就像上一課中討論的那樣。

經(jīng)驗教訓(xùn)8:在變換SVG的一部分時,使用transform-origin保持理智

CSS transform-origin屬性移動變換發(fā)生的點。如果你試圖旋轉(zhuǎn)手臂——就像我在Clubbin' It中所做的那樣——如果你從肩膀中心旋轉(zhuǎn)手臂,你的動畫看起來會更自然,但是該路徑的自然變換原點在左上角。使用transform-origin來修復(fù)此問題,以獲得更流暢、更自然的感覺……你知道那種非常自然的像素藝術(shù)外觀……

在縮放時,變換原點也很有用,就像我在Mustachioed Oops中所做的那樣,或者在旋轉(zhuǎn)嘴部運動時,例如Super Tasty中的恐龍的下巴。如果你不更改原點,變換將使用SVG元素左上角的原點。

經(jīng)驗教訓(xùn)9:精靈動畫可以是響應(yīng)式的

我最終為這個項目做了很多精靈動畫(即,你使用多個增量幀並在它們之間快速切換,以使角色看起來在移動)。我在一個寬文件中創(chuàng)建了圖像,將它們添加為背景圖像到單個幀大小的元素,使用background-size將背景圖像設(shè)置為圖像的寬度,並隱藏溢出。然後,我使用background-position和動畫時間函數(shù)step()來遍歷圖像;例如:Post-Apocalyptic Celebrations。

在項目之前,我一直使用不靈活的圖像。我會稍微縮小一下比例,這樣至少會有一些響應(yīng)式效果,但我認為你無法使其成為完全靈活的寬度。但是,如果你使用SVG作為背景圖像,那麼你可以使用視口單位來隨著屏幕大小的變化來縮放元素。唯一的問題是背景位置。但是,如果你為此使用視口單位,它將保持同步。在Finally, Alone with my Sandwich…中查看這一點。

經(jīng)驗教訓(xùn)9A:在創(chuàng)建響應(yīng)式精靈動畫時,使用視口單位設(shè)置圖像的背景大小

正如我在這個項目中學(xué)到的那樣,使用單一類型的單位幾乎總是可行的。最初,我使用百分比來設(shè)置精靈的背景大小。計算很簡單(100% *(步數(shù)1)),並且在大多數(shù)情況下都能正常工作。但是,在較長的動畫中,精確的幀跟蹤可能會出錯,並且可能會顯示錯誤的精靈幀的部分內(nèi)容。隨著向精靈添加更多幀,問題會越來越嚴重。

我不確定這究竟是為什麼導(dǎo)致問題的原因,但我認為這是由於在精靈表長度上累積的捨入誤差造成的(位移量隨著幀數(shù)的增加而增加)。

在我的最終動畫It Ain't Over Till the Zombie Sings中,我讓一隻恐龍張開嘴,露出一個正在唱歌的殭屍維京人(同時背景中還有激光發(fā)射,當然還有跳舞、手風(fēng)琴演奏和從大砲中發(fā)射的殭屍)。是的,我知道如何舉辦派對……一個極客派對。

恐龍和維京人是為該項目製作的最長的精靈動畫之一。但是,當我使用百分比來設(shè)置背景大小時,Safari中某些大小的跟蹤會出錯。在動畫結(jié)束時,來自不同幀的恐龍鼻子的一部分似乎會出現(xiàn)在右側(cè),而左側(cè)則會缺少類似的鼻子部分。

這非常難以診斷,因為它在Chrome中似乎工作正常,而且我認為我在Safari中修復(fù)了它,只是查看稍微不同的屏幕大小,就會再次看到幀偏離。但是,如果我使用一致的單位——即vw用於background-size 、幀寬度和background-position ——一切都會正常工作。同樣,這歸結(jié)於使用一致的單位!

經(jīng)驗教訓(xùn)10:邀請人們參與項目。

雖然我在這個過程中學(xué)到了很多東西,但我大部分時間都在撞牆(經(jīng)常是直到牆破了或者我的頭破了……我分不清了)。雖然這是一種方法,但即使你很固執(zhí),你最終還是會頭痛。邀請其他人參與你的項目,無論是尋求建議、指出你錯過的明顯盲點、提供反饋、幫助完成項目,還是在你感到範圍過大時鼓勵你繼續(xù)堅持下去。

因此,讓我將此經(jīng)驗教訓(xùn)付諸實踐。你的想法是什麼?你將如何用CSS動畫阻止殭屍群?你將承擔(dān)什麼範圍過大的項目來挑戰(zhàn)自己?

以上是從60天用手工編碼的CSS重新動畫殭屍中汲取的經(jīng)驗教訓(xùn)的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何僅在某些頁面上包括CSS? 如何僅在某些頁面上包括CSS? Jun 11, 2025 am 12:01 AM

選擇性包含CSS在特定頁面上的方法有三種:1.內(nèi)聯(lián)CSS,適用於不常訪問或需要獨特樣式的頁面;2.使用JavaScript條件加載外部CSS文件,適合需要靈活性的情況;3.服務(wù)器端包含,適用於使用服務(wù)器端語言的場景。這種方法可以優(yōu)化網(wǎng)站性能和可維護性,但需平衡模塊化與性能。

Flexbox與網(wǎng)格:了解CSS佈局的關(guān)鍵差異 Flexbox與網(wǎng)格:了解CSS佈局的關(guān)鍵差異 Jun 10, 2025 am 12:03 AM

flexboxisidealforone-dimensionAllayouts,while gridsuitStwo,complex layouts.useflexboxforaligningItemsinasingLeaxisAndGridForRidForPreciseconcontroloverroverroverroverroverroverroverrowsandsininintricatientricatedesigns。

使用HTML彈出案創(chuàng)建自動關(guān)閉通知 使用HTML彈出案創(chuàng)建自動關(guān)閉通知 Jun 10, 2025 am 09:45 AM

HTML彈出屬性將元素轉(zhuǎn)換為頂層元素,可以使用按鈕或JavaScript打開和關(guān)閉??梢詫棾霭格g回多種方式,但是沒有選擇自動關(guān)閉它們。 preethi有一種技術(shù),你可以

什麼是'渲染障礙CSS”? 什麼是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會阻塞頁面渲染是因為瀏覽器默認將內(nèi)聯(lián)和外部CSS視為關(guān)鍵資源,尤其是使用引入的樣式表、頭部大量內(nèi)聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。 1.提取關(guān)鍵CSS並內(nèi)嵌至HTML;2.延遲加載非關(guān)鍵CSS通過JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合併CSS減少請求。建議使用工具提取關(guān)鍵CSS,結(jié)合rel="preload"異步加載,合理使用media延遲加載,避免過度拆分與復(fù)雜腳本控制。

如何在無花果中使用Lotties 如何在無花果中使用Lotties Jun 14, 2025 am 10:17 AM

在接下來的教程中,我將向您展示如何在無花果中創(chuàng)建Lottie動畫。我們將使用兩種彩色設(shè)計來超越如何在無花果上進行動畫,然後向您展示如何從Figma到Lottie動畫。您只需要免費無花果

打破邊界:用(s)CSS構(gòu)建湯姆拼圖 打破邊界:用(s)CSS構(gòu)建湯姆拼圖 Jun 13, 2025 am 11:33 AM

我們對其進行了測試,事實證明,至少在低級邏輯和拼圖行為時,Sass可以替換JavaScript。除了地圖,混音,功能和大量數(shù)學(xué)外,我們都設(shè)法使我們的Tangram難題栩栩如生,沒有J

外部與內(nèi)部CSS:最好的方法是什麼? 外部與內(nèi)部CSS:最好的方法是什麼? Jun 20, 2025 am 12:45 AM

thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

我的CSS必須在較低的情況下嗎? 我的CSS必須在較低的情況下嗎? Jun 19, 2025 am 12:29 AM

否,CSSDOESNOTHAVETOBEINLOWERCASE.CHOMENDENS,使用flowercaseisrecommondendendending:1)一致性和可讀性,2)避免使用促進性技術(shù),3)潛在的Performent FormanceBenefits,以及4)RightCollaboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraborationWithInteams。

See all articles