圆环百分比

(function(a) {
    a.fn.circliful = function(b, d) {
        var c = a.extend({
            fgcolor: "#556b2f",
            bgcolor: "#eee",
            fill: false,
            width: 15,
            dimension: 200,
            fontsize: 15,
            percent: 50,
            animationstep: 1,
            iconsize: "20px",
            iconcolor: "#999",
            border: "default",
            complete: null
        }, b);
        return this.each(function() {
            var w = ["fgcolor", "bgcolor", "fill", "width", "dimension", "fontsize", "animationstep", "endPercent", "icon", "iconcolor", "iconsize", "border"];
            var f = {};
            var F = "";
            var n = 0;
            var t = a(this);
            var A = false;
            var v, G;
            t.addClass("circliful");
            e(t);
            if (t.data("text") != undefined) {
                v = t.data("text");
                if (t.data("icon") != undefined) {
                    F = a("<i></i>").addClass("fa " + a(this).data("icon")).css({
                        color: f.iconcolor,
                        "font-size": f.iconsize
                    })
                }
                if (t.data("type") != undefined) {
                    j = a(this).data("type");
                    if (j == "half") {
                        s(t, "circle-text-half", (f.dimension / 1.45))
                    } else {
                        s(t, "circle-text", f.dimension)
                    }
                } else {
                    s(t, "circle-text", f.dimension)
                }
            }
            if (a(this).data("total") != undefined && a(this).data("part") != undefined) {
                var I = a(this).data("total") / 100;
                percent = ((a(this).data("part") / I) / 100).toFixed(3);
                n = (a(this).data("part") / I).toFixed(3)
            } else {
                if (a(this).data("percent") != undefined) {
                    percent = a(this).data("percent") / 100;
                    n = a(this).data("percent")
                } else {
                    percent = c.percent / 100
                }
            }
            if (a(this).data("info") != undefined) {
                G = a(this).data("info");
                if (a(this).data("type") != undefined) {
                    j = a(this).data("type");
                    if (j == "half") {
                        D(t, 0.9)
                    } else {
                        D(t, 1.25)
                    }
                } else {
                    D(t, 1.25)
                }
            }
            a(this).width(f.dimension + "px");
            var i = a("<canvas></canvas>").attr({
                width: f.dimension,
                height: f.dimension
            }).appendTo(a(this)).get(0);
            var g = i.getContext("2d");
            var r = i.width / 2;
            var q = i.height / 2;
            var C = f.percent * 360;
            var H = C * (Math.PI / 180);
            var l = i.width / 2.5;
            var B = 2.3 * Math.PI;
            var z = 0;
            var E = false;
            var o = f.animationstep === 0 ? n : 0;
            var p = Math.max(f.animationstep, 0);
            var u = Math.PI * 2;
            var h = Math.PI / 2;
            var j = "";
            var k = true;
            if (a(this).data("type") != undefined) {
                j = a(this).data("type");
                if (j == "half") {
                    B = 2 * Math.PI;
                    z = 3.13;
                    u = Math.PI * 1;
                    h = Math.PI / 0.996
                }
            }

            function s(J, x, y) {
                a("<span></span>").appendTo(J).addClass(x).text(v).prepend(F).css({
                    "line-height": y + "px",
                    "font-size": f.fontsize + "px"
                })
            }

            function D(y, x) {
                a("<span></span>").appendTo(y).addClass("circle-info-half").css("line-height", (f.dimension * x) + "px")
            }

            function e(x) {
                a.each(w, function(y, J) {
                    if (x.data(J) != undefined) {
                        f[J] = x.data(J)
                    } else {
                        f[J] = a(c).attr(J)
                    }
                    if (J == "fill" && x.data("fill") != undefined) {
                        A = true
                    }
                })
            }

            function m(x) {
                g.clearRect(0, 0, i.width, i.height);
                g.beginPath();
                g.arc(r, q, l, z, B, false);
                g.lineWidth = f.width + 1;
                g.strokeStyle = f.bgcolor;
                g.stroke();
                if (A) {
                    g.fillStyle = f.fill;
                    g.fill()
                }
                g.beginPath();
                g.arc(r, q, l, -(h), ((u) * x) - h, false);
                if (f.border == "outline") {
                    g.lineWidth = f.width + 13
                } else {
                    if (f.border == "inline") {
                        g.lineWidth = f.width - 13
                    }
                }
                g.strokeStyle = f.fgcolor;
                g.stroke();
                if (o < n) {
                    o += p;
                    requestAnimationFrame(function() {
                        m(Math.min(o, n) / 100)
                    }, t)
                }
                if (o == n && k && typeof(b) != "undefined") {
                    if (a.isFunction(b.complete)) {
                        b.complete();
                        k = false
                    }
                }
            }
            m(o / 100)
        })
    }
}(jQuery));
<!DOCTYPE HTML>
<html>

    <head>
        <meta charset="utf-8">
        <title>演示:jQuery圆形统计图(百分比)</title>
        <script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
        <script type="text/javascript" src="js/jquery.circliful.min.js"></script>
        <style>
            .demo {
                width: 600px;
                min-height: 500px;
                float: left;
                border: 1px solid red;
            }

            .demo div {
                float: left;
                width: 300px;
                margin: 20px;
                color: red;
            }

            .demo p {
                line-height: 42px;
                font-size: 16px
            }

            .circliful {
                position: relative;
            }

            .circle-text,
            .circle-info,
            .circle-text-half,
            .circle-info-half {
                width: 100%;
                position: absolute;
                text-align: center;
                display: inline-block;
            }

            .circle-info,
            .circle-info-half {
                color: #999;
            }

            .circliful .fa {
                margin: -10px 3px 0 3px;
                position: relative;
                bottom: 4px;
            }
        </style>

        <script>
            $(function() {
                $('#myStat').circliful();
                $('#myStat2').circliful();
                $('#myStat3').circliful();
                $('#myStat4').circliful();
                setInterval(function(){

                },50);
            });
        </script>
    </head>

    <body>
        <textarea style="width: 680px;height: 260px;resize: none;float: left;">
