SVG实现圆环loading进度效果实例页面

本文介绍如何使用SVG元素创建动态圆环加载进度效果,并结合滑块实现数字跳动显示功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SVG实现圆环loading进度效果实例页面

<svg width="440" height="440" viewbox="0 0 440 440">
    <circle cx="220" cy="220" r="170" stroke-width="50" stroke="#D1D3D7" fill="none"></circle>
    <circle cx="220" cy="220" r="170" stroke-width="50" stroke="#00A5E0" fill="none" transform="matrix(0,-1,1,0,0,440)" stroke-dasharray="0 1069"></circle>
</svg>
<p>拖我:<input id="range" type="range" min="0" max="100" value="0" style="width:300px;"></p>

<script>
    if (window.addEventListener) {
        var range = document.querySelector("#range"), circle = document.querySelectorAll("circle")[1];
        if (range && circle) {
            range.addEventListener("change", function() {
                var percent = this.value / 100, perimeter = Math.PI * 2 * 170;
                circle.setAttribute('stroke-dasharray', perimeter * percent + " " + perimeter * (1- percent));
            });
        }
    }
</script>

数字跳动

<style>
    .num {
        width: 40px; height: 40px;
        object-fit: none;
        object-position: 0 0;
        transition: object-position .25s;
    }
    .num0 {  }
    .num1 { object-position: 0 -40px; }
    .num2 { object-position: 0 -80px; }
    .num3 { object-position: 0 -120px; }
    .num4 { object-position: 0 -160px; }
    .num5 { object-position: 0 -200px; }
    .num6 { object-position: 0 -240px; }
    .num7 { object-position: 0 -280px; }
    .num8 { object-position: 0 -320px; }
    .num9 { object-position: 0 -360px; }
</style>

<body>
    <div class="demo">
       <p><strong>显示的数字是(100~999):<input type="number" value="0" min="0" max="999"></strong></p>
       <img src="http://www.zhangxinxu.com/study/201503/icons-ol.png" class="num num0">
       <img src="http://www.zhangxinxu.com/study/201503/icons-ol.png" class="num num0">
       <img src="http://www.zhangxinxu.com/study/201503/icons-ol.png" class="num num0">
   </div>
</body>

<script>
    if (window.addEventListener) {
        var eleNums = document.querySelectorAll(".num");
        document.querySelector(".demo input").addEventListener("change", function() {
            var value = this.value;
            if (!value ) { value =0;}
            this.value = value;
            var deg = this.value.split("");
            switch(deg.length){
                case 1:deg.forEach(function(x, y) {
                    eleNums[0].className="num num"+0;
                    eleNums[1].className="num num"+0;
                    eleNums[y+2].className = "num num" + x;
                });
                break;
                case 2: deg.forEach(function(x, y) {
                    eleNums[0].className="num num"+0;
                    eleNums[y+1].className = "num num" + x;
                });
                break;
                case 3:deg.forEach(function(x, y) {
                    eleNums[y].className = "num num" + x;
                });
            }
        });
    }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值