纯CSS塑造海水绿MacBook Air(完整版)

2015/07/13 · CSS ·
CSS,
MacBook

原来的小说出处: Myvim   

写在头里的近日
前几日上课了投机用纯CSS绘制紫水晶色MacBook
Air的事无巨细经过,由于篇幅较长就分了两某个介绍,前印尼人将其合两为一有利于大家查看,该文章用马克down+小量的html编辑。

写在前面
近些日子本人用CSS绘制了三个天青的MacBook
Air,前几天把它从Computer硬盘深处挖了出来,笔者把本人的笔触和设法写下来和小同伙们享受分享。先把最终的职能给我们。

图片 1
First 注:借使图片突显过大未有完全显示,请F5或Ctrl+F5。

Double 注:本文为Markdown+少量html编辑。

Triple 注:祝愿小同伙们天天都过得欢腾。

那事实上是八个半出品,键盘上的其余图标和文字都还未曾加,Logo的话能够用font-face,待笔者找着非常的书体Logo网站链接后给大家补全,同有的时候间也迎接小友人们捣腾。

零、第零步
此处运用了CSS的before、after伪成分、渐变gradient、阴影、nth-child选用器等连锁内容,阴影和听得多了就能说的详细效果从图纸上或者看的不太精晓,小同伙们得以去地点的Codepen上查看,小说的最后笔者会给出整个源代码,风乐趣的能够团结随意修改完善。

Ok,起首所行无忌地进来。

首先介绍一下绘制的构造。

对于键盘,就是起家了多少个九冬列表ul,然后写上多少个li就可以,别的的用多少个div包裹就可以,先给出HTML结构:

XHTML

<div class=”board”> <div class=”blackbar”> </div>
<div class=”keyboard”> <ul> </ul> </div> <div
class=”touch”> </div> </div>

1
2
3
4
5
6
7
8
9
10
11
12
13
<div class="board">
<div class="blackbar">
 
</div>
<div class="keyboard">
<ul>
 
</ul>
</div>
<div class="touch">
 
</div>
</div>

4个div加上2个伪成分,总共七个部分构成整个MacBook Air。board是MacBook
Air的底盘,blackbar是显示器的不行蔚蓝旋转轴,keyboard是键盘,touch是触控板;board:before是上边的硬壳,border-bottom是盖子上面包车型大巴不得了黄色细长条。Ok,那六某些构成了全部MacBook
Air。

没图作者说个怎么着:

图片 2
接下去,小编遵照小编的绘图顺序一步步来介绍。口渴的小友人能够先去沏杯茶。

一、第一步
先给出HTML,上面是一段非常短十分短不过却没什么钻探价值的冬季列表,让滚轮飞起来呢:

XHTML

<div class=”board”> <div class=”blackbar”> </div>
<div class=”keyboard”> <ul> <li></li>
<li></li> <li></li> <li></li>
<li></li> <li></li> <li></li>
<li></li> <li></li> <li></li>
<li></li> <li></li> <li></li>
<li></li> <li></li>
<li><span>!</span><span>1</span></li>
<li><span>@</span><span>2</span></li>
<li><span>#</span><span>3</span></li>
<li><span>$</span><span>4</span></li>
<li><span>%</span><span>5</span></li>
<li><span>^</span><span>6</span></li>
<li><span>&</span><span>7</span></li>
<li><span>*</span><span>8</span></li>
<li><span>(</span><span>9</span></li>
<li><span>)</span><span>0</span></li>
<li><span>—</span><span>-</span></li>
<li><span>+</span><span>=</span></li>
<li></li> <li></li> <li>Q</li>
<li>W</li> <li>E</li> <li>R</li>
<li>T</li> <li>Y</li> <li>U</li>
<li>I</li> <li>O</li> <li>P</li>
<li></li> <li></li> <li></li>
<li></li> <li>A</li> <li>S</li>
<li>D</li> <li>F</li> <li>G</li>
<li>H</li> <li>J</li> <li>K</li>
<li>L</li> <li></li> <li></li>
<li></li> <li></li> <li>Z</li>
<li>X</li> <li>C</li> <li>V</li>
<li>B</li> <li>N</li> <li>M</li>
<li></li> <li></li> <li></li>
<li></li> <li></li> <li></li>
<li></li> <li></li> <li>By Pure CSS.To Be
Continued.</li> <li></li> <li></li>
<li></li> <li></li> <li></li>
<li></li> </ul> </div> <div class=”touch”>
</div> </div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<div class="board">
<div class="blackbar">
 
