• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SVG实现多彩圆环倒计时效果的示例代码

    圆环倒计时我们经常见到,实现的方法也有很多种。但是本文将介绍一种全新的实现方式,使用SVG来实现倒计时功能。

    本文主要用到了SVG的stroke-dasharray和stroke-dashoffset特性。下图是倒计时运行效果:

    SVG倒计时案例

    下面说说相关的实现代码。css实现代码如下:

    svg {
        transform: rotate(-0.05deg);
    }
    circle {
        transition: stroke-dasharray .2s;
    }
    .time-count-x {
        line-height: 1.5;
        position: relative;
    }
    .time-second {
        position: absolute;
        top: 50%; left: 0; right: 0;
        margin-top: -.75em;
        text-align: center;
        font-size: 100px;
    }
    

    相关html代码如下:

    <div id="timeCountX" class="time-count-x">
        <svg width="440" height="440" viewBox="0 0 440 440" class="center">
            <defs>
                <linearGradient x1="1" y1="0" x2="0" y2="0" id="gradient1">
                    <stop offset="0%" stop-color="#e52c5c"></stop>
                    <stop offset="100%" stop-color="#ab5aea"></stop>
                </linearGradient>
               <linearGradient x1="1" y1="0" x2="0" y2="0" id="gradient2">
                    <stop offset="0%" stop-color="#4352f3"></stop>
                    <stop offset="100%" stop-color="#ab5aea"></stop>
                </linearGradient>
            </defs>
            <g transform="matrix(0,-1,1,0,0,440)">
                <circle cx="220" cy="220" r="170" stroke-width="50" stroke="#f0f1f5" fill="none" stroke-dasharray="1069 1069"></circle>
                <circle cx="220" cy="220" r="170" stroke-width="50" stroke="url('#gradient1')" fill="none" stroke-dasharray="1069 1069"></circle>
                <circle cx="220" cy="220" r="170" stroke-width="50" stroke="url('#gradient2')" fill="none" stroke-dasharray="534.5 1069"></circle>
            </g>
        </svg>
        <span id="timeSecond" class="time-second"></span>
    </div>
    

    最后是相关JavaScript代码:

    var eleCircles=document.querySelectorAll("#timeCountX circle");
    var eleTimeSec=document.getElementById("timeSecond");
    var perimeter=Math.PI*2*170;
    var circleInit=function(){
        if(eleCircles[1]){
            eleCircles[1].setAttribute("stroke-dasharray","1069 1069")
        }
        if(eleCircles[2]){
            eleCircles[2].setAttribute("stroke-dasharray",perimeter/2+" 1069")
        }
        eleTimeSec.innerHTML=""
    };
    var timerTimeCount=null;
    var fnTimeCount=function(b){
        if(timerTimeCount){
            return
        }
        var b=b||10;
        var a=function(){
            var c=b/10;
            if(eleCircles[1]){
                eleCircles[1].setAttribute("stroke-dasharray",perimeter*c+" 1069")
            }
            if(eleCircles[2]&&b<=5){
                eleCircles[2].setAttribute("stroke-dasharray",perimeter*c+" 1069")
            }
            if(eleTimeSec){
                eleTimeSec.innerHTML=b
            }
            b--;
            if(b<0){
                clearInterval(timerTimeCount);
                timerTimeCount=null;
                alert("时间到!");
                circleInit()
            }
        };
        a();
        timerTimeCount=setInterval(a,1000)
    };
    fnTimeCount();
    

    整个案例的代码非常少,有喜欢的朋友可以将代码保存到html中,运行一下,体验体验实际效果。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    上一篇:HTML5响应式(自适应)网页设计的实现
    下一篇:HTML5打开手机扫码功能及优缺点
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SVG实现多彩圆环倒计时效果的示例代码 SVG,实现,多彩,圆环,倒计时,