码迷,mamicode.com
首页 > Web开发 > 详细

如何使用CSS3实现一个3D泡沫图形

时间:2016-05-07 07:04:54      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

要实现一个逼真的泡沫,涉及到比较复杂的光学/物理学知识。

技术分享

我们这里先简化下问题,实现一个相对简单而足够实用的泡沫元素。

我们可以把基础的泡沫元素应用在很多场景中,比如水景、泡咖啡、啤酒甚至火焰特效中。

泡沫首先是一个圆形元素
1
2
3
4
5
.bubble {
    width200px;
    height200px;
    border-radius: 50%;
}

上面圆角边框半径等于50%,定义了一个圆形元素的样式。

添加3D阴影

泡沫应该是有色彩梯度的,这可以通过线性渐变(linear-gradient)和径向渐变(radial-gradient)属性来实现。

也可以通过框阴影(box-shadow)来实现,本例使用内外box-shadow来实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
box-shadow: inset -30px -30px 75px rgba(000, .2),
    /* 淡灰色渐变背景,光源位于左上方 */
     
    inset 0px 0px 5px rgba(000, .5),
    /* 泡沫内部深灰色边界 */
     
    inset 0px 0px 55px rgba(255255255, .5),
    /* 泡沫内部白色渐变效果 */
     
    inset -3px -3px 5px rgba(000, .5),
    /* 颜色稍深的右下边缘阴影效果 */
     
    0 0 50px rgba(255255255, .75);
    /* 泡沫周围的白色发光效果,以更好地突显边缘 */

通过添加上面的阴影,圆形元素现在已经有了不错的色彩渐变效果。看起来像是一个3D对象了。

添加光斑效果

在光源照射下,泡沫的局部往往会出现特别亮眼的效果。通过添加光斑可以使得泡沫更加逼真和有趣。

1
2
3
4
5
6
7
8
9
10
11
12
13
.bubble:before {
    /* 在泡沫的左上角加上白色的亮点,形成光斑效果 */
     
    content"";
    displayblock;
    positionabsolute;
    width50px;
    height50px;
    top25px;
    left25px;
    border-radius: 75px 25px;
    box-shadow: inset 10px 10px 50px rgba(255255255, .6);
}
添加泡沫内壁
1
2
3
4
5
6
7
8
9
10
11
12
13
.bubble:after {
    /* 使用:after伪元素构造泡沫内壁,形成薄薄的泡沫膜 */
     
    content"";
    displayblock;
    positionabsolute;
    width190px;
    height190px;
    border-radius: 190px;
    left5px;
    top5px;
    box-shadow: inset 0px -5px 5px rgba(000, .05);
}

我们使用伪元素:after构造一个半径小5px的内圆,并加上一点近乎透明的暗色阴影。这样就形成若隐若现的泡沫膜壁效果。

自己试试

你可以自己在线试试

原文来自TECHBROOD.COM。

by iefreer

如何使用CSS3实现一个3D泡沫图形

标签:

原文地址:http://blog.csdn.net/iefreer/article/details/51334139

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!