zoukankan      html  css  js  c++  java
  • 5年前端经验小伙伴教你纯css3实现饼状图

    有一些网页中,有时候会碰到饼状图的需求,比如统计图表,进度指示器,定时器等,实现方式也是各种各样,现在也有不少现成的js库,可以直接拿来使用,方便很多。这里笔者为大家演示一种纯css实现饼状图效果的方法。

    资源网站大全 https://55wd.com

    <div class="pie"></div>
    .pie {
         100px;
        height: 100px;
        border-radius: 50%;
        background: yellowgreen;
        background-image: linear-gradient(to right, transparent 50%, #655 0);
    }
    
    .pie::before {
        content: '';
        display: block;
        margin-left: 50%;
        height: 100%;
        border-radius: 0 100% 100% 0/50%;
        background-color: inherit;
        transform-origin: left;
        transform: rotate(.2turn);
    }

    实现效果如图所示: 

    改变rotate的角度就可以实现不同大小的饼状图效果,但是亲手试验的读者会发现,旋转50%以上并不能呈现出理想的效果,而是会呈现出如下效果: 

    要解决这个问题,改变伪元素的背景色就可以解决,当需要展示的区域大于一半时,改变背景色就OK。 下面笔者展示一个简单的进度指示器示例,读者亲手试验的话,会发现一个不断变化的饼状图效果。

    .pie {
         100px;
        height: 100px;
        border-radius: 50%;
        background: yellowgreen;
        background-image: linear-gradient(to right, transparent 50%, #655 0);
    }
    
    .pie::before {
        content: '';
        display: block;
        margin-left: 50%;
        height: 100%;
        border-radius: 0 100% 100% 0/50%;
        background-color: inherit;
        transform-origin: left;
        animation: spin 3s linear infinite,bg 6s step-end infinite;
    }
    @keyframes spin{
        to{transform: rotate(.5turn);}
    }
    @keyframes bg{
        50%{background: #655;}
    }

    读者最好亲手试验,尝试修改其中的属性,理解其中的意思,只有理解了才能做出更有趣的东西。如果读者对svg感兴趣的话,可以尝试使用svg来实现饼状图,svg实现的效果要更加丰富多彩些。

  • 相关阅读:
    关于网络调试助手
    阿里云之设备连接方法学习
    阿里云学习
    Jquery ThickBox的使用
    推荐几款制作网页滚动动画的 JavaScript 库
    Javascript动态操作CSS总结
    css3动画属性系列之transform细讲scale缩放
    JS函数重载解决方案
    从Java开发者的视角解释JavaScript
    理解JavaScript中的事件路由冒泡过程及委托代理机制
  • 原文地址:https://www.cnblogs.com/ypppt/p/13229393.html
Copyright © 2011-2022 走看看