未完待续。。。。。。

一、运动原理

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

使用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. 虚拟机桥接网卡下配置centOS静态IP

    前面我们讲了怎么去配置asterisk,但是配置完了,是没有什么效果出现的,因为asterisk相当于一个服务器,我们需要一个客户端去给它连接起来,如果你是在自己的机子上装了虚拟机,那最好配一下cen ...

  2. 运维平台cmdb开发-day3

    后台管理 1. 访问过程 我们在前面2天得到了各个客户端的资产数据信息,我们将各个这个数据打包发送到api,这个api其实就是django的url传参,之后按照数据的格式对比数据库增删改 2. 后台页 ...

  3. 20181105_线程之Task

    Task是基于.net Framework3.0框架, Task使用的线程也是来自于ThreadPool 多线程的两个意义: 优化体验(常见于不卡界面), 提升运行速度(不同线程可以分担运算任务) 总 ...

  4. 十六 在沉睡中停止(在sleep() 状态下停止线程)

    1 如果线程在sleep()状态下停止线程,会是什么效果? 答案: 如果在sleep状态下停止某一线程,会进入sleep的catch块中, 抛出InterruptedException 异常,并且清除 ...

  5. Jsp+Servlet+JDBC的使用复习

    最近对JDBC进行了复习,对事物的理解,连接池的使用等部分都有一个复习,所以使用Servlet+JDBC完成了一个小Demo,在这里对这种底层的操作进行总结.框架的使用的确方便了我们的开发,但是底层的 ...

  6. java软件设计模式——单例设计模式中的【饿汉式】与 【懒汉式】示例

    以下为单例设计模式中的两种经典模式的代码示意: 单例设计模式(spring框架IOC,默认创建的对象都是单例的): 饿汉式: public class SingleClass { private Si ...

  7. CSS 父级方法清除浮动方法

    .baseMod:after { clear: both; content: ' '; display: block; visibility: none; height: 1% } 2. overfl ...

  8. JavaScript知识总结--引用类型(Object-Array-Function-Global-Math)

    对象(引用类型的值)是引用类型的一个实例,新对象是使用new操作符后跟一个构造函数来创建的.构造函数本身就是一个函数,该函数用于创建新对象.ECMAScript提供了很多原生引用类型(Object,A ...

  9. linux系统构架 - LB集群之LVS的NAT

    1.环境说明 三台服务器,一台叫dir,两台叫rs1和rs2 (director 和 real server) dir外网ip:192.168.192.129  内网ip:192.168.1.114 ...

  10. .net core 2.0的一次奇特经历

    环境:.net core SDK版本 2.0.0-preview1-005977 VS 2017 version 15.3.0 preview 3.0 问题描述:今天在迁移Job的项目中,中午吃饭的时 ...