论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > div+css教程
Tag:css,入门,技巧,div,实例,示例,菜单,布局,web2.0,ul,li,经验,列表,web标准,xhtml,web标准,浏览器,兼容,css hack,表格,视频教程

Div+CSS教程:如何制作玻璃瓶

文章类别:div+css | 发表日期:2012-6-5 10:20:53

Div+CSS教程:如何制作玻璃瓶


玻璃瓶

我们大家一起先看看玻璃瓶的代码结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
<div class="bottle">
<div class="bottle_top">
<div class="bottle_mouth"></div>
<div class="highlight"></div>
</div>
<div class="bottle_neck">
<div class="highlight"></div>
</div>
<div class="bottle_main">
<div class="bottle_inner"></div>
<div class="highlight"></div>
</div>
</div>

    一个bottle,分为瓶顶bottle_top、瓶颈bottle_neck、瓶身bottle_main三部分,每个都包含有一个挂高光的无意义的标 签,而bottle_top里面有一个瓶口bottle_mouth,bottle_main里面有一个玻璃瓶内部bottle_inner;

瓶子bottle
   
bottle 作为最外的容器,其实并无多大意义,用来只是定位;
    bottle:after用来画瓶子底部黑色的阴影,bottle:before用来画瓶子底部由于水的颜色产生的彩色阴影,两者分开,这样如果里面不装水了,那么只要隐藏bottle:before即可。下图是一个空瓶子的效果;

四叶草、水母与玻璃瓶

瓶顶bottle_top、瓶颈bottle_neck、瓶身bottle_main

   
其实瓶顶、瓶颈、瓶身三者的基本结构一致,所以这里合并在一起,后面细节的时候再分开。
bottle_top我设定了宽高之后,取了它的左右边框,然后对它的bottle_top:after、bottle_top:before进行操作,after做顶部向上的面,before做底部向下的面,然后border做边框轮廓:

1
2
3
border:2px solid rgba(255,255,255,0.5);
border-bottom:2px solid rgba(255,255,255,0.6);
border-top:1px solid rgba(255,255,255,0.4);

    一个总的border,然后底部,也就是向前的border-bottom我把透明度设置为0.6比正常的深,然后后面的我把它的宽度调成了1px,从而增强透视效果,因为同样的物体,靠近眼睛的会比远离眼睛的大些清晰些。瓶颈瓶身同理,做了同样的设置,然而对于bottle_neck的伪类的 border-top我不是设置它的宽度为1px,而是直接border-top:none; 因为它被前面的玻璃实体挡住了,理应是存在的但显得,但是该部位的交叉线条比较多,所以直接隐藏掉,让线条清爽明朗些。最后将三个主体的元素通过定位,玻璃瓶框架基本就打好了;

瓶口bottle_mouth
   
因为瓶子是透明的,所以瓶口这个地方需要显示出来,它串连着瓶顶跟瓶颈两个部份,瓶口顶部需要重点刻画,而瓶口底部刚好在瓶颈底部交汇,由于厚度折射什么 的一大堆元素影响,看不是很清楚,所以我给次要化删了。如果你看了我的代码,会发现bottle_mouth我是没有用box-shadow来做‘面’, 而是用背景色,这里需要注意的是,投影形成的是一个圈的颜色,当然可以用偏移等方式让他变成一个弧形,但是如果我仅仅需要左右方向的投影,上下为透明的 话,就不行了,如图:

四叶草、水母与玻璃瓶

    现在需要的是拉一个水平方向自左向右的白色-透明-透明-白色的渐变,如果用box-shadow的话,在箭头方向会产生一块很明显的白色-透明的区域,如果采用投影向上偏移的话,那么下面就会出现同样的不符合要求的区域,所以这个点上,应该采用背景色渐变比较合理;

瓶内bottle_inner

   
bottle_inner没有像bottle_top那样一个圆柱形的设计,只是通过与瓶身bottle_main间隔一段距离产生厚度感,还有圆角:

1
-moz-border-radius:10px 10px 20px 20px/10px;

    这样做出来的圆角底部会扁些逼真些,而与前面制作最大的不同在于这里:

四叶草、水母与玻璃瓶

边框不是白色的,而是

1
border:1px solid rgba(0,0,0,0.01);

再配合投影

1
-moz-box-shadow:0px 0px 2px rgba(255,255,255,0.5) inset,0px 0px 8px rgba(255,255,255,0.6) inset,0px 0px 5px rgba(255,255,255,0.5);

因为最边缘的玻璃切面跟视线成90度,透明度很高,而 弧度与视线大的区域,透明度会很低,所以白色会重一些,再慢慢过渡到透明。这个我是搜一些玻璃瓶资料 分析出来的,做出来的效果也比白色边框再渐变要真实些,然而不单要对内投影,还要对外,因为玻璃身有一定厚度,不可能完全透明,所以写了 5个像素的向外投影作为瓶身的渲染色;

投影
   
这里所说的投影,是对伪类进行box-shadow inset内投影,产生一个渐变面,让圆柱体的‘面’效果突出出来,这里我不用背景色而采用投影,是因为很难调整到符合透视的一个角度,而投影可以很轻松的做到,而且色彩融合得很好。比较特殊投影处理的有:

1> 瓶顶bottle_top的一个向下偏移的投影,如上面瓶口bottle_mouth图片,具体代码:

1
0px 3px 3px -1px rgba(255,255,255,0.3)

    向下偏移3像素,羽化3像素,然后缩小1个比例,颜色为0.3的白色。这里是作为瓶顶圆柱形面的小高亮处理;
1
2&gt; 瓶颈bottle_neck:after,如图:

四叶草、水母与玻璃瓶

具体代码:

1
-moz-box-shadow:0px 5px 3px -2px rgba(0,0,0,0.05);

    向下偏移5像素,羽化3像素,然后缩小2个比例,颜色为0.05的黑色。这里是作为瓶顶向瓶颈投影处理,增强立体感。

3> 瓶身bottle_main:before,如图:

四叶草、水母与玻璃瓶

具体代码:

1
-moz-box-shadow:0px 0px 6px rgba(255,255,255,0.7) inset,0px 0px 3px rgba(0,0,0,0.15) inset;

不偏移,羽化6像素,颜色为0.7的白色内投影,不偏移,羽化3像素,颜色为0.15的黑色内投影。这里是作为瓶底底色设置跟边缘泛光,增强立体感;

高光

挂上高光,立体感强烈了许多,分别对瓶顶、瓶颈、瓶身做高光,一条浅点细点的,一条宽点由左到右由白到透明的渐变,瓶颈只有宽没有细,瓶身细线由上至下做一个到80%的时候为透明的渐变…值得注意的是,高光需要贴着瓶壁,高度斜度保持一致,所以需要对高光进行一个斜切的变换:

1
-webkit-transform:skew(0deg,6deg);

    要不然左侧对应了,那么右侧高光必然会高出瓶壁几个像素,到此,玻璃瓶制作完成。
视频教程列表
文章教程搜索
 
div+css推荐教程
div+css热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058