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 相关文章推荐
jQuery 各种浏览器下获得日期区别
Dec 22 Javascript
让你的CSS像Jquery一样做筛选的实现方法
Jul 10 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
Aug 16 Javascript
使用Jquery实现每日签到功能
Apr 03 Javascript
setTimeout内不支持jquery的选择器的解决方案
Apr 28 Javascript
JS判断当前页面是否在微信浏览器打开的方法
Dec 08 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
Aug 15 Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 Javascript
vue的过滤器filter实例详解
Sep 17 Javascript
微信小程序实现图片翻转效果的实例代码
Sep 20 Javascript
JavaScript实现好看的跟随彩色气泡效果
Feb 06 Javascript
ES5新增数组的实现方法
May 12 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实现ODBC数据分页显示一例
2006/10/09 PHP
php桌面中心(一) 创建数据库
2007/03/11 PHP
php运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
python实现从ftp服务器下载文件的方法
2015/04/30 Python
十个Python程序员易犯的错误
2015/12/15 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
快速创建python 虚拟环境
2020/11/28 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
总经理岗位职责范本
2014/02/02 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
情人节单身感言
2015/08/03 职场文书
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python