data-dimension  圆形图的宽度和高度px 250
data-text   显示在圆圈内侧的文字内容    empty
data-info   显示在data-text下的说明信息  empty
data-width  圆圈的厚度px 15
data-fontsize   圈内文字大小px    15
data-percent    圆圈统计百分比%,1-100  50
data-fgcolor    圆圈的前景色  #556b2f
data-bgcolor    圆圈的背景色  #eeeeee
data-fill   圆形的填充背景色    empty
data-type   圆形统计类型,可以是”half”或”full” full
data-total  数据总量,和data-part配合使用 empty
data-part   数据量,与data-total配合使用 empty
data-border 圆形样式,可以加边框,如inline或outline  empty
data-icon   Fontawesome图标样式,详情可参照:Fontawesome Website – Icons   empty
data-icon-size  图标大小    empty
data-icon-color 图标颜色
        </textarea>
        <div id="main">

            <div class="demo">
                <div id="myStat" data-dimension="250" data-text="35%" data-info="New Clients" data-width="30" data-fontsize="38" data-percent="100" data-fgcolor="#61a9dc" data-bgcolor="#eee" data-fill="#ddd"></div>
                <div id="myStat2" data-dimension="250" data-text="35%" data-info="New Clients" data-width="30" data-fontsize="38" data-percent="35" data-fgcolor="#7ea568" data-bgcolor="#eee" data-type="half" data-fill="#ddd"></div>
                <div id="myStat3" data-dimension="250" data-text="35%" data-info="New Clients" data-width="30" data-fontsize="38" data-percent="35" data-fgcolor="#7ea568" data-bgcolor="#eee" data-type="half" data-icon="fa-task"></div>
                <div id="myStat4" data-dimension="250" data-text="65%" data-info="New Clients" data-width="10" data-fontsize="38" data-percent="65" data-fgcolor="black" data-bgcolor="red"></div>

            </div>

        </div>

    </body>

</html>
时间: 2023-09-28 21:40:37

圆环百分比的相关文章

WPS怎么制作圆环百分比图表?

  平常我们都是使用一些饼图或者三体位图但是还是没有这个高大上的百分比的圆环图好看,来看看. 1.首先选择已到和未到数据,点击插入--二维饼图的圆环图,这里记得一定要是选中数据只选择数据的话不会产生文字的. 2.修改上面的文字直接点击上面的文字,双击进入修改就会出现边框一样的我们就可以修改一下,这个时候改成我们需要的文字就可以了. 3.同样的点击一下刚才插入的圆环图,我们就可以看到右边有属性栏,这个时候我们把图表填充一下选择纯色填充,点击右上角那个箭头指的地方选择蓝色. 4.这个时候我们在把线条

