基于单个 div 的 CSS 绘图

为什么只使用一个 Div?

2013年5月,我参加了 CSSConf,看到了Lea Verou 关于 border-radius 的演讲,你可能会认为这个属性很不起眼。但是这个演讲让我大开眼界,认识到 CSS 还有很多行为我是不了解的。回忆起我还是艺术生的那段时光,不断地推动着我成为所选媒介的专家。作为一个 Web 设计师,CSS 是我的媒介,因此我尽我所能地学习,探索它的极限。

为什么只有一个 Div?

回忆我以前学画的时候,课堂上还做了混合颜色的实验,我们就使用三原色,红、黄、蓝,创造出了其他颜色的光谱。这个实验的目的是让我们了解颜色的特性,同时这种限制也让我们明白了混合的力量。你当然可以买一只绿色的笔,但是你也可以使用蓝色和黄色把绿色做出来。限制你的可选项,会让你重新评估手头上已有的工具。

我决定开始一个使用 CSS 绘画的项目,过段时间我就会给出一个只用 CSS 绘制的新东西。为了得到更大的挑战,探索 CSS 的潜力,我给自己定了这个限制,只是用一个 Div。不能直接买一只绿色的笔(添加更多的 Div),我要做的就是尽其所能地结合 CSS 属性来实现我的目的。

工具箱

一个 Div 加上浏览器支持的那些 CSS 属性,看起来可用的工具太少了。但是我发现问题不在于你在使用多少东西,而在于你如何看待你在使用的东西。

伪元素

因为 CSS 有伪类,所以虽然只有一个 Div,但实际上我可以使用三个元素。因此,使用div,div:before,div:after,我们可以这样:

div { background: red; }
div:before { background: yellow; }
div:after { background: blue; }

容易想到,这三个元素可以并排成为三个叠在一起的层。因此,在我的脑海中,它看起来是下面这样的:

形状

使用 CSS 和单个元素,我们可以制作三种基础图形。使用 width 和 height 属性制作正方形/矩形,使用border-radius 制作圆/椭圆,使用 border 制作三角形/梯形。

我们还可以使用 CSS 创建其他图形,不过大部分都可以简单组合这些基础图形来实现,这些简单的图形最容易制作,也最容易修改。

多个相同的形状

使用叠加的 box-shadow,我们可以创建多个相同的形状,这些形状可以拥有不一样的大小、颜色和模糊效果。我们可以在x或者y轴上移动这些图形,因此几乎可以绘制无限的图形。

div {
    box-shadow: 170px 0 10px yellow,
                330px 0 0 -20px blue,
                330px 5px 5px -20px black;
}

我们甚至可以给 box-shadow 添加 box-shadow。注意它们申明顺序。再者,把它们当做层更容易理解。

渐变

渐变通过给定一个光源,可以被用来制造明暗和深浅效果,可以让简单扁平的图形看起来更真实。结合多个background-image,我们可以使用很多层的渐变来实现更加复杂光影,甚至是更多的图形。

div {
    background-image: linear-gradient(to right, gray, white, gray, black);
}

div:after {
    background-image: radial-gradient(circle, yellow 50%, transparent 50%), linear-gradient(to right, blue, red); 
}

视觉

最困难的部分视觉,即如何拼凑这些形状成为可被感知的绘图。随着我越来越注重绘图的技巧,发现视觉这一步很重要。为了做到这一点,我常常凝视这主题相关的图片,将其切割为多个可视的部分。都是一个个形状,都是一个个颜色。我把整张图片简化为一些小的带颜色形状或者区块,我知道(大体上)如何使用 CSS 来实现它们。

实例

我们一起仔细看看两个绘图,并学习如何分解成不同的区块,合成一个大的图形。第一个就是一支绿色的蜡笔。

蜡笔由两个基础图形构成:矩形的笔身和三角形的笔尖。


http://c.tieba.baidu.com/p/3354370368

