純HTML+CSS寫出一顆會飄動的樹,有沒有驚艷到你呢?


前言

使用HTML+CSS能寫出什么驚人的效果呢?

針對這個問題,我總會看到類似的回答,比如沒有JS,前端永遠都是靜態的;HTML5要搭配JS,要不然一文不值。

JS固然強大,但CSS也並非一文不值,這里我就要為CSS3鳴不平了,說出上面那些回答的人可能真的不了解CSS的強大之處。

今天這篇文章我們就一起來看看使用純HTML+CSS如何寫出一棵會飄動的樹吧,看看你有沒有被驚艷到。

文章末尾附有Github源碼地址。

CSS

會飄動的樹-原型

首先我們來看看這棵樹的原型圖吧。

原型圖

然后我們再去一步步分析下這個圖是如何實現的吧。

原理分析

整棵樹的HTML部分實際是由一系列的DIV構成,每個父DIV內部包含兩個子DIV,代表左右分叉的樹枝,然后一層層往下,形成類似二叉樹的結構。

通過CSS的scale屬性,給每個子DIV元素縮小寬高比例,實際看起來就是樹枝越往外層越細的效果。

最后給左右兩側的樹枝不同的動畫效果,就可以看出整棵樹在跳動的效果了。

圖形拆分

將整個圖形進行拆分,一整顆大樹實際上是由很多的樹枝組成,我們先來看看單根樹枝是如何實現的。

拆分后的圖形效果是這樣的。

拆分后

只要我們將這一根樹枝的實現原理弄懂了,就可以很容易的知道整棵樹是如何實現的了。

HTML代碼

HTML部分的代碼實際都是由一系列的DIV構成。

每一層DIV下面有兩個子DIV,這里因為只展示了一根樹枝,所以看到的父DIV只有一個子DIV。

HTML代碼

CSS代碼

CSS部分的代碼是整棵樹實現的核心。

  • 最外層樹根DIV基本屬性

外層DIV也是樹根,它的基本屬性很重要。包含寬度和高度,定位信息,設置動畫。

基本CSS屬性

我們定義的樹根DIV其實是水平狀態的,所以需要再額外加上一個動畫讓樹根DIV旋轉成垂直狀態。

樹根DIV

  • 左右樹枝DIV

每個div下面的第一個子div,表示的是樹枝的右側分支,通過上面基本CSS屬性已經設置了一個rot動畫

第二個子div,表示的是樹枝的左側分支,需要設置另外一個動畫rot-inv。

左側分支

  • 樹根動畫rot-root

樹根動畫主要是設置旋轉角度,將水平的div,旋轉為垂直方向的div,增加了正負5度的偏差,就會有樹根左右搖動的效果。

樹根動畫

  • 左側樹枝動畫

左側樹枝的動畫效果包括逆時針旋轉一定的角度,同時會通過scale屬性縮小寬高,表現出樹枝越來越細的效果。

左側樹枝動畫

  • 右側樹枝動畫

右側樹枝動畫效果包括順時針旋轉一定的角度,同時通過scale屬性縮小寬高,表現出樹枝越來越細的效果。

右側樹枝動畫

這個項目到這里就算是做完了,想要完整代碼自己學習練手的小伙伴進我的群自助領取,已經上傳到學習群里了:640633433,歡迎初學和進階中的小伙伴。

至此,所有部分的代碼就講解完畢了。如果運行完成后,就可以得到文章一開始‘搖動的樹’的效果了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM