javascript淡入淡出效果的实现思路


Posted in Javascript onMarch 31, 2012

如题,只有思路,没有代码。

这个思路是最近写XScroll.js类的时候想明白的。平常我们说的淡入淡出效果,一般分成两部分,一半是淡入,另一半就是淡出了。不过经过分析,我觉得其实只需要一半就行了。

比如写一个图片切换类,切换效果是淡入淡出,通常我们会这样写:当切换发生的时候,当前显示的图片淡出(渐渐隐藏),将要显示的图片淡入(渐渐出现),通常两张图片的动画速度是一致的,以便实现当前图片完全隐藏之时就是下一张图片完全显示之日。

我们来列一个简单的步骤:

当前图片渐隐,透明度由100%变成90%;同时下一张图片渐显,透明度由0变成10.
当前图透明度80%,下张图透明度20%
当前图70%,下张图30%。
。。。。
当前图10%,下张图90%
完成切换
其实,这样做完全是一种浪费!

我们想一想,如果下张图zIndex位于当前图之上,当它渐显的时候,因为越来越不透明,所以视觉上,他下层的当前图片看起来就越来越透明!

比如,下张图透明度为20%的时候,因为他覆盖在当前图上,所以当前图片看起来透明度就是100%-20%=80%!

所以,在制作淡入淡出切换效果的时候,其实只需要淡入效果即可,淡入的同时,淡出就发生着;淡入结束时,就是淡出终结。这样一来,永远不用担心淡入与淡出不同步的问题。

关键是,这样一来只用同时循环设置一张图片的透明度(即下张图),不用管被挡住的这张(即当前图),节约了一半的运算。这也算是优化了javascript的执行效率吧?

所以,我实现淡入淡出切换效果的思路就是:

将下一张图片的zIndex设置于当前图片之上
下一张图片进行淡入(渐显)循环;当前图片不操作。
淡入进行时,淡出同步发生;淡入完成,淡出同时完成。
注:此思路只适合于当前图与下一张图重叠的情况(大部分时候都是这样)。

Javascript 相关文章推荐
原型方法的不同写法居然会影响调试的解决方法
Mar 08 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
May 24 Javascript
jQuery 事件的命名空间简单了解
Nov 22 Javascript
巧用局部变量提升javascript性能
Feb 24 Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 Javascript
bootstrap-treeview自定义双击事件实现方法
Jan 09 Javascript
js生成随机颜色方法代码分享(三种)
Dec 29 Javascript
less简单入门(CSS 预处理语言)
Mar 08 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
Apr 17 Javascript
JavaScript简单编程实例学习
Feb 14 Javascript
JS实现可控制的进度条
Mar 25 Javascript
vue内置组件component--通过is属性动态渲染组件操作
Jul 28 Javascript
提高javascript效率 一次判断,而不要次次判断
Mar 30 #Javascript
一个关于javascript匿名函数的问题分析
Mar 30 #Javascript
JavaScript 基础篇(一)
Mar 30 #Javascript
js确定对象类型方法
Mar 30 #Javascript
js 浏览器事件介绍
Mar 30 #Javascript
js中eval详解
Mar 30 #Javascript
关于jquery性能最佳实践的讨论,与求教
Mar 30 #Javascript
You might like
一个简单php扩展介绍与开发教程
2010/08/19 PHP
实例讲解php数据访问
2016/05/09 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
动态表格Table类的实现
2009/08/26 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
微信小程序 五星评分的实现实例
2017/08/04 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
python实现词法分析器
2019/01/31 Python
Python实现DDos攻击实例详解
2019/02/02 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
描述内存分配方式以及它们的区别
2016/10/15 面试题
几道数据库的面试题或笔试题
2014/05/31 面试题
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
优秀团员个人的自我评价
2013/10/02 职场文书
电气工程自动化求职信
2014/03/14 职场文书
作文评语集锦大全
2014/04/23 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
护士个人年终总结
2015/02/13 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
Oracle笔记
2021/04/05 Oracle
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript