整合營銷服務(wù)商

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

          免費(fèi)咨詢熱線:

          代碼變油畫,精細(xì)到毛發(fā),只用HTML+CSS,讓美術(shù)設(shè)計(jì)也驚嘆!

          源:量子位

          本文約2509字,建議閱讀4分鐘。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          這個(gè)項(xiàng)目也一度登上了GitHub Trending排行榜第二名:

          并且Issues里都是諸多用戶的膜拜:厲害!崇拜!太棒了!

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


          繪制過程

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

          畫出這樣一個(gè)圖形分成幾步?

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

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

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



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

          Diana的辦法是:在保留矩形的同時(shí),加上兩個(gè)彎曲的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 ); 
          }

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

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

          剛剛我們畫的那幅畫像不像人的脖子?好的,我們?cè)倩氐饺讼癞嬌?,Diana繪制人物的脖子也是類似的過程。

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

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

          1、邊界半徑(border-radius)

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

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

          2、盒子陰影(box-shadow)

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

          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)小近大的視覺效果,或者是僅僅為畫出一個(gè)梯形。

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

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

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

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

          5、層疊(overflow)

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

          overflow: hidden;

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

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

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

          只適用于Chrome

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

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

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

          肩膀上的高光,變成了一個(gè)大圈圈:

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

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

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

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

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

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

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

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

          連人種都變了啊!

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

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

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

          最后,如果你在iPhone上裝了Chrome,出來的也是Safari的效果,想看完整效果的話,請(qǐng)?jiān)诎沧渴謾C(jī)或者電腦的Chrome上打開。

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

          反向繪圖

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

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

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

          比如蒙拉麗莎,就可以用一個(gè)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

          —完—

          關(guān)注清華-青島數(shù)據(jù)科學(xué)研究院官方微信公眾平臺(tái)“ THU數(shù)據(jù)派 ”及姊妹號(hào)“ 數(shù)據(jù)派THU ”獲取更多講座福利及優(yōu)質(zhì)內(nèi)容。

          年暑假實(shí)習(xí)了四個(gè)月的前端,接觸了很多前端相關(guān)的東西,覺得前端真的比后端有趣多了啊,又好玩又有趣,相比后端千篇一律的代碼,前端的千變?nèi)f化一瞬間俘獲了我的心~~~~~

          下面列舉一些基礎(chǔ)的前端圖形制作代碼,希望對(duì)大家有用喲。

          為了讓大家能輕松愉快地跟著我的代碼動(dòng)手測(cè)試,更為了讓一點(diǎn)計(jì)算機(jī)基礎(chǔ)都沒有的小伙伴也能跟著我下面的代碼來自己動(dòng)手玩耍,我先簡(jiǎn)單給出一個(gè)基礎(chǔ)的HTML,大家可以像我這樣新建一個(gè)HTML文件,然后復(fù)制下面的代碼到文件中:(不知道怎么用記事本建html的小伙伴可以去看我的另外一篇文章:使用 Notepad 或 TextEdit 來編寫 HTML。)

          一,正方形

          <html>
          <body>
          <h1>有趣的前端圖形</h1>
          <div id="square">
          </div>
          <style>
           #square {
           width: 100px;
           height: 100px;
           background: red;
           }
          </style>
          </body>
          </html>
          

          好了,現(xiàn)在點(diǎn)擊使用瀏覽器打開上面的文件,是不是看到了下面的圖像呢:

          如果你已經(jīng)看到了上面的圖像,那么恭喜你,你可以繼續(xù)往下看下去了,下面有更多有趣的圖形等著你哦。

          二、圓形

          將下面的代碼放到<style></style>中,并把<div>中的id改為circle

          #circle {
           width: 100px;
           height: 100px;
           background: red;
           -moz-border-radius: 50px;
           -webkit-border-radius: 50px;
           border-radius: 50px;
          }
          

          你就得到了一個(gè)可愛的圓:

          當(dāng)然顏色啥的,可以隨便改啊~

          三、橢圓

          #oval {
           width: 200px;
           height: 100px;
           background: red;
           -moz-border-radius: 100px / 50px;
           -webkit-border-radius: 100px / 50px;
           border-radius: 100px / 50px;
          }
          

          結(jié)果如下:

          四、三角形

          正三角:

          #triangle-up {
           width: 0;
           height: 0;
           border-left: 50px solid transparent;
           border-right: 50px solid transparent;
           border-bottom: 100px solid red;
          }
          

          倒三角:

          #triangle-down {
           width: 0;
           height: 0;
           border-left: 50px solid transparent;
           border-right: 50px solid transparent;
           border-top: 100px solid red;
          }
          

          五、五角星

          #star-five {
           margin: 50px 0;
           position: relative;
           display: block;
           color: red;
           width: 0px;
           height: 0px;
           border-right: 100px solid transparent;
           border-bottom: 70px solid red;
           border-left: 100px solid transparent;
           -moz-transform: rotate(35deg);
           -webkit-transform: rotate(35deg);
           -ms-transform: rotate(35deg);
           -o-transform: rotate(35deg);
          }
          #star-five:before {
           border-bottom: 80px solid red;
           border-left: 30px solid transparent;
           border-right: 30px solid transparent;
           position: absolute;
           height: 0;
           width: 0;
           top: -45px;
           left: -65px;
           display: block;
           content: '';
           -webkit-transform: rotate(-35deg);
           -moz-transform: rotate(-35deg);
           -ms-transform: rotate(-35deg);
           -o-transform: rotate(-35deg);
           
          }
          #star-five:after {
           position: absolute;
           display: block;
           color: red;
           top: 3px;
           left: -105px;
           width: 0px;
           height: 0px;
           border-right: 100px solid transparent;
           border-bottom: 70px solid red;
           border-left: 100px solid transparent;
           -webkit-transform: rotate(-70deg);
           -moz-transform: rotate(-70deg);
           -ms-transform: rotate(-70deg);
           -o-transform: rotate(-70deg);
           content: '';
          }
          

          結(jié)果:

          六、六角星

          #star-six {
           width: 0;
           height: 0;
           border-left: 50px solid transparent;
           border-right: 50px solid transparent;
           border-bottom: 100px solid red;
           position: relative;
          }
          #star-six:after {
           width: 0;
           height: 0;
           border-left: 50px solid transparent;
           border-right: 50px solid transparent;
           border-top: 100px solid red;
           position: absolute;
           content: "";
           top: 30px;
           left: -50px;
          }
          

          七、無窮符號(hào)

          長這樣:

          #infinity {
           position: relative;
           width: 212px;
           height: 100px;
          }
           
          #infinity:before,
          #infinity:after {
           content: "";
           position: absolute;
           top: 0;
           left: 0;
           width: 60px;
           height: 60px;
           border: 20px solid red;
           -moz-border-radius: 50px 50px 0 50px;
           border-radius: 50px 50px 0 50px;
           -webkit-transform: rotate(-45deg);
           -moz-transform: rotate(-45deg);
           -ms-transform: rotate(-45deg);
           -o-transform: rotate(-45deg);
           transform: rotate(-45deg);
          }
           
          #infinity:after {
           left: auto;
           right: 0;
           -moz-border-radius: 50px 50px 50px 0;
           border-radius: 50px 50px 50px 0;
           -webkit-transform: rotate(45deg);
           -moz-transform: rotate(45deg);
           -ms-transform: rotate(45deg);
           -o-transform: rotate(45deg);
           transform: rotate(45deg);
          }
          

          八、心形~~

          最后來一個(gè)愛你的形狀吧~~~~

          心形~~~

          先放最終結(jié)果:

          代碼:

          #heart {
           position: relative;
           width: 100px;
           height: 90px;
          }
          #heart:before,
          #heart:after {
           position: absolute;
           content: "";
           left: 50px;
           top: 0;
           width: 50px;
           height: 80px;
           background: red;
           -moz-border-radius: 50px 50px 0 0;
           border-radius: 50px 50px 0 0;
           -webkit-transform: rotate(-45deg);
           -moz-transform: rotate(-45deg);
           -ms-transform: rotate(-45deg);
           -o-transform: rotate(-45deg);
           transform: rotate(-45deg);
           -webkit-transform-origin: 0 100%;
           -moz-transform-origin: 0 100%;
           -ms-transform-origin: 0 100%;
           -o-transform-origin: 0 100%;
           transform-origin: 0 100%;
          }
          #heart:after {
           left: 0;
           -webkit-transform: rotate(45deg);
           -moz-transform: rotate(45deg);
           -ms-transform: rotate(45deg);
           -o-transform: rotate(45deg);
           transform: rotate(45deg);
           -webkit-transform-origin: 100% 100%;
           -moz-transform-origin: 100% 100%;
           -ms-transform-origin: 100% 100%;
           -o-transform-origin: 100% 100%;
           transform-origin :100% 100%;
          }
          

          更多好玩的圖形,盡在hello程序媛哦~~

          當(dāng)然,上面的代碼我也已經(jīng)整理好啦,需要的童鞋可以私信我領(lǐng)取代碼呀。

          另外,不懂如何使用電腦自帶的記事本編輯html的小伙伴,也可以私信問我哦,我一定知無不答答無不盡~~

          SS的強(qiáng)大和精妙,只有在認(rèn)真研讀其代碼之后才會(huì)深刻明白。

          今日繼續(xù)用純CSS畫圖,并給大家整理了本文中所有代碼,需要的小伙伴可以私信我哦。

          一、陰陽

          首先,用CSS畫一個(gè)陰陽圖,如下:

          代碼也很簡(jiǎn)單:

          #yin-yang {
           width: 96px;
           height: 48px;
           background: #eee;
           border-color: red;
           border-style: solid;
           border-width: 2px 2px 50px 2px;
           border-radius: 100%;
           position: relative;
          }
           
          #yin-yang:before {
           content: "";
           position: absolute;
           top: 50%;
           left: 0;
           background: #eee;
           border: 18px solid red;
           border-radius: 100%;
           width: 12px;
           height: 12px;
          }
           
          #yin-yang:after {
           content: "";
           position: absolute;
           top: 50%;
           left: 50%;
           background: red;
           border: 18px solid #eee;
           border-radius:100%;
           width: 12px;
           height: 12px;
          }
          

          當(dāng)然,顏色什么的,可以隨便改啦~

          二、雞蛋

          再畫一個(gè)可愛的雞蛋~~~像這樣:

          代碼僅僅幾句話:

          #egg {
           display:block;
           width: 126px;
           height: 180px;
           background-color: red;
           -webkit-border-radius: 63px 63px 63px 63px / 108px 108px 72px 72px;
           border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
          }
          

          三、最后畫一個(gè)彎彎的月亮~

          長這樣:

          代碼非常非常少:

          #moon {

          width: 80px;

          height: 80px;

          border-radius: 50%;

          box-shadow: 15px 15px 0 0 red;

          }

          是不是很神奇?不敢相信這幾句代碼居然有這樣的功力?

          那就打開電腦,按照我之前講的方法創(chuàng)建一個(gè)html試試吧~

          不知道怎么創(chuàng)建的小伙伴看這里>>css3制作圖形大全:簡(jiǎn)單幾句代碼畫出漂亮的圖形,一起來看看吧~


          主站蜘蛛池模板: 日本精品高清一区二区| 日本强伦姧人妻一区二区 | 国产激情一区二区三区小说| 八戒久久精品一区二区三区| 中文字幕一区二区三区在线观看| 杨幂AV污网站在线一区二区| 色欲AV蜜桃一区二区三| 精品福利一区二区三| 精品久久国产一区二区三区香蕉| 国产精品美女一区二区三区| 国产精品一区二区资源| 手机福利视频一区二区| 无码毛片一区二区三区视频免费播放 | 色狠狠色狠狠综合一区| 亚洲av无码一区二区乱子伦as| 日本一区二区在线免费观看| 国精产品一区二区三区糖心 | 国产成人欧美一区二区三区| 麻豆一区二区免费播放网站| 久久久av波多野一区二区| 国产一区二区精品久久岳| 亚洲一区动漫卡通在线播放| 在线播放精品一区二区啪视频| 亚洲狠狠狠一区二区三区| 濑亚美莉在线视频一区| 国产精品无码一区二区三级| 亚洲香蕉久久一区二区| 人妻无码一区二区视频| 无码av免费毛片一区二区| 无码av不卡一区二区三区| 精品无码一区二区三区爱欲| 日本丰满少妇一区二区三区| 精品人妻中文av一区二区三区| 麻豆视传媒一区二区三区| 精品日韩亚洲AV无码一区二区三区 | 精品人妻少妇一区二区三区在线| 韩国福利影视一区二区三区| 国产精品99无码一区二区| 免费一本色道久久一区| 无码人妻AV免费一区二区三区| 人妻体体内射精一区二区|