演示 | 下載
今天我們來探索一下Carl Philipe Brenner的網(wǎng)站上一個(gè)微妙而有趣的動(dòng)畫效果。當(dāng)鼠標(biāo)經(jīng)過網(wǎng)格元素時(shí),會(huì)有一個(gè)微妙的動(dòng)畫發(fā)生——網(wǎng)格元素變得透明,每條邊有個(gè)順時(shí)針的動(dòng)畫,創(chuàng)造了非常好的效果。這種效果是通過JS給span標(biāo)簽的寬或者高做了動(dòng)畫。我們待會(huì)會(huì)用SVG和CSS漸變來完成。注意,這個(gè)技術(shù)還是實(shí)驗(yàn)性的。
首先,讓我們來看看基本的概念,然后我們會(huì)朝著這個(gè)方向努力。
請(qǐng)注意,我們將在SVG上使用CSS過渡,可能無法得到所有瀏覽器的支持。
乍眼一看可能不明白這個(gè)效果是怎么完成的。我們先仔細(xì)看看上面的邊就會(huì)發(fā)現(xiàn),白色的邊的寬度不斷從右邊往左邊延伸,而一條稍微延時(shí)的邊緊跟著一起移動(dòng)。每條邊都有這樣的做法??雌饋砭拖裆厦娴倪吔?jīng)過拐角移動(dòng)到了左邊,并以此類推。
不用SVG也能完成這樣的效果,甚至只用偽元素。但是我們想探索一下怎樣用CSS而不是JavaScript來控制SVG。
現(xiàn)在,來思考一下要怎么創(chuàng)建出這樣的效果。我們可以改變矩形的troke-dashoffset或者直接畫線。我們嘗試不用JavaScript的解決方案。我們發(fā)現(xiàn),CSS過渡stroke-dashoffset 和 stroke-dasharray的值會(huì)觸發(fā)很多BUG。所以我們要嘗試不同的解決方案,利用線條和它們的動(dòng)畫,這在CSS里很容易理解和實(shí)現(xiàn)。這也給我們更多機(jī)會(huì)去探索不同的動(dòng)畫效果。
我們將要使用的線的特別之處是,它們?cè)谶@個(gè)動(dòng)畫里將有三種狀態(tài)。它們是方盒邊長(zhǎng)的三倍,其中中間一截是與邊等長(zhǎng)的間隙。我們將通過設(shè)置stroke-dashoffset的值來實(shí)現(xiàn)與方盒的邊等長(zhǎng)?,F(xiàn)在,這個(gè)動(dòng)畫實(shí)現(xiàn)的關(guān)鍵在于線的位置轉(zhuǎn)換:
SVG與方盒大小一致,就不會(huì)看到超出虛線的部分。
我們先完成第一條線:
新聞熱點(diǎn)
疑難解答
圖片精選