在線人數滾動的效果

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		*{
			padding: 0;
			margin:0;
		}
		.personcount em {
		    width: 12px;
		    height: 15px;
		    line-height: 15px;
		    color: #71b200;
		    border: 1px solid #e4e4e4;
		    background: #f8f8f8;
		    margin-left: 1px;
		    overflow: hidden;
		    display: inline-block;
		    text-align: center;
		    position: relative
		}
		div {
		    padding-top: 5px;
		    overflow: hidden;
		}
	</style>
	<script src="http://a.dwstatic.com/huya/main/lib/jq_ud_mod_4de7709.js"></script>
	<script>
			(function($) {
			    $.fn.online = function(opt) {
			        var defaults = {
			            type: 1,
			            height: 15
			        };

			        var opts = $.extend(defaults, opt);

			        refreshPersonCount($(this));
			        /**
			         * 隔2秒刷新在線人數
			         */
			        function refreshPersonCount($objs){
			            setInterval(function(){
			                $objs.each(function(){
			                    var online = +($(this).attr('online')||$(this).data('online'));
			                    var min=1,max=99;
			                    var value1 = Math.floor(Math.random() * (max - min + 1)) + min; //取1到99之間的隨機數
			                    if(opts.type==1){
			                        var value2 = Math.floor(Math.random() * 2); //取0到1之間的隨機數
			                        if(value2==0){
			                            online += value1;
			                        }else{
			                            online -= value1;
			                        }
			                    }else{
			                        online += value1;
			                    }
			                    createOnlineHtml($(this), online);
			                });
			            }, 2000);
			        }
			        /**
			         * 組裝在線人數
			         * @param el
			         * @param count
			         */
			        function createOnlineHtml(el, count){
			            var arr = (count+'').split('');
			            var html = [],total=arr.length,len=el.find('em').length;
			            for(var i=0;i<total-len;i++){
			                html.push('<em>');
			                for(var j=0;j<10;j++){
			                    if(j>0){
			                        html.push('<br />');
			                    }
			                    html.push(j);
			                }
			                html.push('</em>');
			            }
			            for(var i=0;i<len-total;i++){
			                el.find('em:eq(0)').remove();
			            }
			            (el.attr('online')?el.attr('online',count):el.attr('data-online',count)).append(html.join(''));
			            for(var i= 0;i<total;i++){
			                el.find('em:eq('+i+')').attr('num',arr[i]);
			            }
			            animateNumber(el.find('em'),0);
			        }
			        /**
			         * 在線人數動畫
			         * @param els
			         * @param idx
			         */
			        function animateNumber(els, idx){
			            if(idx>=els.length)return;
			            var $obj = els.eq(idx);
			            var num = +$obj.attr('num');
			            if(parseInt($obj[0].scrollTop)!=num*opts.height){
			                $obj.animate({'scrollTop':num*opts.height});
			            }
			            setTimeout(function(){
			                idx++;
			                animateNumber(els, idx);
			            },50);
			        }
			    };
			})(jQuery);

	</script>
</head>
<body>
	<div><span class="personcount fl" gameid="JYJH" online="189936"></span></div>
	<script>
		$(".personcount").online({
           height: 15
        })
	</script>
</body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章