http://c.tieba.baidu.com/p/3354534701
http://c.tieba.baidu.com/p/3354547666
http://c.tieba.baidu.com/p/3354546842
http://c.tieba.baidu.com/p/3354527799
http://c.tieba.baidu.com/p/3354545064
http://c.tieba.baidu.com/p/3354537993
http://c.tieba.baidu.com/p/3354536371
http://c.tieba.baidu.com/p/3354566167
http://c.tieba.baidu.com/p/3354563874
http://c.tieba.baidu.com/p/3354559790
http://c.tieba.baidu.com/p/3354558402
http://c.tieba.baidu.com/p/3354557382
http://c.tieba.baidu.com/p/3354575677
http://c.tieba.baidu.com/p/3354574673
http://c.tieba.baidu.com/p/3354329758
http://c.tieba.baidu.com/p/3354324754
http://c.tieba.baidu.com/p/3354328957
http://c.tieba.baidu.com/p/3354358425
http://c.tieba.baidu.com/p/3354357165
http://c.tieba.baidu.com/p/3354354914
http://c.tieba.baidu.com/p/3354351963
http://c.tieba.baidu.com/p/3354339313
http://c.tieba.baidu.com/p/3354365196
http://c.tieba.baidu.com/p/3354516479
http://c.tieba.baidu.com/p/3354363645
http://c.tieba.baidu.com/p/3354511292
http://c.tieba.baidu.com/p/3354362725
http://c.tieba.baidu.com/p/3354493596
http://c.tieba.baidu.com/p/3354386728
http://c.tieba.baidu.com/p/3354247248
http://c.tieba.baidu.com/p/3354246081
http://c.tieba.baidu.com/p/3354244736
http://c.tieba.baidu.com/p/3354243829
http://c.tieba.baidu.com/p/3354255255
http://c.tieba.baidu.com/p/3354251795
http://c.tieba.baidu.com/p/3354251040
http://c.tieba.baidu.com/p/3354250060
http://c.tieba.baidu.com/p/3354289895
http://c.tieba.baidu.com/p/3354319537
http://c.tieba.baidu.com/p/3354259808
http://c.tieba.baidu.com/p/3354313871
http://c.tieba.baidu.com/p/3354309420
http://c.tieba.baidu.com/p/3354300027
http://c.tieba.baidu.com/p/3354297069
http://c.tieba.baidu.com/p/3354195479
http://c.tieba.baidu.com/p/3354206526
http://c.tieba.baidu.com/p/3354204491
http://c.tieba.baidu.com/p/3354202763
http://c.tieba.baidu.com/p/3354200335
http://c.tieba.baidu.com/p/3354196351
http://c.tieba.baidu.com/p/3354226726
http://c.tieba.baidu.com/p/3354218172
http://c.tieba.baidu.com/p/3354215444
http://c.tieba.baidu.com/p/3354213289
http://c.tieba.baidu.com/p/3354209995
http://c.tieba.baidu.com/p/3354239543
http://c.tieba.baidu.com/p/3354238270
http://c.tieba.baidu.com/p/3354236627
http://c.tieba.baidu.com/p/3354234679
http://c.tieba.baidu.com/p/3354135902
http://c.tieba.baidu.com/p/3354133928
http://c.tieba.baidu.com/p/3354150505
http://c.tieba.baidu.com/p/3354149639
http://c.tieba.baidu.com/p/3354147111
http://c.tieba.baidu.com/p/3354145982
http://c.tieba.baidu.com/p/3354183940
http://c.tieba.baidu.com/p/3354182721
http://c.tieba.baidu.com/p/3354181977
http://c.tieba.baidu.com/p/3354165876
http://c.tieba.baidu.com/p/3354193677
http://c.tieba.baidu.com/p/3354191318
http://c.tieba.baidu.com/p/3354190267
http://c.tieba.baidu.com/p/3354188371
http://c.tieba.baidu.com/p/3354187491
http://c.tieba.baidu.com/p/3354071718
http://c.tieba.baidu.com/p/3354068213
http://c.tieba.baidu.com/p/3354066474
http://c.tieba.baidu.com/p/3354065260
http://c.tieba.baidu.com/p/3354081216
http://c.tieba.baidu.com/p/3354076242
http://c.tieba.baidu.com/p/3354075326
http://c.tieba.baidu.com/p/3354070260
http://c.tieba.baidu.com/p/3354125762
http://c.tieba.baidu.com/p/3354116024
http://c.tieba.baidu.com/p/3354112949
http://c.tieba.baidu.com/p/3354111925
http://c.tieba.baidu.com/p/3354083858
http://c.tieba.baidu.com/p/3354143274
http://c.tieba.baidu.com/p/3354138548
http://c.tieba.baidu.com/p/3353995244
http://c.tieba.baidu.com/p/3353983804
http://c.tieba.baidu.com/p/3354033869
http://c.tieba.baidu.com/p/3354031872
http://c.tieba.baidu.com/p/3354030072
http://c.tieba.baidu.com/p/3354029118
http://c.tieba.baidu.com/p/3354017868
http://c.tieba.baidu.com/p/3354051512
http://c.tieba.baidu.com/p/3354047829
http://c.tieba.baidu.com/p/3354045861
http://c.tieba.baidu.com/p/3354045354
http://c.tieba.baidu.com/p/3354062282
http://c.tieba.baidu.com/p/3354060763
http://c.tieba.baidu.com/p/3354055056
http://c.tieba.baidu.com/p/3354054049
http://c.tieba.baidu.com/p/3353927623
http://c.tieba.baidu.com/p/3353940240
http://c.tieba.baidu.com/p/3353938328
http://c.tieba.baidu.com/p/3353936543
http://c.tieba.baidu.com/p/3353963286
http://c.tieba.baidu.com/p/3353962877
http://c.tieba.baidu.com/p/3353947445
http://c.tieba.baidu.com/p/3353945576
http://c.tieba.baidu.com/p/3353944480
http://c.tieba.baidu.com/p/3353973983
http://c.tieba.baidu.com/p/3353971215
http://c.tieba.baidu.com/p/3353969648
http://c.tieba.baidu.com/p/3353967089
http://c.tieba.baidu.com/p/3354012796
http://c.tieba.baidu.com/p/3353997102
http://c.tieba.baidu.com/p/3353890191
http://c.tieba.baidu.com/p/3353905961
http://c.tieba.baidu.com/p/3353899997
http://c.tieba.baidu.com/p/3353899117
http://c.tieba.baidu.com/p/3353897901
http://c.tieba.baidu.com/p/3353912601
http://c.tieba.baidu.com/p/3353911106
http://c.tieba.baidu.com/p/3353909641
http://c.tieba.baidu.com/p/3353908731
http://c.tieba.baidu.com/p/3353918532
http://c.tieba.baidu.com/p/3353916671
http://c.tieba.baidu.com/p/3353915532
http://c.tieba.baidu.com/p/3353932494
http://c.tieba.baidu.com/p/3353931175
http://c.tieba.baidu.com/p/3353929436
http://c.tieba.baidu.com/p/3348228581
http://c.tieba.baidu.com/p/3353836792
http://c.tieba.baidu.com/p/3348038141
http://c.tieba.baidu.com/p/3353721933
http://c.tieba.baidu.com/p/3353832562
http://c.tieba.baidu.com/p/3348036152
http://c.tieba.baidu.com/p/3353725953
http://c.tieba.baidu.com/p/3353809347
http://c.tieba.baidu.com/p/3348033983
http://c.tieba.baidu.com/p/3353634819
http://c.tieba.baidu.com/p/3348030767
http://c.tieba.baidu.com/p/3347963870
http://c.tieba.baidu.com/p/3353894141
http://c.tieba.baidu.com/p/3353882414
http://c.tieba.baidu.com/p/3353892081
http://c.tieba.baidu.com/p/3353871521
http://c.tieba.baidu.com/p/3353623846
http://c.tieba.baidu.com/p/3353627803
http://c.tieba.baidu.com/p/3353840487
http://c.tieba.baidu.com/p/3353632403

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。