소스 검색

模板更新帧动画方法

ChenLiang 4 년 전
부모
커밋
9fa780967a
2개의 변경된 파일134개의 추가작업 그리고 96개의 파일을 삭제
  1. 67 48
      专题模板/js/common.js
  2. 67 48
      活动模板/js/common.js

+ 67 - 48
专题模板/js/common.js

@@ -168,11 +168,23 @@ var comm = {
             return this.isShowDeel(temp.parentNode);
         }
     },
-    visible: function (ele) { // 让一个元素隐藏(visible
+    visible: function (ele) { // 让一个元素隐藏(visibility
         ele.style.visibility = 'visible'
     },
-    hidden: function (ele) { // 让一个元素显示(visible)
-        ele.style.visibility = 'hidden'
+    hidden: function (ele) { // 让一个元素显示(visibility)
+       ele.style.visibility = 'hidden'
+    },
+    visibleClass: function (cls) { // 让一个类的元素隐藏(visibility)
+        var arr = document.getElementsByClassName(cls)
+        for (var i = 0; i < arr.length; i++) {
+            arr[i].style.visibility = 'visible'
+        }
+    },
+    hiddenClass: function (cls) { // 让一个类的元素显示(visibility)
+        var arr = document.getElementsByClassName(cls)
+        for (var i = 0; i < arr.length; i++) {
+            arr[i].style.visibility = 'hidden'
+        }
     },
 
     /* ====================================================================================== */
@@ -192,7 +204,6 @@ var comm = {
         // 5、将新元素加入到父元素中
         ele.appendChild(newEle)
     },
-
     // 帧动画(定时器容器(存在一个对象内的一个属性),图片群所在的元素,执行速度(单位:毫秒),是否只执行一次,执行完毕的回调函数)
     zhenAnimation: function (interval, ele, speed, once, fn) {
         var cont = document.getElementsByClassName('container')[0]	
@@ -220,8 +231,44 @@ var comm = {
 			if (i == imgs.length) {i=0; fn&&fn()}
 			imgs[i].style.visibility = 'visible'
 		}, speed)
+    },
+    // 帧动画加强版,ele格式:<div id="yw1" data-url="图片地址前缀(不包括编号.png)" data-max="个数(帧动画图片数量+1)">
+    zhenAnimationPro: function (interval, ele, speed, once, fn) {
+        // 判断是否第一次执行该帧动画,是则加载图片
+        if (!ele.getAttribute('isload')) {
+            var src = ele.getAttribute('data-url')
+            for (var j = ele.getAttribute('data-max'); j >= 0; j--) {
+                ele.innerHTML = '<img src="' + src + comm.addPreZero(j) + '.png" style="position: absolute;visibility: hidden;">' + ele.innerHTML
+            }
+            ele.setAttribute('isload', 1)
+        }
+        var cont = document.getElementsByClassName('container')[0]	
+		// 清除定时器
+		clearInterval(cont[interval])
+		// 获取图片群并全部隐藏
+		var imgs = ele.getElementsByTagName('img')
+		for (var i = 0; i < imgs.length; i++) {
+			imgs[i].style.visibility = 'hidden'
+		}
+		// 单独显示第一张图
+		var i = 0 
+		imgs[i].style.visibility = 'visible'
+		// 设置定时器
+		cont[interval] = setInterval(function() {
+			// 判断是否只执行一次
+			if (i == imgs.length-1 && once) {
+				// 每轮执行完成的回调函数
+                clearInterval(cont[interval])
+                fn&&fn()
+				return
+			}
+			// 前一张图隐藏、后一张图显现、可循环执行
+			imgs[i++].style.visibility = 'hidden'
+			if (i == imgs.length) {i=0; fn&&fn()}
+			imgs[i].style.visibility = 'visible'
+		}, speed)
 	},
-
+    
     /* ====================================================================================== */
 
     setCookie: function (name, value, t) { // 设置cookie
@@ -240,39 +287,6 @@ var comm = {
             return null;
         }
     },
-    getStack: function (stackName) { //获取历史栈
-        var _this = this;
-        var stack;
-        if (_this.getQueryString('stack')) {
-            stack = JSON.parse(_this.getQueryString('stack'));
-        } else if (
-            _this.getCookie(stackName) && JSON.parse(_this.getCookie(stackName))
-        ) {
-            stack = JSON.parse(_this.getCookie(stackName))
-        }
-        // 如果cookie上没有,就把上一页路径做为返回路径
-        else {
-            stack = [];
-        }
-        return stack;
-    },
-    pushStack: function (stackName, url) { // 添加历史栈
-        var _this = this;
-        var stack;
-        stack = _this.getStack(stackName);
-        stack.push(url);
-        _this.setCookie('stackName', JSON.stringify(stack));
-        _this.setCookie(stackName, JSON.stringify(stack));
-    },
-    popStack: function (stackName) { // 删除历史栈
-        var _this = this;
-        var stack;
-        var delTop;
-        stack = _this.getStack(stackName);
-        delTop = stack.pop();
-        _this.setCookie(stackName, JSON.stringify(stack));
-        return delTop;
-    },
 
     /* ====================================================================================== */
 
@@ -294,23 +308,15 @@ var comm = {
         return Math.floor(Math.random() * (max - min)) + min;
     },
     arrRandom: function (arr) {  // 使数组随机排序,返回一个新数组
-        // var newArr = []
-        // var oldArrLength = arr.length
-        // for(var i = 0; i < oldArrLength; i++) {
-        // 	newArr.push(arr.splice(getRandom(0,arr.length),1)[0])
-        // }
-        // return newArr
         arr.sort(function () {
             return 0.5 - Math.random()
         })
     },
     createArr: function (arr, num, content) {   // 生成数组,
-        // 输出举例:var arr = [{num: 5, content: {id: 1, imgurl: 'img/1.jpg'}}, {num: 2, content: {id: 2, imgurl: 'img/2.jpg'}}] 
         // 调用举例:comm.createArr(arr, 'num', 'content')
+        // 输出举例:var arr = [{num: 5, content: {id: 1, imgurl: 'img/1.jpg'}}, {num: 2, content: {id: 2, imgurl: 'img/2.jpg'}}] 
 		var newArr = []
 		for (var i = 0; i < arr.length; i++) {
-			console.log(arr[i]);
-			console.log(arr[i][num]);
 			for (var j = 0; j < arr[i][num]; j++) {
 				newArr.push(arr[i][content])
 			}
@@ -327,7 +333,7 @@ var comm = {
             return true
         }
     },
-    timestamp: function (time) { // 转换时间格式
+    timestamp: function (time) { // 转换时间格式过滤器
         var sec = Math.floor(time % 60)
         var min = Math.floor(time / 60 % 60)
         var hour = Math.floor(time / 60 / 60)
@@ -336,6 +342,19 @@ var comm = {
         hour = hour < 10 ? '0' + hour : hour
         var timeStr = hour + ':' + min + ':' + sec;
         return timeStr
+    }, 
+    addPreZero: function (num) { // 帧动画补零过滤器
+        if (num < 10) {
+            return '0000' + num;
+        } else if (num < 100) {
+            return '000' + num;
+        } else if (num < 1000) {
+            return '00' + num;
+        } else if (num < 10000) {
+            return '0' + num;
+        } else {
+            return num;
+        }
     },
 
     /* ====================================================================================== */

+ 67 - 48
活动模板/js/common.js

@@ -168,11 +168,23 @@ var comm = {
             return this.isShowDeel(temp.parentNode);
         }
     },
-    visible: function (ele) { // 让一个元素隐藏(visible
+    visible: function (ele) { // 让一个元素隐藏(visibility
         ele.style.visibility = 'visible'
     },
-    hidden: function (ele) { // 让一个元素显示(visible)
-        ele.style.visibility = 'hidden'
+    hidden: function (ele) { // 让一个元素显示(visibility)
+       ele.style.visibility = 'hidden'
+    },
+    visibleClass: function (cls) { // 让一个类的元素隐藏(visibility)
+        var arr = document.getElementsByClassName(cls)
+        for (var i = 0; i < arr.length; i++) {
+            arr[i].style.visibility = 'visible'
+        }
+    },
+    hiddenClass: function (cls) { // 让一个类的元素显示(visibility)
+        var arr = document.getElementsByClassName(cls)
+        for (var i = 0; i < arr.length; i++) {
+            arr[i].style.visibility = 'hidden'
+        }
     },
 
     /* ====================================================================================== */
@@ -192,7 +204,6 @@ var comm = {
         // 5、将新元素加入到父元素中
         ele.appendChild(newEle)
     },
-
     // 帧动画(定时器容器(存在一个对象内的一个属性),图片群所在的元素,执行速度(单位:毫秒),是否只执行一次,执行完毕的回调函数)
     zhenAnimation: function (interval, ele, speed, once, fn) {
         var cont = document.getElementsByClassName('container')[0]	
@@ -220,8 +231,44 @@ var comm = {
 			if (i == imgs.length) {i=0; fn&&fn()}
 			imgs[i].style.visibility = 'visible'
 		}, speed)
+    },
+    // 帧动画加强版,ele格式:<div id="yw1" data-url="图片地址前缀(不包括编号.png)" data-max="个数(帧动画图片数量+1)">
+    zhenAnimationPro: function (interval, ele, speed, once, fn) {
+        // 判断是否第一次执行该帧动画,是则加载图片
+        if (!ele.getAttribute('isload')) {
+            var src = ele.getAttribute('data-url')
+            for (var j = ele.getAttribute('data-max'); j >= 0; j--) {
+                ele.innerHTML = '<img src="' + src + comm.addPreZero(j) + '.png" style="position: absolute;visibility: hidden;">' + ele.innerHTML
+            }
+            ele.setAttribute('isload', 1)
+        }
+        var cont = document.getElementsByClassName('container')[0]	
+		// 清除定时器
+		clearInterval(cont[interval])
+		// 获取图片群并全部隐藏
+		var imgs = ele.getElementsByTagName('img')
+		for (var i = 0; i < imgs.length; i++) {
+			imgs[i].style.visibility = 'hidden'
+		}
+		// 单独显示第一张图
+		var i = 0 
+		imgs[i].style.visibility = 'visible'
+		// 设置定时器
+		cont[interval] = setInterval(function() {
+			// 判断是否只执行一次
+			if (i == imgs.length-1 && once) {
+				// 每轮执行完成的回调函数
+                clearInterval(cont[interval])
+                fn&&fn()
+				return
+			}
+			// 前一张图隐藏、后一张图显现、可循环执行
+			imgs[i++].style.visibility = 'hidden'
+			if (i == imgs.length) {i=0; fn&&fn()}
+			imgs[i].style.visibility = 'visible'
+		}, speed)
 	},
-
+    
     /* ====================================================================================== */
 
     setCookie: function (name, value, t) { // 设置cookie
@@ -240,39 +287,6 @@ var comm = {
             return null;
         }
     },
-    getStack: function (stackName) { //获取历史栈
-        var _this = this;
-        var stack;
-        if (_this.getQueryString('stack')) {
-            stack = JSON.parse(_this.getQueryString('stack'));
-        } else if (
-            _this.getCookie(stackName) && JSON.parse(_this.getCookie(stackName))
-        ) {
-            stack = JSON.parse(_this.getCookie(stackName))
-        }
-        // 如果cookie上没有,就把上一页路径做为返回路径
-        else {
-            stack = [];
-        }
-        return stack;
-    },
-    pushStack: function (stackName, url) { // 添加历史栈
-        var _this = this;
-        var stack;
-        stack = _this.getStack(stackName);
-        stack.push(url);
-        _this.setCookie('stackName', JSON.stringify(stack));
-        _this.setCookie(stackName, JSON.stringify(stack));
-    },
-    popStack: function (stackName) { // 删除历史栈
-        var _this = this;
-        var stack;
-        var delTop;
-        stack = _this.getStack(stackName);
-        delTop = stack.pop();
-        _this.setCookie(stackName, JSON.stringify(stack));
-        return delTop;
-    },
 
     /* ====================================================================================== */
 
@@ -294,23 +308,15 @@ var comm = {
         return Math.floor(Math.random() * (max - min)) + min;
     },
     arrRandom: function (arr) {  // 使数组随机排序,返回一个新数组
-        // var newArr = []
-        // var oldArrLength = arr.length
-        // for(var i = 0; i < oldArrLength; i++) {
-        // 	newArr.push(arr.splice(getRandom(0,arr.length),1)[0])
-        // }
-        // return newArr
         arr.sort(function () {
             return 0.5 - Math.random()
         })
     },
     createArr: function (arr, num, content) {   // 生成数组,
-        // 输出举例:var arr = [{num: 5, content: {id: 1, imgurl: 'img/1.jpg'}}, {num: 2, content: {id: 2, imgurl: 'img/2.jpg'}}] 
         // 调用举例:comm.createArr(arr, 'num', 'content')
+        // 输出举例:var arr = [{num: 5, content: {id: 1, imgurl: 'img/1.jpg'}}, {num: 2, content: {id: 2, imgurl: 'img/2.jpg'}}] 
 		var newArr = []
 		for (var i = 0; i < arr.length; i++) {
-			console.log(arr[i]);
-			console.log(arr[i][num]);
 			for (var j = 0; j < arr[i][num]; j++) {
 				newArr.push(arr[i][content])
 			}
@@ -327,7 +333,7 @@ var comm = {
             return true
         }
     },
-    timestamp: function (time) { // 转换时间格式
+    timestamp: function (time) { // 转换时间格式过滤器
         var sec = Math.floor(time % 60)
         var min = Math.floor(time / 60 % 60)
         var hour = Math.floor(time / 60 / 60)
@@ -336,6 +342,19 @@ var comm = {
         hour = hour < 10 ? '0' + hour : hour
         var timeStr = hour + ':' + min + ':' + sec;
         return timeStr
+    }, 
+    addPreZero: function (num) { // 帧动画补零过滤器
+        if (num < 10) {
+            return '0000' + num;
+        } else if (num < 100) {
+            return '000' + num;
+        } else if (num < 1000) {
+            return '00' + num;
+        } else if (num < 10000) {
+            return '0' + num;
+        } else {
+            return num;
+        }
     },
 
     /* ====================================================================================== */