1. 程式人生 > 其它 >每天學一個jquery外掛-記分牌效果

每天學一個jquery外掛-記分牌效果

技術標籤:每天學一個jquery外掛javascriptjquery

每天學一個jquery外掛-記分牌效果

記分牌效果

嗯,一個很常見的效果,實現起來很簡單,簡單記個筆記,就是那種記分牌的滾動效果

效果如下
在這裡插入圖片描述

程式碼如下
html部分

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>記分牌實現</title>
		<script src="js/jquery-3.4.1.min.js">
</script> <script src="js/jfpsx.js"></script> <link href="css/jfpsx.css" rel="stylesheet" type="text/css" /> <style> #div{ border: 1px solid lightgray; height: 50px; width: 400px; margin:50px auto; } </style>
</head> <body> <div id="div"></div> </body> </html> <script> $(function(){ var temp = jfpsx("div"); setInterval(function(){ var num = Math.floor(Math.random()*1000000000); temp.load(num.toString()) },1000) }) </script>

css部分

*{
margin: 0; padding: 0; } .fz{ overflow: hidden; } .items{ width: 40px; float: left; margin-top: 0px; transition: all 0.5s; } .item{ width: 100%; display: flex; justify-content: center; align-items: center; height: 50px; font-size: 18px; font-weight: bold; }

js部分

var jfpsx = function(id) {
	var $id = $("#" + id);
	$id.addClass("fz");
	var $doms = [];
	for (var i = 0; i < 10; i++) {
		var $items = $("<div class='items'></div>")
		for (var j = 0; j <= 9; j++) {
			var $item = $("<div class='item'>" + j + "</div>")
			$item.appendTo($items);
		}
		$items.appendTo($id);
		$doms.push($items);
	}
	return {
		$id: $id,
		$doms: $doms,
		load: function(str) {
			var that = this;
			while (str.length != 10) {
				if (str.length < 10) {
					str = "0" + str;
				}
				if (str.length > 10) {
					str = str.substr(1);
				}
			}
			var arr = str.split("");
			for(var i = 0;i<arr.length;i++){
				var temp = that.$doms[i];
				var index = parseInt(arr[i])
				temp.css({"margin-top":(-50)*index+"px"})
			}
		}
	}
}

  • 首先確定容器,計算大小和各個最小格子的大小,但是我這裡面是寫死的
  • 然後確定要繪製多少位的記分牌,那就做多少個容器填進去浮動並排
  • 容器裡面再填上0~9的數字,每個格子是算好的大小
  • 然後將渲染好的dom留下,再接收要變換的數字 ,對數字進行補位或者擷取以滿足目標位數的情況
  • 然後再遍歷這個字串的每一個字元,想象這是一個卡在只有一部分卡在看的見得地方的紙條,直接給margin-top就是把這個紙條往上扯幾個格子,以展示正確的位置的數字
  • 完事,碎覺