1. 程式人生 > >純HTML+CSS寫出一顆會飄動的樹,有沒有驚豔到你呢?

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

本文轉載於:猿2048網站純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,歡迎初學和進階中的小夥伴。

至此,所有部分的程式碼就講解完畢了。如果執行完成後,就可以得到文章一開始‘搖動的