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 相关文章推荐
火狐浏览器(firefox)下获得Event对象以及keyCode
Nov 13 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
Apr 26 Javascript
jquery validate表单验证的基本用法入门
Jan 18 Javascript
javascript实现tab响应式切换特效
Jan 29 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
Feb 06 Javascript
Angularjs整合微信UI(weui)
Mar 15 Javascript
全国省市二级联动下拉菜单 js版
May 10 Javascript
使用jQuery实现动态添加小广告
Jul 11 jQuery
基于JavaScript 性能优化技巧心得(分享)
Dec 11 Javascript
详解如何使用babel进行es6文件的编译
May 29 Javascript
详解create-react-app 自定义 eslint 配置
Jun 07 Javascript
vue计算属性computed的使用方法示例
Mar 13 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 Class&Object -- 解析PHP实现二叉树
2013/06/25 PHP
10个简化PHP开发的工具
2014/12/25 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
你必须知道的Javascript知识点之"this指针"的应用
2013/04/23 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
python画图常规设置方式
2020/03/05 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
农田水利实习自我鉴定
2013/09/19 职场文书
警示教育活动总结
2014/05/05 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
药房管理制度范本
2015/08/06 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书