未完待续。。。。。。

一、运动原理

通过连续不断的改变物体的位置,而发生移动变化。

使用setInterval实现。

匀速运动:速度值一直保持不变。

多物体同时运动:将定时器绑设置为对象的一个属性。

注:物体每次运动都应该把之前的定时器清除掉。

二、边界处理

遇到边界是应该停止掉还是反弹,方向相反。

改变物体运动方向:将物体的速度值取反。

三、加速减速

加速:速度越来越快。

减速:速度越来越慢。

四、抛物线

水平方向有一速度,垂直方向有一速度,并做自由落体。

五、透明度的变换

难点:处理低版本IE和其它浏览器的透明度兼容性问题。

注:IE7/8下:给对象添加opacity属性。

六、缓冲运动

七、多属性缓冲运动函数封装

在定时器内部添加一个标识来判断属性是否都完成。

八、圆周运动

九、链式运动(通过回调函数来完成)

/*
缓冲运动
obj:运动的对象
target:运动属性和终点值的对象
fn:回调函数
ratio:运动系数,默认值为8
*/
function bufferMove(obj, target, fn, ratio = ) {
// 清除旧的定时器
clearInterval(obj.timer); // 开启新的定时器
obj.timer = setInterval(function () {
var allOK = true;
for(var attr in target) {
// 获取当前值
var cur = ;
if(attr === 'opacity') {
cur = parseInt(getStyle(obj, 'opacity') * );
} else {
cur = parseInt(getStyle(obj, attr));
} // 计算速度
var speed = (target[attr] - cur) / ratio; // 判断方向
speed = speed > ? Math.ceil(speed) : Math.floor(speed); // 计算下次的值
var next = cur + speed; // 赋值
if(attr === 'opacity') {
obj.style.opacity = next / ;
obj.style.filter = 'alpha(opacity=' + next + ')';
} else {
obj.style[attr] = next + 'px';
} // 判断当前属性是否运动完毕
if(next !== target[attr]) {
allOK = false;
}
} // 如果allOk为true,则说明所有的运动均已运动完毕
if(allOK) {
// 清除定时器
clearInterval(obj.timer);
// 执行回调函数
if(fn) {
fn();
}
} }, );
} /*
获取当前样式值
*/
function getStyle(obj, attr) {
if(obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj, false)[attr];
}
}

附               录

1.无缝循环滚动轮播图

2.淘宝放大镜效果

http://vip2.svnspot.com/rocky.javascript/

3.自适应瀑布流效果

从零开始学习前端JAVASCRIPT — 11、JavaScript运动模型及轮播图效果、放大镜效果、自适应瀑布流的更多相关文章

  1. 使用JavaScript制作一个好看的轮播图

    目录 使用JavaScript制作出好看的轮播图效果 准备材料 1.图片若干张(包括轮播图和按钮的图片) 2.将按钮的图片应用到按钮上的CSS样式文件 3.实现轮播和点击跳转的JavaScript代码 ...

  2. JavaScript+HTML+CSS 无缝滚动轮播图的两种方式

    第一种方式 在轮播图最后添加第一张,一张重复的图片. 点击前一张,到了第一张,将父级oList移动到最后一张(也就是添加的重复的第一张),在进行后续动画. 点击下一张,到了最后一张(也就是添加的重复的 ...

  3. ReactNative新手学习之路04 组件化开发轮播图swiper支持安卓和IOS

    react native 新手之路04 组件化开发轮播图swiper支持安卓和IOS npm install react-native-carousel --save git 地址Properties ...

  4. 一百三十二:CMS系统之前端动态获取后台添加的轮播图

    先准备几张轮播图 排序顺序改为根据优先级倒序排 前端首页接口 @bp.route('/')def index(): banners = BannerModel.query.order_by(Banne ...

  5. 从零开始学习前端开发 — 11、CSS3选择器

    一.基本选择器 1.* 通配符(通用选择器) 2.id选择器 3.class选择器(类选择器) 4.标签选择器(元素选择符) 5.群组选择器 (选择符1,选择符2{...}) 二.层次选择器(关系选择 ...

  6. 用纯css、JavaScript、jQuery简单的轮播图

    完成一个可以自动切换或点击数字的轮播图 HTML代码只需要一个div 包含着一个图片和一个列表,我们主要的思路就是通过点击相应的数字,改变图片的 路径. 有4张图片都在img文件夹里,名称为  img ...

  7. JavaScript面向对象的方式开发轮播图插件

    轮播图是很多页面必不可少的组件.这里来使用面向对象方式开发一个插件.减去开发的痛楚 首先需要寻找对象:只有一个对象,轮播图!关键点在于找到这个对象所拥有的属性以及方法,通过代码实现出来,这是面向对象最 ...

  8. javascript写无缝平移的轮播图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 用JavaScript制作banner轮播图

    JavaScript_banner轮播图 让我们一起来学习一下用js怎么实现banner轮播图呢? 直接看代码: <!DOCTYPE html> <html> <head ...

随机推荐

  1. java 检测代理IP是否准确

    我这里提供2个方法都可以实现:第一个是createIPAddress()和convertStreamToString() import java.io.IOException; import java ...

  2. python中包和模块的使用说明

    python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用. 如果想 ...

  3. Linux - samba 服务

    暂时关闭 iptables 防火墙 [root@sch01ar ~]# systemctl stop iptables.service 暂时关闭 firewall 防火墙 [root@sch01ar ...

  4. [POJ] Palindrome

    Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 62102   Accepted: 21643 Desc ...

  5. Python操作中缓存Redis

    Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

  6. 如何清除svn的账号缓存信息(solaris)

    如果我们不小心输入svn账号错误的话,后面就一直提示认证失败,不能checkout代码. 这个是因为svn把你输入的账号进行了缓存. 如果我们想重新输入新的账号,必须要清除缓存 svn存储账号的目录在 ...

  7. keil5破解

    没有破解之前的keil只能编译限制大小的代码,72K好像我忘了?太长的话会报错. 注册机网址:http://bbs.armfly.com/read.php?tid=2346 1.在keil5左上角的F ...

  8. 2、keys相关命令

    redis的官网http://redis.io是学习redis的重要资源库,所有命令都分门别类的罗列在了这里http://redis.io/commands. 1.数据库选择命令: SELECT in ...

  9. vertex shader(1)

    Vertex shader Architecture: 所有在vertex shader中的数据都用128-bit的quad-floats表示(4x32-bit). vertex shader线性地执 ...

  10. Core Data 入门

    1. 基本概念 Core Data是一种被称为对象关系映射(Object-Relational Mapping,ORM)技术的实现. Core Data 架构图如下: 五个概念: (1)数据模型(Da ...