返回介绍

pie-static

发布于 2023-08-19 19:14:40 字数 2911 浏览 0 评论 0 收藏 0

transform

pie-static

<style>
    @keyframes spin {
        to {
            transform: rotate(.5turn)
        }
    }

    @keyframes bg {
        50% {
            background: grey;
        }
    }

    .pie {
        position: relative;
        width: 200px;
        line-height: 200px;
        border-radius: 50%;
        background: yellowgreen;
        background-image: linear-gradient(to right, transparent 50%, grey 0);
        color: transparent;
        text-align: center;
    }

    .pie::before {
        content: "";
        position: absolute;
        display: block;
        top: 0;
        left: 50%;
        height: 100%;
        width: 50%;
        border-radius: 0 100% 100% 0/ 50%; /* make pseudo to be a half circle*/
        background-color: inherit;
        transform-origin: left;/* 0 50% */
        animation: spin 50s linear infinite,
        bg 100s step-end infinite;
        animation-play-state: paused;
        animation-delay: inherit;
    }

</style>

<div class="pie" style="animation-delay: -60s">60%</div>

svg

<style>
    @keyframes fill-up {
        to {
            stroke-dasharray: 100 100;
        }
    }

    circle {
        fill: yellowgreen;
        stroke: #655;
        stroke-width: 32;
        /*stroke-dasharray: 0 100;*/
        /*animation: fill-up 5s linear infinite;*/
    }

    svg {
        width: 100px;
        height: 100px;
        transform: rotate(-90deg);
        background: yellowgreen; /* fill background*/
        border-radius: 50%;
    }

</style>

<div class="pie">20%</div>

<script>
    function $$(selector, context) {
        context = context || document;
        var elements = context.querySelectorAll(selector);
        return Array.prototype.slice.call(elements);
    }

    $$('.pie').forEach(function (pie) {
        var p = parseFloat(pie.textContent);
        var NS = "http://www.w3.org/2000/svg";
        var svg = document.createElementNS(NS, "svg");
        var circle = document.createElementNS(NS, "circle");
        var title = document.createElementNS(NS, "title");
        circle.setAttribute("r", 16);
        circle.setAttribute("cx", 16);
        circle.setAttribute("cy", 16);
        circle.setAttribute("stroke-dasharray", p + " 100");
        svg.setAttribute("viewBox", "0 0 32 32");
        title.textContent = pie.textContent;
        pie.textContent = '';
        svg.appendChild(title);
        svg.appendChild(circle);
        pie.appendChild(svg);
    });
</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文