利用CSS和jquery 实现圆环统计图

 
<!DOCTYPE html>

<html>
<head>
    <meta charset="UTF-8">
    <title>圆环统计图</title>
    <script src="js/jquery-1.7.1.min.js"></script>
    <style>
        .circlewrap {
            position: relative;
            display: inline-block;
        }

        .hugecircle {
            width: 8rem;
            height: 8rem;
            box-shadow: 0px 0px 12px #ccc;
            border-radius: 50%;
        }


        .circlebg,
        .leftcircle,
        .rightcircle,
        .circlebgtop,
        .number {
            position: absolute;
            left: 0;
            right: 0;
            top: 0;
            bottom: 0;
            margin: auto;
            z-index: 20;
            border-radius: 50%;
        }

        .circlebg {
            width: 100%;
            height: 100%;
            background-color: #e6e6e6;
        }

        .circlebgtop {
            z-index: 30;
            background-color: #e6e6e6;
        }

        .leftcircle,
        .rightcircle,
        .circletop {
            height: 100%;
            width: 100%;
        }

        .hugecircle .leftcircle,
        .hugecircle .circlebgtop,
        .hugecircle .rightcircle {
            clip: rect(0, 4rem, 8rem, 0);
        }

        .number {
            z-index: 40;
            background-color: #fff;
            text-align: center;
        }


        .mt12 {
            margin-top: 0.75rem;
        }

        .hugecircle .number {
            height: 7rem;
            width: 7rem;
            font-size: 1.6rem;
            line-height: 4.5;
        }


        .circle {
            -webkit-transform-origin: center;
        }
    </style>
</head>


<body>

<div class="circlewrap hugecircle">
    <div class="circlebg"></div>
    <div class="circlebgtop"></div>
    <div class="leftcircle circle"></div>
    <div class="rightcircle"></div>
    <div class="number " data-val="0.5">
        50%
    </div>
</div>


<script>
    /*画圆弧统计图*/
    /*调用方式,多种颜色 $(select).drawCircle(true);*/
    /*调用方式,单种颜色 $(select).drawCircle(false,'green');*/
    $.fn.drawCircle = function(i, c) {
        var multicolor = i;
        var color = c
        return $(this).each(function() {
            $(this).find('.circlebgtop').css({
                'opacity': '1'
            })
            $(this).find('.rightcircle').css({
                '-webkit-transform': 'rotate(0)',
                'transform': 'rotate(0deg)',
            })
            $(this).find('.leftcircle').css({
                '-webkit-transform': 'rotate(0)',
                'transform': 'rotate(0deg)',
            })
            var val = $(this).find('.number').attr('data-val');
            if(val > 0.50000 || val == 1) {
                var deg = 360 * val + 'deg';
                $(this).find('.rightcircle').css({
                    '-webkit-transform': 'rotate(180)',
                    'transform': 'rotate(180deg)',
                    '-webkit-transition-duration':'1s',
                    'transition-duration':'1s',
                    '-webkit-transition-timing-function': 'linear',
                    '-webkit-animation-fill-mode': 'forwards'
                });
                $(this).find('.circlebgtop').css({
                    '-webkit-transition-duration':'1s',
                    'transition-duration':'1s',
                    '-webkit-transition-delay': '0.5s',
                    'opacity': '0'
                })
                $(this).find('.leftcircle').css({
                    '-webkit-transition-duration':'1s',
                    'transition-duration':'1s',
                    '-webkit-transition-timing-function': 'linear',
                    '-webkit-animation-fill-mode': 'forwards',
                    '-webkit-transform': 'rotate(' + deg + ')',
                    'transform': 'rotate(' + deg + ')'
                })
            } else if(val < 0.5000 || val == 0.50000) {
//console.log(360*val);
                var deg = 360 * val + 'deg';
                $(this).find('.rightcircle').css({
                    '-webkit-transform': 'rotate(' + deg + ')',
                    'transform': 'rotate(' + deg + ')',
                    '-webkit-transition-duration':'1s',
                    'transition-duration':'1s',
                    '-webkit-transition-timing-function': 'linear',
                    '-webkit-animation-fill-mode': 'forwards'
                });
            }
            if(multicolor) {
                if(val == 0) {
                    $(this).find('.number').css({
                        'color': '#999'
                    })
                } else if(val > 0 && val < 0.5999) {
                    $(this).find('.rightcircle').css({
                        'background-color': '#ff7068'
                    });
                    $(this).find('.leftcircle').css({
                        'background-color': '#ff7068'
                    });
                    $(this).find('.number').css({
                        'color': '#ff7068'
                    })
                } else if(val > 0.5999 && val < 0.6999) {
                    $(this).find('.rightcircle').css({
                        'background-color': '#ff9900'
                    });
                    $(this).find('.leftcircle').css({
                        'background-color': '#ff9900'
                    });
                    $(this).find('.number').css({
                        'color': '#ff9900'
                    })
                } else if(val > 0.6999 && val < 0.8499) {
                    $(this).find('.rightcircle').css({
                        'background-color': '#4fc1e9'
                    });


                    $(this).find('.leftcircle').css({
                        'background-color': '#4fc1e9'


                    });
                    $(this).find('.number').css({
                        'color': '#4fc1e9'
                    })
                } else if(val > 0.8499) {
                    $(this).find('.rightcircle').css({
                        'background-color': '#48cfad'
                    });
                    $(this).find('.leftcircle').css({
                        'background-color': '#48cfad'
                    });
                    $(this).find('.number').css({
                        'color': '#48cfad'
                    })
                } else if(val == null || val == '') {
                    $(this).find('.number').css({
                        'background-color': '#e6e6e6',
                        'color': '#aaa'
                    }).text('--')
                }
            } else {
                $(this).find('.rightcircle').css({
                    'background-color': color
                });
                $(this).find('.leftcircle').css({
                    'background-color': color
                });
                $(this).find('.number').css({
                    'color': color
                });
                $(this).find('.number').css({
                    'color': color
                });
            }


        })
    }
    setTimeout(function(){
        $('.hugecircle').drawCircle(true);
    },50)

</script>
</body>


</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值