</div>
<div class="keyboard">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li><span>!</span><span>1</span></li>
<li><span>@</span><span>2</span></li>
<li><span>#</span><span>3</span></li>
<li><span>$</span><span>4</span></li>
<li><span>%</span><span>5</span></li>
<li><span>^</span><span>6</span></li>
<li><span>&</span><span>7</span></li>
<li><span>*</span><span>8</span></li>
<li><span>(</span><span>9</span></li>
<li><span>)</span><span>0</span></li>
<li><span>—</span><span>-</span></li>
<li><span>+</span><span>=</span></li>
<li></li>
<li></li>
<li>Q</li>
<li>W</li>
<li>E</li>
<li>R</li>
<li>T</li>
<li>Y</li>
<li>U</li>
<li>I</li>
<li>O</li>
<li>P</li>
<li></li>
<li></li>
<li></li>
<li></li>
<li>A</li>
<li>S</li>
<li>D</li>
<li>F</li>
<li>G</li>
<li>H</li>
<li>J</li>
<li>K</li>
<li>L</li>
<li></li>
<li></li>
<li></li>
<li></li>
<li>Z</li>
<li>X</li>
<li>C</li>
<li>V</li>
<li>B</li>
<li>N</li>
<li>M</li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li>By Pure CSS.To Be Continued.</li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<div class="touch">
 
</div>
</div>

键盘按钮为多少个li,当中开关上有几个暗记的自作者用八个span包了四起,像这么:

XHTML

<li><span>!</span><span>1</span></li>

1
<li><span>!</span><span>1</span></li>

因为它们最终式一上一下的69体位,用span包裹住便于分别摆放它们的职务。

先绘制三个600*450的div,并将board居中,给八个深紫的color,这里用的是rgb(210,210,210),用border-radius绘制出多少个20px的圆角,用box-shadow给出四个卡其灰的黑影,这里用的石磨蓝是rgb(160,160,160),小同伙们得以和睦挑选适当的水彩,最后从div的左下角到右上角以60度增添贰个线性渐变linear-gradient,是从灰黄起初从十分之六出过渡到咖啡色。因为从此的div会用到相对定位,所以在此先把其父成分board定位为relative。

完全的代码及成效如下:

CSS

.board{ margin: 0 auto; padding: 0 auto; width: 600px; height: 450px;
margin-top: 50px; background: rgb(210,210,210); border-radius: 20px;
position: relative; box-shadow: 0px 5px 6px rgb(160,160,160);
background:-webkit-linear-gradient(60deg,rgba(250,250,250,1)
25%,rgba(210,210,210,1)); }

1
2
3
4
5
6
7
8
9
10
11
12
.board{
margin: 0 auto;
padding: 0 auto;
width: 600px;
height: 450px;
margin-top: 50px;
background: rgb(210,210,210);
border-radius: 20px;
position: relative;
box-shadow: 0px 5px 6px rgb(160,160,160);
background:-webkit-linear-gradient(60deg,rgba(250,250,250,1) 25%,rgba(210,210,210,1));
}

图片 3

如此那般,多个有阴影和线性渐变过渡效果的面板就率先做到了。

二、第二步
接下去自个儿要画笔记本盖子,用的是伪成分board:before。

