CSS3+JavaScript实现炫酷呼吸效果的示例代码
建站知识 2021-07-03 07:55www.168986.cn长沙网站建设
用css3动画实现的一个简单炫酷效果,最终的效果图如下:
页面结构(index.html):
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>Relax And Breath</h1> <div class="container"> <div class="circle"></div> <p id="text"></p> <div class="pointer-container"> <div class="pointer"></div> </div> <div class="gradient-circle"></div> </div> <script src="script.js"></script> </body> </html>
script.js:
const container = document.querySelector('.container'); const text = document.querySelector('#text'); const totalTime = 7500; const breathTime = (totalTime/5)2; //呼吸的时间为3s const holdTime = totalTime/5; //保持呼吸的时间为1.5s console.log(breathTime); breathAnimation(); //一开始自执行breathAnimation函数 function breathAnimation(){ text.innerHTML = 'Breath In'; container.className = 'container grow'; //给container添加grow类,实现放大效果 setTimeout(function(){ text.innerHTML = 'Hold On'; setTimeout(function(){ text.innerHTML = 'Breath Out'; container.className = 'container shrink';//给container添加shrink类,实现缩小效果 },holdTime) },breathTime) } setInterval(breathAnimation,totalTime); //重复执行
样式(style.css):
{ margin: 0; padding: 0; box-sizing: border-box; } body{ background: url('./img/bg.jpg') no-repeat center center /cover; min-height: 100vh; font-family: Arial, Helvetica, sans-serif; color: #fff; overflow: hidden; display: flex; flex-direction: column; align-items: center; justify-content: center; } /注意设置margin为auto/ .container{ position: relative; width: 300px; height: 300px; display: flex; align-items: center; justify-content: center; transform: scale(1); margin: auto; } /使用圆锥渐变作为背景,宽高比.container稍大,z-index要设为-2,因为还有一层为.circle,最外层是文字/ .gradient-circle{ position: absolute; left: -10px; : -10px; background: conic-gradient( #55b7a4 0%, #4ca493 40%, #fff 40%, #fff 60%, #336d62 60%, #2a5b52 100% ); width: 320px; height: 320px; border-radius: 50%; z-index: -2; } /z-index为-1,为中间黑色的圆/ .circle{ position: absolute; left: 0; : 0; width: 300px; height: 300px; background-color: #010f1c; border-radius: 50%; z-index: -1; } /.pointer-container是小球外面的容器,其高设置为190,是因为其中150为半径,还有40为-40,这样就会绕着圆心转,且不会换到里面来,注意transform-origin为中下方/ .pointer-container{ position: absolute; width: 20px; height: 190px; : -40px; left: 140px; / background-color: red; / transform-origin: bottom center; animation: rotate 7.5s linear forwards infinite; } /小球/ .pointer{ width: 20px; height: 20px; background-color: #fff; border-radius: 50%; } /设置小球转圈的效果/ @keyframes rotate{ from{ transform: rotate(0deg); }to{ transform: rotate(360deg); } } .container.grow{ animation: grow 3s linear forwards; } .container.shrink{ animation: shrink 2s linear forwards; } @keyframes grow{ from{ transform: scale(1) }to{ transform: scale(1.2); } } @keyframes shrink{ from{ transform: scale(1.2) }to{ transform: scale(1); } }
如果.container的margin不设置为auto或者一个具体的值,就会造成下图的效果,文字和圆挤在一块:
我把.pointer-container里面的 background-color: red; 添上就会更加理解为什么要把.pointer-container的高度设置为190px.如果不把transform-origin设置为bottom center它就会如图中标注的默认点旋转,这并不是我们想要的效果.
还有个细节就是.shrink的动画时间我设置成了两秒,其实按照js里面的breath out这段时间应该为3s,为了从breath out到breath in有个缓冲的效果,就设置成了2s,不然breath out到breath in没有一个过渡,会显得突兀不好看.
到此这篇关于CSS3+JavaScript实现炫酷呼吸效果的示例代码的文章就介绍到这了,更多相关CSS3+JavaScript呼吸效果内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章,希望大家以后多多支持狼蚁SEO!
上一篇:详解如何简单实现CSS主题的切换
下一篇:纯CSS实现左右拖拽改变布局大小
长沙网站设计
- 如何自己建一个网站 自己想建个网站,怎么建
- 如何制作网站免费建站 创建网站免费注册
- html简单网页代码 html简单网页代码超链接
- dreamweaver网页制作 dreamweaver网页制作模板
- 上海网站建设 上海网站建设制作微信
- 如何制作网站和网页 如何制作一个网页
- html网页制作代码大全 端午节html网页制作代码大
- app开发公司 app开发公司前十名
- html网页制作 html网页制作文字居中
- app制作一个需要多少钱 请人制作一个app多少钱
- 成都网站制作 成都网站制作维护
- 百度建一个网站多少钱 百度做个公司网站要多少
- html+css网页制作成品 web网页制作成品css+javascrip
- html网页制作案例 html网页设计案例
- html+css网页制作成品 web网页制作成品css+javascrip
- 个人网站模板 个人网站模板HTML