博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设置dom节点属性的代码优化
阅读量:6638 次
发布时间:2019-06-25

本文共 2856 字,大约阅读时间需要 9 分钟。

需求:某dom节点在正常情况下,有设置其transition-duration为1s,在mousemove时候,要去掉其transition-duration设置的时间,在mouseup时候,恢复其transition-duration时间为1s。

考虑到兼容性,故设置的属性相关属性有:

  transition-duration

  -moz-transition-duration

  -webkit-transition-duration

  -o-transition-duration

最初代码逻辑:

switch(evt.type) {                case "mousedown":                    //XXXX                    break;                case "mousemove":                    dom1.setStyle('transition-duration', '0s');                    dom1.setStyle('-moz-transition-duration', '0s');                    dom1.setStyle('-webkit-transition-duration', '0s');                    dom1.setStyle('-o-transition-duration', '0s');                    dom2.setStyle('transition-duration', '0s');                    dom2.setStyle('-moz-transition-duration', '0s');                    dom2.setStyle('-webkit-transition-duration', '0s');                    dom2.setStyle('-o-transition-duration', '0s');                    //XXXX                    break;                case "mouseup":                    dom1.setStyle('transition-duration', '1s');                    dom1.setStyle('-moz-transition-duration', '1s');                    dom1.setStyle('-webkit-transition-duration', '1s');                    dom1.setStyle('-o-transition-duration', '0s');                    dom2.setStyle('transition-duration', '1s');                    dom2.setStyle('-moz-transition-duration', '1s');                    dom2.setStyle('-webkit-transition-duration', '1s');                    dom2.setStyle('-o-transition-duration', '1s');                    //XXXX                break;   }

 

明显看到上述代码特别冗余,故抽出一个函数来干这些事情

setTransitionDuration: function(element, seconds) {            if (!element) {                return;            }            seconds = (seconds ? seconds : 0) + 's';            element.setStyle('transition-duration', seconds);            element.setStyle('-moz-transition-duration', seconds);            element.setStyle('-webkit-transition-duration', seconds);            element.setStyle('-o-transition-duration', seconds);}//则上述代码可直接调用:case "mousemove":    this.setTransitionDuration(dom1, 0);    this.setTransitionDuration(dom2, 0);    break;case "mouseup":    this.setTransitionDuration(dom1, 1);    this.setTransitionDuration(dom2, 1);    break;

 

相对于第一种方案,明显好很多了,再继续优化,将设置的属性写在一个class中,然后直接addClass/removeClass即可,这样,样式的代码放置于css文件中,js代码关注与自己的逻辑,更加清晰

//css样式代码.transition-duration-stop {  transition-duration: 0s;  -moz-transition-duration: 0s;  -webkit-transition-duration: 0s;  -o-transition-duration: 0s;}//js代码case "mousemove":      dom1.addClass('transition-duration-stop');      dom2.addClass('transition-duration-stop');      break;case 'mouseup':      dom1.removeClass('transition-duration-stop');      dom2.removeClass('transition-duration-stop');      break;

大功告成

转载于:https://www.cnblogs.com/xnn1993/p/7662374.html

你可能感兴趣的文章
胖子哥的大数据之路(三)- 大数据仓库的需求分析该怎么做
查看>>
tensorflowDetectionAPI
查看>>
多种网站模板演示
查看>>
JDBC事务处理和保存点
查看>>
前言 -- 数据库准备、一些名词准备
查看>>
Cannot find module '@babel/core'
查看>>
书(一)
查看>>
ssh安全设置
查看>>
C语言:编写折半查找函数
查看>>
2.1Python变量、编码、注释
查看>>
AS 中安装插件及常用插件
查看>>
FADE相关代码解析1
查看>>
android list 遍历删除List.remove() 明明删除了多个结果只删除了一个
查看>>
mariaDB5.6
查看>>
归并排序
查看>>
自己实现的简易的knn算法
查看>>
连载22:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...
查看>>
手机上怎么实现PDF文件转换成Excel表格
查看>>
ServiceComb实战
查看>>
0011-如何在Hive & Impala中使用UDF
查看>>