整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          用HTML寫出綻放的煙花

          下是一個使用HTML和CSS實現(xiàn)綻放的煙花的示例代碼:

          ```html

          <!DOCTYPE html>

          <html>

          <head>

          <title>綻放的煙花</title>

          <style>

          .firework {

          position: relative;

          width: 100px;

          height: 100px;

          background-color: #ff0000;

          border-radius: 50%;

          animation: explode 1s ease-in-out infinite;

          }

          @keyframes explode {

          0% {

          transform: scale(1);

          opacity: 1;

          }

          50% {

          transform: scale(1.5);

          opacity: 0.5;

          }

          100% {

          transform: scale(1);

          opacity: 1;

          }

          }

          </style>

          </head>

          <body>

          <div class="firework"></div>

          </body>

          </html>

          ```

          這段代碼創(chuàng)建了一個`div`元素,并將其樣式設(shè)置為一個圓形的紅色煙花。使用CSS的動畫效果,通過`@keyframes`定義了一個名為`explode`的動畫,使煙花在1秒鐘內(nèi)以縮放的方式產(chǎn)生綻放效果。動畫會無限循環(huán)播放,直到頁面關(guān)閉。

          你可以將上述代碼保存為一個HTML文件,并在瀏覽器中打開,就能看到綻放的煙花效果了。希望你喜歡!

          查 郭一璞 發(fā)自 凹非寺
          量子位 報道 | 公眾號 QbitAI

          HTML不是編程語言,但這并不妨礙精通它的大佬玩出花來。

          普通的前端,用HTML+CSS制作網(wǎng)頁,元素簡單,工具豐富。

          大佬級前端,用HTML+CSS繪畫,全程不用PS、AI這種圖形化的圖片編輯器,單純敲一行行代碼純手工繪制。

          把代碼轉(zhuǎn)換之后,就變成了鮮嫩的水果:

          或者畫出洛可可風(fēng)格的古典女性肖像:

          還有弗拉芒巴洛克肖像風(fēng)格的人物畫像,充滿了中世紀(jì)的禁欲感:

          現(xiàn)代的也有,比如這位在粉色燈光下的著禮服的妹子:

          以及充滿者50年代氣息的復(fù)古風(fēng)人物海報:

          曲線、光影、漸變,每個元素都相當(dāng)復(fù)雜。

          而且,創(chuàng)作過程中不用SVG,只用Atom文本編輯器和Chrome開發(fā)者工具。

          也就是說,畫面上的每一條曲線和漸變、每一處高光和陰影、每一根頭發(fā)和睫毛、每一片蕾絲和褶皺,都是一行行代碼從頭敲出來的!

          如此精細(xì)程度和創(chuàng)造力,讓學(xué)美術(shù)的網(wǎng)友感嘆“學(xué)畫畫不如寫代碼”,讓學(xué)計算機(jī)的同學(xué)覺得“別人寫的這么藝術(shù),一定是我的教科書打開方式不對”。

          真·交叉學(xué)科大佬。

          它們的作者,是灣區(qū)前端大神Diana Smith小姐姐,她目前是企業(yè)及軟件開發(fā)商Atlassian的一名資深Web開發(fā)。

          繪制過程

          Diana在專門討論CSS的網(wǎng)站CSS-Tricks寫下了詳細(xì)的教程。

          畫出這樣一個圖形分成幾步?

          如果不用CSS,一般都是直接嵌入這個特殊的圖形。

          如果用CSS,那么就從黑色矩形開始,然后在兩側(cè)加上上兩個

          與白色背景顏色匹配的邊框半徑元素。



          先畫出一個黑色矩形,然后兩邊用圓弧遮擋。有了基礎(chǔ)形狀后,下一步就是給它添上漸變的背景。但是如果用矩形方式填充,得到的效果就是這樣的:

          Diana的辦法是:在保留矩形的同時,加上兩個彎曲的div,把凹進(jìn)去的部分也填充上。

          最后完整的代碼是這樣的:

          div{
            width: 500px;
            height: 350px;
            background: #000;
            position: relative;
          
            &::after, &::before{
              width: 20%;
              height: 100%;    
              position: absolute;
              top: 0;
              z-index:2;
              content: "";    
          
              background: #1e5799; 
          background: -moz-linear-gradient(top, #1e5799 0%, #7db9e8 100%); 
          background: -webkit-linear-gradient(top, #1e5799 0%,#7db9e8 100%);
          background: linear-gradient(to bottom, #1e5799 0%,#7db9e8 100%); 
          filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 ); 
            }
          
            &::after{
              border-radius: 100% 0% 0% 100%;   
              right: 0;
            }
          
            &::before{
              border-radius: 0 100% 100% 0;   
              left: 0;
            }   
          }
          
          body{
            background: #1e5799; 
          background: -moz-linear-gradient(top, #1e5799 0%, #7db9e8 100%); 
          background: -webkit-linear-gradient(top, #1e5799 0%,#7db9e8 100%); 
          background: linear-gradient(to bottom, #1e5799 0%,#7db9e8 100%); 
          filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 ); 
          }

          你也可以去這個完成查看CSS樣式的實際運(yùn)行效果:

          https://codepen.io/jean-jordan/pen/KeKaBw

          剛剛我們畫的那幅畫像不像人的脖子?好的,我們再回到人像畫上,Diana繪制人物的脖子也是類似的過程。

          在上面這張圖里,我們看到了Diana如何逐步改形狀,最終得到了油畫中人物的脖子。

          但是僅僅會畫各種幾何形狀,是無法生成藝術(shù)品的,Diana總結(jié)了她在繪圖中的5個重要CSS屬性。

          1、邊界半徑(border-radius)

          邊界半徑是為了讓矩形的邊角過渡得更自然,對于大多數(shù)網(wǎng)頁開發(fā)者來說,只需一個參數(shù)border-radius,可以設(shè)定不同的半徑數(shù)值。

          border-radius: 15px 10px 40px 30px / 40px 10px 15px 30px;

          2、盒子陰影(box-shadow)

          對多個盒子陰影進(jìn)行分層是增加深度的最佳方法之一。框陰影將粘附到html容器的邊緣,也會沿著邊界半徑定義的邊緣。

          box-shadow: 6px -11px 20px 1px red, -15px -15px 5px -10px blue, inset 5px 5px 35px 10px green;

          開發(fā)者可以指定模糊半徑,以及陰影是向內(nèi)延伸還是向外延伸。

          3、變形(transform)

          變形的主要方式有:旋轉(zhuǎn)(rotate)、縮放(scale)和傾斜(skew)

          transform: rotate(-45deg)
          transform: scale(0.7, 1.3)
          transform: skew(25deg, 30deg);

          此外還有透視,讓物體產(chǎn)生遠(yuǎn)小近大的視覺效果,或者是僅僅為畫出一個梯形。

          transform: perspective(10px) rotateY(5deg);

          4、線性梯度(linear-gradient)和徑向梯度(radial-gradient)

          線性梯度用于定義一個方向上的漸變效果,徑向梯度用于定義圓和橢圓形的漸變效果

          background-image: linear-gradient(0deg, blue, transparent 60%),
          radial-gradient(circle at 70% 30%, purple, transparent 40%);

          5、層疊(overflow)

          層疊是一種將大量雜亂元素填充到一個整齊的包中的方法,可以創(chuàng)建一些有趣的形狀。在變形那部分的基礎(chǔ)上使用hidden參數(shù),可以把邊緣遮蓋起來。

          overflow: hidden;

          以上5種元素缺一不可,隨便少一種都會產(chǎn)生怪異的效果。

          從左至右分別是缺少邊界半徑、陰影、變形、梯度、層疊的效果(點擊查看大圖)

          不過即使這樣,也很有抽象藝術(shù)的美感,仿佛在看畢加索的作品。

          只適用于Chrome

          不過,由于這是一個純個人藝術(shù)創(chuàng)作,Diana小姐姐并不關(guān)心瀏覽器適配性。

          因此,這些代碼在Chrome里可以完美展現(xiàn),但如果用其他瀏覽器打開,可能就會出現(xiàn)不一樣的效果。

          比如,MAC上的Safari瀏覽器打開,妹子的眼睛就方了:

          肩膀上的高光,變成了一個大圈圈:

          胸前的禮服上,也被潑了一道墨:

          如果用早期的Chrome打開,會出現(xiàn)驚悚的頭身分離的效果:

          早期的Opera瀏覽器,打開之后臉方了:

          Windows 7上從IE 6到IE 11,顯示出來的都是這個鬼樣子:

          濃重的線條,甚至有點抽象藝術(shù)的感覺。

          同樣是早期IE,放到Mac上也一樣鬼畜,這是IE 5.1.7的效果:

          還有人試了試,在Windows 98系統(tǒng)的IE 7瀏覽器打開,會變成非常像素風(fēng)的樣子:

          最恐怖的是三星手機(jī)上的夜間模式打開:

          連人種都變了啊!

          其他的幾張畫,換個瀏覽器打開也比較鬼畜。

          妹子你bra里的鋼圈出來了啊!

          拉夫領(lǐng)變得透明而有光澤,領(lǐng)口的蕾絲干脆斷掉了,仿佛是逃難時期的肖像畫。

          最后,如果你在iPhone上裝了Chrome,出來的也是Safari的效果,想看完整效果的話,請在安卓手機(jī)或者電腦的Chrome上打開。

          因此,有不少網(wǎng)友都覺得,這幾幅畫可以當(dāng)成瀏覽器測試項目,一試就能知道內(nèi)核用的是誰家的。

          反向繪圖

          CSS太難,學(xué)不會?不要緊,雖然我們不能把代碼變成圖片,但是可以把圖片變成代碼啊。

          沒錯,就是ASCII藝術(shù),早在DOS時期,就有人用命令行界面來顯示圖片。直到今天已成為一種流行的互聯(lián)網(wǎng)文化。

          用單色字符來畫出世界名畫已經(jīng)不算新鮮事。最近又有個碼農(nóng)開發(fā)了一個新的項目Primg,讓任何一幅畫都可以用質(zhì)數(shù)來表示。

          比如蒙拉麗莎,就可以用一個3萬位的質(zhì)數(shù)二進(jìn)制方式繪制出來。

          傳送門:

          作者的GitHub:https://github.com/cyanharlow

          作者博客主頁:https://diana-adrianne.com/

          教程:https://css-tricks.com/solving-lifes-problems-with-css/

          用質(zhì)數(shù)生成任意ASCII藝術(shù):https://github.com/geonnave/primg

          — 完 —

          量子位 QbitAI · 頭條號簽約作者

          關(guān)注我們,第一時間獲知前沿科技動態(tài)

          知道嗎,那些使用CSS transform屬性添加進(jìn)HTML的元素是可以實現(xiàn)動畫效果的。我們可以使用transition屬性和@keyframe動畫來實現(xiàn)這個效果,但是更炫酷的是,我們可以使用cubic-bezier()這個timing function,給動畫添加一些反彈特效,從而讓它看上去更好看。

          簡單來說,CSS中的cubic-bezier(),就是一個用來創(chuàng)建過渡效果的timing function。它可以定義過渡的速度和其他一些指標(biāo),它也可以用來創(chuàng)建動畫中的反彈特效。

          在這篇文章中,我們首先將會創(chuàng)建一個簡單的變換動畫,然后我們給它添加cubic-bezier()。在讀完這篇文章之后,你將會了解如何創(chuàng)建一個同時使用了扇出效果和反彈特效的動畫。

          動畫鏈接

          1 制作扇葉

          這個扇出效果是由5個扇葉所組成的。我們需要使用CSS的圓角(border-radius )屬性來制作這些扇葉。具體請參看下圖:

          圓角屬性有很多種不同的語法。在這里我們將會使用一種比較復(fù)雜的語法:

          border-radius: htl htr hbr hbl / vtl vtr vbr vbl;

          HTML

          <div class="pinStarLeaf"></div>

          CSS

          .pinStarLeaf { width: 60px; height: 120px; border-radius: 50%/30% 30% 70% 70%; background-color:#B8F0F5;}

          2擴(kuò)大扇葉數(shù)量

          由于扇出效果需要5個扇葉,因此我們還需要再制作4個扇葉,并且為他們指定不同的顏色。除此之外,我們還需要指定一個絕對定位(absolute positioning),讓5個扇葉在動畫結(jié)束的時候重疊在一起。

          CSS

          #pinStarWrapper{ width: 300px; height: 300px; position: relative;}.pinStarLeaf{ width: 60px; height: 120px; position: absolute; border-radius: 50%/30% 30% 70% 70% ; left:0; right:0; top:0; bottom:0; margin: auto; opacity: .5;}.pinStarLeaf:nth-of-type(1){ background-color:#B8F0F5;}.pinStarLeaf:nth-of-type(2){ background-color:#9CF3DC;}.pinStarLeaf:nth-of-type(3){ background-color:#94F3B0;}.pinStarLeaf:nth-of-type(4){ background-color:#D2F8A1;}.pinStarLeaf:nth-of-type(5){ background-color:#F3EDA2;}

          3識別用戶點擊行為,改進(jìn)美學(xué)效果

          我們要使用#pinStarCenterChkBox這個識別符來添加一個checkbox,從而捕捉用戶的點擊行為。當(dāng)checkbox被選中之后,扇出效果會馬上呈現(xiàn)(扇葉開始旋轉(zhuǎn))。我們還要用#pinStarCenter識別符來添加一個白色的原型,從而提升美學(xué)效果。這個原型要放在扇出效果的最中心。

          HTML

          我們要先放置checkbox,然后是白色的圓和扇葉:

          CSS

          由于每一個扇葉都要按照不同的角度沿z軸旋轉(zhuǎn),因此我們要為它們制定好過渡:rotatez();。我們還要給旋轉(zhuǎn)特性應(yīng)用transition屬性。

          仔細(xì)看看上面的CSS代碼,你會發(fā)現(xiàn)#pinStarCenterChkBox:checked ~這個識別符,只有在checkbox被勾選之后(也就是用戶點擊之后),動畫效果才會開始。

          4對旋轉(zhuǎn)的中心進(jìn)行修改

          默認(rèn)情況下,旋轉(zhuǎn)的中心位于旋轉(zhuǎn)元素的中間。但是在我們的效果中,它應(yīng)該位于所有扇葉的中心點,因此我們需要對其進(jìn)行移動。我們可以使用CSS的transform-orgin屬性來實現(xiàn)這個目的。

          為了讓旋轉(zhuǎn)特效正常工作,我們要在CSS文件中的.pinStarLeaf選擇器中添加下面兩條規(guī)則:

          .pinStarLeaf{ transform-origin: 30px 30px; transition: transform 1s linear;}

          截止到目前為止,旋轉(zhuǎn)特效已經(jīng)做出來了,但是這個動畫還沒有使用反彈特效。

          動畫鏈接

          理解ubic-Bezier()的工作方式

          現(xiàn)在我們來添加反彈特效,我們需要將現(xiàn)行的timing function替換為cubic-bezier()。

          但是首先,為了更好的了解什么是反彈特效,我們先來試著了解一下cubic-bezier()這個timing function的工作方式。

          cubic-bezier()的語法是這樣的,d和t分別代表了距離(distance)和時間(time),他們的值通常是0到1之間的數(shù)字:

          cubic-bezier (t1, d1, t2, d2)

          雖然用距離和時間這樣的詞匯來解釋CSS中的cubic-bezier()并不是非常精確,但是這樣說的時候我們比較容易理解。

          假設(shè)存在一個能在6秒內(nèi)從A點移動到B點的盒子。我們使用下面的cubic-bezier()來實現(xiàn)這次過渡,令t1=0,d1=1。

          /* t1 = 0 , d1 = 1, t2 = 0, d2 = 0 */cubic-bezier(0,1,0,0)

          這個盒子會幾乎立刻從A點移動到中間點,然后用剩下的時間在移動到B點。

          動畫連接

          現(xiàn)在我們令t1=1,d1=0,在來看看過渡的效果。

          你會發(fā)現(xiàn)在最初的3秒內(nèi),盒子幾乎不動,之后它幾乎直接跳到了中間點,然后再穩(wěn)步移動到B點。

          動畫鏈接

          你也許已經(jīng)發(fā)現(xiàn)了,d1控制的是A點到中間點之間的距離,t1控制的是從A點到中間點所用的時間。

          現(xiàn)在我們來添加d2和t2.令t1和d1的值都為1,令t2=2,d2=0。盒子會在前三秒內(nèi)穩(wěn)步過渡到中間點(因為t1=1,d1=1),然后立刻跳到B點。

          現(xiàn)在我們來移除t2和d2的值。

          盒子會在前三秒內(nèi)穩(wěn)步過渡到中間點(因為t1=1,d1=1),然后停止接近3秒的時間,之后立刻跳到B點。

          動畫鏈接

          也就是說,d2和t2分別控制了盒子從中間點到B點的距離和時間。

          5使用Cubic-Bezier()添加反彈特效

          在使用反彈特效的時候,最主要的參數(shù)就是以距離,也就是d1和d2。當(dāng)d1的值小于1時,它會讓盒子在想B點移動之前時,先退回到A點之前。

          當(dāng)d2的值大于1時,它會讓盒子達(dá)到B點之后,再超越B點一段距離,然后再最終回到B點靜止。我現(xiàn)在將會在代碼中直接添加cubic-bezier()的值,這樣你們就可以看到最終效果了。

          #pinStarCenterChkBox:checked ~ .pinStarLeaf{ transition: transform 1s cubic-bezier(.8,-.5,.2,1.4);}

          最終的效果如下,這就是用CSS制作帶有反彈特效的扇出效果的方式:

          動畫鏈接

          為了讓大家更好的了解反彈特效,我做了下面這個動畫,請仔細(xì)觀察盒子的移動軌跡:


          主站蜘蛛池模板: 日韩精品国产一区| 日韩中文字幕精品免费一区| 精品一区二区三区四区电影| 97se色综合一区二区二区| 爆乳无码AV一区二区三区 | 久99精品视频在线观看婷亚洲片国产一区一级在线 | 乱中年女人伦av一区二区| 国产成人无码一区二区在线观看| 国产精品伦一区二区三级视频| 亚洲第一区二区快射影院| 日美欧韩一区二去三区| 无码人妻精品一区二区蜜桃 | 国产一区二区成人| 精品国产乱子伦一区二区三区| 日韩电影一区二区| 色窝窝无码一区二区三区成人网站 | 午夜视频一区二区| 日韩一区二区三区在线 | 亚洲国产专区一区| 国产91精品一区二区麻豆网站| 国产成人一区二区精品非洲| 国产亚洲无线码一区二区| 国产精品视频一区国模私拍| 国产一区三区三区| 精品国产福利在线观看一区| 国产精品无码一区二区三级| 日韩精品一区二区三区毛片| 国产在线一区二区| 无码精品人妻一区二区三区免费| 亚洲一区中文字幕在线电影网 | 国产综合无码一区二区辣椒| 在线观看一区二区精品视频| 亚洲av综合av一区| 美女视频免费看一区二区| 国产日本一区二区三区| 中文字幕一区二区三区日韩精品| 亚洲午夜精品一区二区公牛电影院| 亚洲爽爽一区二区三区| 精品少妇人妻AV一区二区| 日韩精品无码一区二区三区| 国产精品自在拍一区二区不卡|