svg+css+js实现数据流量流动示意图动画效果代码
代码语言:html
所属分类:动画
代码描述:svg+css+js实现数据流量流动示意图动画效果代码
代码标签: svg css js 数据 流量 流动 示意图 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/normalize.5.0.css"> <style> @charset "UTF-8"; body { width: 100vw; height: 100vh; display: flex; justify-content: center; align-items: center; } .container { z-index: 0; position: relative; display: flex; align-items: center; width: 1080px; height: 400px; overflow: hidden; background: url("//repo.bfw.wiki/bfwrepo/images/xiangce/OJYTLba8CQweWIq.png") no-repeat; background-size: cover; } .container .logos { display: flex; align-items: center; width: 400px; height: 320px; overflow: hidden; border-radius: 0 200px 200px 0; background: radial-gradient(166.55% 283.86% at -39.88% 50%, rgba(255, 255, 255, 0) 65.64%, rgba(0, 238, 255, 0.48) 99%); } .container .logos .logos-wrap img { height: 40px; } .container .logos .logos-wrap .box { display: flex; width: 100%; justify-content: space-around; margin-bottom: 30px; } .container .logos .logos-wrap .box:last-child { margin: unset; } .container .shenzhi-logo { position: relative; left: -60px; display: flex; justify-content: center; align-items: center; width: 100px; height: 100px; border-radius: 100px; box-shadow: 0px 0px 40px rgba(164, 168, 197, 0.24); background-color: white; } .container .shenzhi-logo img { z-index: 99; width: 60px; } .container .account { position: relative; left: 90px; } .container .lines { position: absolute; width: 482px; height: 100%; z-index: -1; left: 423px; top: 107px; } .container .lines .line-1 svg { position: absolute; } .container .lines .line-1 svg:nth-of-type(3) { position: absolute; right: 0; top: 1px; } .container .lines .line-2 { position: absolute; top: -49px; } .container .lines .line-2 svg { position: absolute; } .container .lines .line-3 { position: absolute; top: 40px; } .container .lines .line-3 svg { position: absolute; } .container .lines .line-3 svg:nth-of-type(3) { position: relative; right: -89%; top: 87px; } .results { position: absolute; right: 150px; z-index: 99; } .results .icon { position: relative; display: flex; justify-content: center; align-items: center; width: 52px; height: 52px; background: #ffffff; box-shadow: 0px 8px 40px rgba(164, 168, 197, 0.4); border-radius: 59px; margin-bottom: 38px; } .results .icon::after { position: absolute; right: -100%; content: ""; display: block; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-weight: 500; font-size: 16px; line-height: 16px; color: #3b426b; } .results .icon:last-child { margin-bottom: unset; } .results .icon:nth-of-type(1)::after { content: "下单"; } .results .icon:nth-of-type(2)::after { content: "领劵"; } .results .icon:nth-of-type(3)::after { content: "发帖"; } .results .icon:nth-of-type(4)::after { content: "个人中心"; right: -83px; } #line-1 { stroke-dasharray: 60, 600; stroke-dashoffset: 24; -webkit-animation: line1 3s cubic-bezier(0.77, 0, 0.175, 1) forwards infinite; animation: line1 3s cubic-bezier(0.77, 0, 0.175, 1) forwards infinite; } @-webkit-keyframes line1 { to { stroke-dashoffset: -620; } } @keyframes line1 { to { stroke-dashoffset: -620; } } #line-2 { stroke-dasharray: 60, 600; stroke-dashoffset: 24; -webkit-animation: line2 3s cubic-bezier(0.77, 0, 0.175, 1) forwards infinite 0.6s; animation: line2 3s cubic-bezier(0.77, 0, 0.175, 1) forwards infinite 0.6s; } @-webkit-keyframes line2 { to { stroke-dashoffset: -620; } } @keyframes line2 { to { stroke-dashoffset: -620; } } #line-3 { stroke-dasharray: 60, 600; stroke-dashoffset: 24; -webkit-animation: line3 3s cubic-bezier(0.77, 0, 0.175, 1) forwards infinite 0.2s; animation: line3 3s cubic-bezier(0.77, 0, 0.175, 1) forwards infinite 0.2s; } @-webkit-keyframes line3 { to { stroke-dashoffset: -620; } } @keyframes line3 { to { stroke-dashoffset: -620; } } .container .shenzhi-logo { -webkit-animation: ripple 0.8s linear infinite; animation: ripple 0.8s linear infinite; } @-webkit-keyframes ripple { 0% { box-shadow: 0 0 0 0 rgba(71, 198, 230, 0), 0 0 0 40px rgba(71, 198, 230, 0.18); } 100% { box-shadow: 0 0 0 40px rgba(71, 198, 230, 0.18), 0 0 0 60px rgba(71, 198, 230, 0); } } @keyframes ripple { 0% { box-shadow: 0 0 0 0 rgba(71, 198, 230, 0), 0 0 0 40px rgba(71, 198, 230, 0.18); } 100% { box-shadow: 0 0 0 40px rgba(71, 198, 230, 0.18), 0 0 0 60px rgba(71, 198, 230, 0); } } @-webkit-keyframes scale { 50% { transform: scale(1.15); } 0%, 100% { transform: scale(1); } } @keyframes scale { 50% { transform: scale(1.15); } 0%, 100% { transform: scale(1); } } .container .shenzhi-logo::after { z-index: 0; border-radius: 100%; position: absolute; content: ""; display: block; width: 100%; height: 100%; box-shadow: 0px 0px 40px rgba(164, 168, 197, 0.24); background-color: white; transform: scale(1); -webkit-animation: scale 2.5s linear infinite; animation: scale 2.5s linear infinite; } .logos-1 { transition: all 0.2s ease; position: relative; margin-right: 20px; will-change: transform; -webkit-animation: logosMoving 10s linear infinite both 1s; animation: logosMoving 10s linear infinite both 1s; } @-webkit-keyframes logosMoving { to { transform: translateX(105%); } } @keyframes logosMoving { to { transform: translateX(105%); } } .logos-2 { transition: all 0.2s ease; will-change: transform; -webkit-animation: logosMoving 10s linear infinite both 1s; animation: logosMoving 10s linear infinite both 1s; } .logos-wrap { position: relative; left: -100%; } .logoShow { -webkit-animation: logoShow 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards 0.2s; animation: logoShow 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards 0.2s; } @-webkit-keyframes logoShow { to { opacity: 1; transform: scale3d(1, 1, 1); filter: blur(0); } } @keyframes logoShow { to { opacity: 1; transform: scale3d(1, 1, 1); filter: blur(0); } } .logos-wrap img { opacity: 0; transform: scale3d(0, 0, 0); filter: blur(20px); transition: all 0.3s ease-out; margin: 4px 14px; will-change: transform; } .rule { position: absolute; z-index: 99; right: 180px; } .rule img { z-index: 99; width: 94px; top: 4px; right: -67px; } .rule div:nth-of-type(1) { position: relative; right: 100px; top: -40px; } .rule div:nth-of-type(1)::after { content: ""; display: block; width: 40px; height: 40px; opacity: 0.5; border-radius: 100%; background: radial-gradient(50% 50% at 50% 50%, #ffffff 0%, #f88787 100%); position: absolute; transform: scale(0); -webkit-animation: popShow3 4s cubic-bezier(0.5, 1, 0.89, 1) infinite; animation: popShow3 4s cubic-bezier(0.5, 1, 0.89, 1) infinite; } @-webkit-keyframes popShow3 { 80% { opacity: 0; transform: scale(0); } 91% { opacity: 0.3; } 100% { opacity: 0; transform: scale(2.4); } } @keyframes popShow3 { 80% { opacity: 0; transform: scale(0); } 91% { opacity: 0.3; } 100% { opacity: 0; transform: scale(2.4); } } .rule div:nth-of-type(1)::before { content: ""; display: block; width: 40px; height: 40px; opacity: 0.5; border-radius: 100%; background: radial-gradient(50% 50% at 50% 50%, #ffffff 0%, #f88787 100%); position: absolute; transform: scale(0); -webkit-animation: popShow 4s cubic-bezier(0.5, 1, 0.89, 1) infinite 0.2s; animation: popShow 4s cubic-bezier(0.5, 1, 0.89, 1) infinite 0.2s; } @-webkit-keyframes popShow { 80% { opacity: 0; transform: scale(0); } 91% { opacity: 0.5; } 100% { opacity: 0; transform: scale(2); } } @keyframes popShow { 80% { opacity: 0; transform: scale(0); } 91% { opacity: 0.5; } 100% { opacity: 0; transform: scale(2); } } .rule div:nth-of-type(2) { position: relative; right: 125px; top: -90px; } .rule div:nth-of-type(2)::after { content: ""; display: block; width: 40px; height: 40px; opacity: 0.5; border-radius: 100%; background: radial-gradient(50% 50% at 50% 50%, #ffffff 0%, #2e2e2e 100%); position: absolute; transform: scale(0); -webkit-animation: popShow2 4s cubic-bezier(0.5, 1, 0.89, 1) infinite 0.35s; animation: popShow2 4s cubic-bezier(0.5, 1, 0.89, 1) infinite 0.35s; } @-webkit-keyframes popShow2 { 80% { opacity: 0; transform: scale(0); } 91% { opacity: 0.1; } 100% { opacity: 0; transform: scale(2.4); } } @keyframes popShow2 { 80% { opacity: 0; transform: scale(0); } 91% { opacity: 0.1; } 100% { opacity: 0; transform: scale(2.4); } } .rule div:nth-of-type(2)::before { content: ""; display: block; width: 40px; height: 40px; opacity: 0.5; border-radius: 100%; background: radial-gradient(50% 50% at 50% 50%, #ffffff 0%, #2e2e2e 100%); position: absolute; transform: scale(0); -webkit-animation: popShow 4s cubic-bezier(0.5, 1, 0.89, 1) infinite 0.6s; animation: popShow 4s cubic-bezier(0.5, 1, 0.89, 1) infinite 0.6s; } @keyframes popShow { 80% { opacity: 0; transform: scale(0); } 91% { opacity: 0.4; } 100% { opacity: 0; transform: scale(2); } } .rule-2 { position: absolute; } .rule-1 { position: absolute; } .box-1, .box-3 { left: -20%; position: relative; } .dr { position: absolute; bottom: 16px; right: 16px; width: 100px; } </style> </head> <body> <!-- partial:index.partial.html --> <div class="container"> <div class="logos"> <div class="logos-wrap logos-1"> <div class="box-1 box"> <img src="//repo.bfw.wiki/bfwrepo/images/xiangce/PMUofLmJFgt5HEY.png" alt="" class="logoShow" /> <img src="//repo.bfw.wiki/bfwrepo/images.........完整代码请登录后点击上方下载按钮下载查看
网友评论0