Android自定义View之酷炫圆环(二)_Android

先看下最终的效果 静态: 动态: 一.开始实现 新建一个DoughnutProgress继承View public class DoughnutProgress extends View { } 先给出一些常量.变量以及公共方法的代码,方便理解后面的代码     private static final int DEFAULT_MIN_WIDTH = 400; //View默认最小宽度 private static final int RED = 230, GREEN = 85, BLUE =

Android View高仿猎豹清理大师自定义开口圆环比例进度

一.概述 Android下的 猎豹清理大师的内存开口圆环比例进度 挺不错的,于是反编译了猎豹清理大师的app,原来是有两张图,于是想了一下思路,利用上下两张图,旋转上面张图以及使用 PorterDuffXfermode  来设置合适的渲染模式,就可以达到效果.下面看看咱们的效果吧 二.效果图 三.Xfermode渲染模式简介: xfermode影响在Canvas已经有的图像上绘制新的颜色的方式 * 正常的情况下,在图像上绘制新的形状,如果新的Paint不是透明的,那么会遮挡下面的颜色. * 如果

Android自定义View之酷炫圆环(二)

先看下最终的效果 静态: 动态: 一.开始实现 新建一个DoughnutProgress继承View public class DoughnutProgress extends View { } 先给出一些常量.变量以及公共方法的代码,方便理解后面的代码 private static final int DEFAULT_MIN_WIDTH = 400; //View默认最小宽度 private static final int RED = 230, GREEN = 85, BLUE = 35;

Android自定义View之酷炫数字圆环

先看下最终的效果 一.开始实现 新建一个DoughnutView继承View public class DoughnutView extends View { } 先重写onMeasure方法. /** * 当布局为wrap_content时设置默认长宽 * * @param widthMeasureSpec * @param heightMeasureSpec */ @Override protected void onMeasure(int widthMeasureSpec, int hei

求按百分比抽取数据算法

问题描述 求按百分比抽取数据算法 我有个需求 要求用百分比抽取数据以达到数据审阅的目的 我做了一个简单的程序但达不到要求 <?php header('Content-Type: text/html; charset=utf-8'); //抽取算法 for($kou=1;$kou<=100;$kou++){ $kou_count=0; for($i=1;$i<=100;$i++){ $key=($i)%(100/$kou); if( intval( $key ) == 0){ //echo

Excel2010图表半圆百分比进度图

  半圆百分比进度图,是指表达工作进度完成百分比比例的特殊饼图,案例包括数据模型建立.格式设置.添加数据标签等内容.下面,小编就来带领大家一起制作一份半圆百分比进度图. 1.创建图表,必须要有数据,我们先启动Excel2010,简单的输入一些数据,包括业绩目标,未完成和完成的百分比,各个月份的业绩情况. 2.我们看到上方有完成以及未完成的单元格,是用来计算比例的,先在已完成所属的单元格输入公式:=sum(B5:B16)/A2,意思是计算B5:B16区域的数据之和,然后除以A2单元格数值,也就是业

安卓 电池-安卓怎样获取电池容量?是多少mAh不是百分比

问题描述 安卓怎样获取电池容量?是多少mAh不是百分比 安卓怎样获取电池容量?是多少mAh不是百分比,求大神指导...................... 解决方案 http://xdwangiflytek.iteye.com/blog/1707106http://233.io/article/1029900.html 解决方案二: http://blog.csdn.net/liushuaikobe/article/details/7416431 解决方案三: http://blog.csdn

Photoshop设计简洁的彩色圆环LOGO教程

  Photoshop设计简洁的彩色圆环LOGO教程          本教程主要使用Photoshop设计简洁的彩色圆环LOGO教程,无论是ICON设计,还是logo都会用到这种发方法,非常简单而实用,有什么不懂的地方可以下载源文件,喜欢的朋友让我们一起来学习吧. 教程源文件:时尚炫彩的LOGO设计PS教程源文件 分类: PS入门教程