【源码实例】纯CSS水波纹效果和动画气泡
【源码实例】纯CSS水波纹效果和动画气泡
evinelong web前端开发
Knowlegde can change your fate and English can accomplish your future.
知识改变命运,英语成就未来。
正在分享另一个纯CSS实验工作的例子,在波形或纹波效应的水中创建动画气泡,而不使用任何图像或JavaScript。这些动画气泡也具有弹奏效果。所有这些Lab元素都是由Pure CSS创建和动画的。
以前,我用同样的概念分享了“ 纯粹的CSS ”,“ 持续不断的动画气泡 ”。那时候,我已经用了一个简单的图像用于装满半液体的锥形瓶。但是,在本教程中,我已经通过CSS创建了所有这些元素。
如果您是化学学生或访问过任何化学实验室,您可以轻松识别这些物体,如烧瓶,液体和气泡。
HTML&CSS - 玻璃瓶
起初,我们将创建一个Flask。圆底烧瓶包括开口,颈部和具有球形底部。为了在Flask中创建一个逼真的Glass效果,我已经使用了一些CSS渐变与alpha。
这是HTML代码:
<div class =“css-jar”> <div class =“flask-mouth”> </ div> <div class =“flask-neck”> </ div> <div class =“flask-base”> </ div></ div>
这是Flask的CSS代码:
.css-jar { position: relative; width: 195px; margin: 49px auto 0; text-align: center; transform:scale(2.5);}.css-jar .flask-mouth { background: radial-gradient(circle at 50% 55%, rgba(240, 245, 255, 0.9), rgba(240, 245, 255, 0.9) 40%, rgba(225, 238, 255, 0.8) 60%, rgba(43, 130, 255, 0.4)); width: 40px; height: 10px; margin: 0 auto -1px; border-right: 1px solid rgb(43, 130, 255); border-left: 1px solid rgb(43, 130, 255); border-radius: 19px; -o-border-radius: 19px; -ms-border-radius: 19px; -webkit-border-radius: 19px; -moz-border-radius: 19px;}.css-jar .flask-neck { width: 34px; height: 46px; margin: 0 auto -7px; z-index: 7; position: relative; border-right: 1px solid rgb(43, 130, 255); border-left: 1px solid rgb(43, 130, 255); background: radial-gradient(circle at 50% 55%, rgba(240, 245, 255, 0.9), rgba(240, 245, 255, 0.9) 40%, rgba(225, 238, 255, 0.8) 60%, rgba(43, 130, 255, 0.4));}.css-jar .flask-base { margin: auto; width: 117px; height: 97px; border: 1px solid rgb(43, 130, 255); border-top:0 solid #FFF; border-radius: 50%; -o-border-radius: 50%; -ms-border-radius: 50%; -webkit-border-radius: 50%; -moz-border-radius: 50%; overflow: hidden; position: relative; z-index: 5; background: radial-gradient(circle at 50% 55%, rgba(240, 245, 255, 0.9), rgba(240, 245, 255, 0.9) 40%, rgba(225, 238, 255, 0.8) 60%, rgba(43, 130, 255, 0.4));}
现在,我们创造了一个空的圆底玻璃瓶。我们必须填充液体。
用波纹涟漪创造液体/水
为了创造现实的水,我们必须在掩蔽液体层的顶部添加纹波或波浪效应。对于这个动画的液体效果,我用了两个元素。首先是水或液体,第二是波浪或波纹。
Html部分动画液体代码:
<div class="css-liquid"></div><div class="css-wave"></div>
我们将把这个html添加到div中,用“flask-base”类来创建一个装满的瓶子。现在,更新的HTML代码如下:
<div class =“css-jar”> <div class =“flask-mouth”> </ div> <div class =“flask-neck”> </ div> <div class =“flask-base”> <div class =“css-liquid”> </ div> <div class =“css-wave”> </ div> <div class =“css-wave”> </ div> <div class =“css-bubble”> </ div> <div class =“css-bubble”> </ div> </ div> <div class =“css-bubble”> </ div> <div class =“css-bubble”> </ div></ div>
为了在液体中创建动画波形效果,我们更新的CSS如下:
.css-jar .css-liquid { height: 39px; background-color: rgb(53,238,251); position: absolute; bottom: 0; left: 0; right: 0;}.css-jar .css-wave { width: 58px; height: 19px; position: absolute; background-color: rgb(53,238,251); left: 0; top: 56px; animation: css-wave 1.15s linear 1.15s infinite alternate; -o-animation: css-wave 1.15s linear 1.15s infinite alternate; -ms-animation: css-wave 1.15s linear 1.15s infinite alternate; -webkit-animation: css-wave 1.15s linear 1.15s infinite alternate; -moz-animation: css-wave 1.15s linear 1.15s infinite alternate; border-radius: 50%; -o-border-radius: 50%; -ms-border-radius: 50%; -webkit-border-radius: 50%; -moz-border-radius: 50%;}.css-jar .css-wave + .css-wave { left: auto; right: 0;}
用于创建动画气泡
现在,它转向创造动画气泡。为此,我们创建了一个带有“css-bubble”类的div。对于这个新的“泡泡”元素,我已经写了一些CSS动画。
.css-jar .flask-base .css-bubble { left: 15px; top: 49px; animation: css-bounce 2.65s linear 0s infinite alternate; -o-animation: css-bounce 2.65s linear 0s infinite alternate; -ms-animation: css-bounce 2.65s linear 0s infinite alternate; -webkit-animation: css-bounce 2.65s linear 0s infinite alternate; -moz-animation: css-bounce 2.65s linear 0s infinite alternate;}.css-jar .flask-base .css-bubble + .css-bubble { left: 73px; top: 39px; animation-duration: 3.45s; -o-animation-duration: 3.45s; -ms-animation-duration: 3.45s; -webkit-animation-duration: 3.45s; -moz-animation-duration: 3.45s;}
所有动画的CSS
所有的动画都是用高级CSS 3制作的。
@keyframes css-wave { from { transform: translateX(97px); } to { transform: translateX(-97px); }}@keyframes css-bounce { 0% { transform: translate(5px, 15px); } 50% { transform: translate(0, -15px); } 100% { transform: translate(-5px, -36px); opacity: 1; }}@keyframes css-buble { 0% { transform: translate(3px, 10px); } 25% { transform: translate(0, 0px); } 50% { transform: translate(-3px, -24px); } 75% { transform: translate(0, -49px); opacity: 1; } 100% { transform: translate(3px, -97px); opacity: 0; }}
浏览器兼容性
正如我们前面提到的,这项技术是用CSS开发的,所以几乎所有的主流浏览器都支持这种技术。 在未来版本的浏览器中可能会更改语法和行为。 Chrome和Safari需要在css中使用前缀-webkit。 对于今天,它被以下浏览器的所支持:
❶Chrome
❷Firefox
❸Safari
❹IE 10+
❺Opera
重要提示:Internet Explorer 9和早期版本不支持@keyframe规则或动画属性。
那就这样吧!
我希望你喜欢这篇文章和我使用的技术。请点击下面的分享栏分享。
如果您有任何更多建议要添加,请随时在以下内容发表评论。
更多相关文章
- 4K + 书写主动画笔:EHOMEWEI 便携触摸显示器评测
- 小姐姐用动画图解Git命令,一看就懂!
- Java 自定义PPT动画动作路径
- 用Highcharts动画制作彩票轮
- Android(安卓)Transition——提高一点点篇
- 2018最新 Android(安卓)面试题总结(二)
- Android(安卓)使用MotionLayout实现动画效果
- 高德地图实现Marker模拟gif动画
- ShutdownThread - 动画 & 音乐