因为盖子是翻起来的,所以从上往下看是四个窄边。把board:before填充为780px*20px的div,背景颜色为淡白紫。

贯彻及成效如下:

CSS

.board:before{ content: ”; display: block; width: 780px; height: 20px;
background: rgb(210,210,210); }

1
2
3
4
5
6
7
.board:before{
content: ”;
display: block;
width: 780px;
height: 20px;
background: rgb(210,210,210);
}

图片 4
下一场调一下地点,board:before定位为相对定位,board宽600px,盖子宽780px,所以left=-(780-600)/2=-90px,top为board:before的高20px,顺带做出四个大弧形的效果,水平半径取大学一年级些,垂直半径取小一些,like
this:

CSS

border-top-left-radius: 390px 18px; border-top-right-radius: 390px 18px;

1
2
border-top-left-radius: 390px 18px;
border-top-right-radius: 390px 18px;

对border-radius不太熟谙的小朋侪能够查看在此以前的该文章用Markdown+少量的html编辑。《CSS3小分队——进击的border-radius》。

那时候的功能如下:

图片 5

有那么个乐趣了,为了做出立体的功用,大家给盖子从上到下加个渐变的连结效果:

CSS

background:-webkit-linear-gradient(top,rgb(210,210,210)
50%,rgb(255,255,255));

1
background:-webkit-linear-gradient(top,rgb(210,210,210) 50%,rgb(255,255,255));

再顺带把显示器下的那条小黑条加上,一句话很简短:

CSS

border-bottom: 2px solid rgb(0,0,0);

1
border-bottom: 2px solid rgb(0,0,0);

探访效果先:

图片 6

有未有痛感某个地方有些违和?放大看一下这边:

图片 7

来个进一步菊部的:

图片 8

对,便是以此小角处,给点作用:

CSS

该文章用Markdown+少量的html编辑。border-bottom: 2px solid rgb(0,0,0);

1
border-bottom: 2px solid rgb(0,0,0);

再看看效果:

图片 9

那样黑边那也是有了小的细腻弧度过渡,显得愈发自然。

沾满这一步的总体代码和法力:

CSS

.board:before{ content: ”; display: block; width: 780px; height: 20px;
background: rgb(210,210,210); border-radius: 0px 0px 3px 3px;
border-top-left-radius: 390px 18px; border-top-right-radius: 390px 18px;
position: absolute; top:-20px; left: -90px; border-bottom: 2px solid
rgb(0,0,0); background:-webkit-linear-gradient(top,rgb(210,210,210)
50%,rgb(255,255,255)); }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.board:before{
content: ”;
display: block;
width: 780px;
height: 20px;
background: rgb(210,210,210);
border-radius: 0px 0px 3px 3px;
border-top-left-radius: 390px 18px;
border-top-right-radius: 390px 18px;
position: absolute;
top:-20px;
left: -90px;
border-bottom: 2px solid rgb(0,0,0);
background:-webkit-linear-gradient(top,rgb(210,210,210) 50%,rgb(255,255,255));
}

图片 10

三、第三步
这一步大家来做显示屏旋转轴,也正是显示器下方的那条黄绿矩形blackbar。

一律先安装width和height,absolute定位,居中展现,移动的距离能够参见上边包车型客车议程小算一下就能够了,加上2px的圆角,为了显得出旋转轴立体的水渠,我们给blackbar类的底下框和左侧框加上2px的反动实线,同期给blackbar一个从上到下的渐变,中间展现出窄窄的亮丽的青黄就能够,颜色和连通的岗位小同伙们能够自动了断,oops,是机关把握。

金玉锦绣和作用:

CSS

.blackbar{ width: 450px; height: 18px; position: absolute; left: 75px;
border-radius: 2px; border-bottom: 2px solid #ffffff; /* 小白边 */
border-right: 2px solid #ffffff; background:
-webkit-linear-gradient(top,rgb(30,30,30) ,rgb(60,60,60)
35%,rgb(100,100,100) 50%,rgb(30,30,30) 65%); background:
-linear-gradient(top,rgb(30,30,30) ,rgb(60,60,60) 35%,rgb(100,100,100)
50%,rgb(30,30,30) 65%); }

1
2
3
4
5
6
7
8
9
10
11
.blackbar{
width: 450px;
height: 18px;
position: absolute;
left: 75px;
border-radius: 2px;
border-bottom: 2px solid #ffffff; /* 小白边 */
border-right: 2px solid #ffffff;
background: -webkit-linear-gradient(top,rgb(30,30,30) ,rgb(60,60,60) 35%,rgb(100,100,100) 50%,rgb(30,30,30) 65%);
background: -linear-gradient(top,rgb(30,30,30) ,rgb(60,60,60) 35%,rgb(100,100,100) 50%,rgb(30,30,30) 65%);
}

图片 11

四、第四步
接下去正是MacBook
Air最显然的局地了,那就是键盘部分,为啥明明呢,因为它占的地儿最大吧哈哈哈(欠好笑的事也要大笑三声)。

在画键盘此前呢,小同伙们最佳先算好一切键盘区域的深浅,种种开关的轻重和排列,不然到时候只好一点点再度调,很麻烦。好了,咱先把键盘区域画下来呢。

价值观步骤,设置宽高,相对定位,然后设置left、top居中,勾勒出1px solid
颜色为rgb(180,180,180)的border,8px的圆角,棕红的背景颜色;

贯彻和意义如下:

CSS

.keyboard{ position: absolute; width:530px; height: 216px; left: 35px;
top: 35px; border: 1px solid rgb(180,180,180); border-radius: 8px;
background:rgba(250,250,250,1); }

1
2
3
4
5
6
7
8
9
10
.keyboard{
position: absolute;
width:530px;
height: 216px;
left: 35px;
top: 35px;
border: 1px solid rgb(180,180,180);
border-radius: 8px;
background:rgba(250,250,250,1);
}

图片 12

为了显得出立体的沟槽感,阴影又该出来了。我们用box-shadow给keyboard的四条边框增加四条内部inset阴影,关于box-shadow今后有时机再讲,先把贯彻和成效贴上:

CSS

box-shadow:2px 0px 2px rgb(180,180,180) inset, 0px 3px 3px
rgb(180,180,180) inset, -5px -0px 1px rgb(255,255,255) inset, 0px -3px
3px rgb(180,180,180) inset;

1
2
3
4
box-shadow:2px 0px 2px rgb(180,180,180) inset,
0px 3px 3px rgb(180,180,180) inset,
-5px -0px 1px rgb(255,255,255) inset,
0px -3px 3px rgb(180,180,180) inset;

图片 13

雏形出来了,接下去就是八个个的nth-child了。让我们随后刚烈地荡起双桨吧。

五、第五步
就像前边提到的,大家最棒事先先计算好每一个开关的大大小小和任务,做到了然于胸,不至于到时候一片混乱,否则一切键盘就疑似东魏末年似的这一同那一块。

第一是有些常规的装置,去掉列表标识,margin、padding设置,列表的宽和高balabala,根据事先的持筹握算,设置开关与开关的间隔,差不离排列下这么四个开关,并给开关增多4px的圆角,为了体现立体效果,加上四个border:

CSS

该文章用Markdown+少量的html编辑。border: 1px solid rgb(70,70,70);

1
border: 1px solid rgb(70,70,70);

并四个边增添阴影:

CSS

box-shadow: 1px 0px 0px rgb(0,0,0), 0px 1px 0px rgb(0,0,0), -1px 0px 0px
rgb(0,0,0), 0px -1px 0px rgb(0,0,0);

1
2
3
4
box-shadow: 1px 0px 0px rgb(0,0,0),
0px 1px 0px rgb(0,0,0),
-1px 0px 0px rgb(0,0,0),
0px -1px 0px rgb(0,0,0);

凭借代码和功效:

CSS

ul,li{ list-style: none; margin:0 auto; padding:0 auto; display: block;
font-family: “Vrinda”; -webkit-user-select: none; -moz-user-select:
none; -ms-user-select: none; user-select: none; } ul{ width:530px;
margin-top: 8px; padding-left: 8px; /* border:2px solid black; */ }
li{ width:29px; height:29px; float: left; /* padding-left: 0px; */
margin-right: 5px; margin-bottom: 5px; background-color: rgb(30,30,30);
color: rgb(200,200,200); text-align: center; line-height: 28px;
font-size: 12px; border-radius: 4px; border: 1px solid rgb(70,70,70);
box-shadow: 1px 0px 0px rgb(0,0,0), 0px 1px 0px rgb(0,0,0), -1px 0px 0px
rgb(0,0,0), 0px -1px 0px rgb(0,0,0); }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
ul,li{
list-style: none;
margin:0 auto;
padding:0 auto;
display: block;
font-family: "Vrinda";
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
 
ul{
width:530px;
margin-top: 8px;
padding-left: 8px;
/* border:2px solid black; */
}
 
li{
width:29px;
height:29px;
float: left;
/* padding-left: 0px; */
margin-right: 5px;
margin-bottom: 5px;
background-color: rgb(30,30,30);
color: rgb(200,200,200);
text-align: center;
line-height: 28px;
font-size: 12px;
border-radius: 4px;
border: 1px solid rgb(70,70,70);
box-shadow: 1px 0px 0px rgb(0,0,0),
0px 1px 0px rgb(0,0,0),
-1px 0px 0px rgb(0,0,0),
0px -1px 0px rgb(0,0,0);
}

图片 14
看上去还很乱,连文本都溢出了,不过老妈说过,太急化解不了难题,稳步来,保准等会就驯服得她服服帖帖的。

Tips:请用力记住父阿娘的生日哦。

精心的伴儿们会发掘有一段代码,貌似不细瞧的也能窥见,正是这段:

CSS

-webkit-user-select: none; -moz-user-select: none; -ms-user-select:
none; user-select: none;

1
2
3
4
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;

那是什么样意思啊?先来看下不加这段代码的效果:

图片 15

对,正是这一片的中湖蓝,当用鼠标去键盘上拖着选中的时候,那多少个个的li就能够被入选,增添这段代码就能够还大家一片巧克力键盘了,就能够还大家叁个皑皑的晴空了。

洁白…的…蓝天…^o^

我们先把键盘最上边的那一排功用键先捣腾好。这里大家用nth-child来抉择方面那一排作者没数错数量应该是14个的功能键,并给它们简单设置样式。

兑现和功力如下:

CSS

li:nth-child(1),li:nth-child(2),li:nth-child(3),li:nth-child(4),
li:nth-child(5),li:nth-child(6),li:nth-child(7),li:nth-child(8),
li:nth-child(9),li:nth-child(10),li:nth-child(11),li:nth-child(12),
li:nth-child(13),li:nth-child(14){ width:30px; height:15px; }

1
2
3
4
5
6
7
li:nth-child(1),li:nth-child(2),li:nth-child(3),li:nth-child(4),
li:nth-child(5),li:nth-child(6),li:nth-child(7),li:nth-child(8),
li:nth-child(9),li:nth-child(10),li:nth-child(11),li:nth-child(12),
li:nth-child(13),li:nth-child(14){
width:30px;
height:15px;
}

图片 16

接下去调治第二行的数字开关上的那多少个数字和标识的一上一下的69体位,同样先用nth-child选中再安装样式:

CSS

li:nth-child(16) span,li:nth-child(17) span,li:nth-child(18)
span,li:nth-child(19) span,li:nth-child(20) span, li:nth-child(21)
span,li:nth-child(22) span,li:nth-child(23) span,li:nth-child(24)
span,li:nth-child(25) span, li:nth-child(26) span,li:nth-child(27) span{
display: block; margin-top: 5px; line-height: 0.5; }

1
2
3
4
5
6
7
li:nth-child(16) span,li:nth-child(17) span,li:nth-child(18) span,li:nth-child(19) span,li:nth-child(20) span,
li:nth-child(21) span,li:nth-child(22) span,li:nth-child(23) span,li:nth-child(24) span,li:nth-child(25) span,
li:nth-child(26) span,li:nth-child(27) span{
display: block;
margin-top: 5px;
line-height: 0.5;
}

下一场设置除了最终的那多少个趋势键外的别的键的大小,很简短,算准写就行,要做二个成竹于胸的男生,那块直接贴代码:

CSS

li:nth-child(28),li:nth-child(29){ width:45px; }
li:nth-child(43),li:nth-child(55){ width:55px; }
li:nth-child(56),li:nth-child(67){ width:73px; }
li:nth-child(68),li:nth-child(69),li:nth-child(70),li:nth-child(71),
li:nth-child(72),li:nth-child(73),li:nth-child(74){ height:33px; }
li:nth-child(72){ width:173px; } li:nth-child(71),li:nth-child(73){
width:37px; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
li:nth-child(28),li:nth-child(29){
width:45px;
}
li:nth-child(43),li:nth-child(55){
width:55px;
}
li:nth-child(56),li:nth-child(67){
width:73px;
}
li:nth-child(68),li:nth-child(69),li:nth-child(70),li:nth-child(71),
li:nth-child(72),li:nth-child(73),li:nth-child(74){
height:33px;
}
li:nth-child(72){
width:173px;
}
li:nth-child(71),li:nth-child(73){
width:37px;
}

找个驿站半路苏息下先,顺带看下效果:

图片 17

除去八个方向键,别的的开关放置得还算能够,接着走。

多少个方向键设置也很轻松,设置宽高,定位就能够,不罗嗦了,间接上:

CSS

li:nth-child(75),li:nth-child(77),li:nth-child(78){ margin-top: 18px;
height: 14px; } li:nth-child(76){ height: 13px; margin-top: 19px; }
li:nth-child(78){ position: absolute; bottom: 22px; right:38px; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
li:nth-child(75),li:nth-child(77),li:nth-child(78){
margin-top: 18px;
height: 14px;
}
 
li:nth-child(76){
height: 13px;
margin-top: 19px;
}
 
li:nth-child(78){
position: absolute;
bottom: 22px;
right:38px;
}

效果:

图片 18

恩,美感效果还在自己的审美范围以内。

六、第六步
终极一步就是触控板touch的绘图了,哈哈哈,终于要Norman底登入了,待作者喝口菊白茶先。

触控板的绘图和键盘的绘图基本上是同样的,设置大小,定位,圆角,border就可以。直接上:

CSS

.touch{ position: absolute; width:200px; height:150px; border: 2px solid
rgb(190,190,190); bottom: 23px; left: 200px; border-radius: 8px; }

1
2
3
4
5
6
7
8
9
.touch{
position: absolute;
width:200px;
height:150px;
border: 2px solid rgb(190,190,190);
bottom: 23px;
left: 200px;
border-radius: 8px;
}

图片 19
七、小了个结
到这里,MacBook
Air就算实现了,依旧那句话,是个半成品,一些字体Logo还待用font-face来成功,当然还是能加多些动画,让它像产品旋转来浮现等等,那只是一得之见而已,期待小友人们越多奇思妙想。小同伙们有好的主见接待分享~~~

伙伴们也得以猛戳这里Codepen上查看高清无码大图,给出链接:

See the Pen Airbook by pure css
by myvin (@myvin) on
CodePen.

2 赞 8 收藏
评论

图片 20

相关文章