从零开始学习前端JAVASCRIPT — 11、JavaScript运动模型及轮播图效果、放大镜效果、自适应瀑布流
未完待续。。。。。。
一、运动原理
通过连续不断的改变物体的位置,而发生移动变化。
使用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运动模型及轮播图效果、放大镜效果、自适应瀑布流的更多相关文章
- 使用JavaScript制作一个好看的轮播图
目录 使用JavaScript制作出好看的轮播图效果 准备材料 1.图片若干张(包括轮播图和按钮的图片) 2.将按钮的图片应用到按钮上的CSS样式文件 3.实现轮播和点击跳转的JavaScript代码 ...
- JavaScript+HTML+CSS 无缝滚动轮播图的两种方式
第一种方式 在轮播图最后添加第一张,一张重复的图片. 点击前一张,到了第一张,将父级oList移动到最后一张(也就是添加的重复的第一张),在进行后续动画. 点击下一张,到了最后一张(也就是添加的重复的 ...
- ReactNative新手学习之路04 组件化开发轮播图swiper支持安卓和IOS
react native 新手之路04 组件化开发轮播图swiper支持安卓和IOS npm install react-native-carousel --save git 地址Properties ...
- 一百三十二:CMS系统之前端动态获取后台添加的轮播图
先准备几张轮播图 排序顺序改为根据优先级倒序排 前端首页接口 @bp.route('/')def index(): banners = BannerModel.query.order_by(Banne ...
- 从零开始学习前端开发 — 11、CSS3选择器
一.基本选择器 1.* 通配符(通用选择器) 2.id选择器 3.class选择器(类选择器) 4.标签选择器(元素选择符) 5.群组选择器 (选择符1,选择符2{...}) 二.层次选择器(关系选择 ...
- 用纯css、JavaScript、jQuery简单的轮播图
完成一个可以自动切换或点击数字的轮播图 HTML代码只需要一个div 包含着一个图片和一个列表,我们主要的思路就是通过点击相应的数字,改变图片的 路径. 有4张图片都在img文件夹里,名称为 img ...
- JavaScript面向对象的方式开发轮播图插件
轮播图是很多页面必不可少的组件.这里来使用面向对象方式开发一个插件.减去开发的痛楚 首先需要寻找对象:只有一个对象,轮播图!关键点在于找到这个对象所拥有的属性以及方法,通过代码实现出来,这是面向对象最 ...
- javascript写无缝平移的轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 用JavaScript制作banner轮播图
JavaScript_banner轮播图 让我们一起来学习一下用js怎么实现banner轮播图呢? 直接看代码: <!DOCTYPE html> <html> <head ...
随机推荐
- limesurvey的问卷类型
- 【学习笔记】FFT
1.内容 由于noble_太懒 不想写了 非常好的博客: https://www.cnblogs.com/rvalue/p/7351400.html http://www.cnblogs.com/ca ...
- 【UVa】1343 The Rotation Game(IDA*)
题目 题目 分析 lrj代码.... 还有is_final是保留字,害的我CE了好几发. 代码 #include <cstdio> #include <algorit ...
- js中Number()、parseInt()和parseFloat()的区别
一:Number() 如果是Boolean值,true和false值将分别被转换为1和0. 如果是数字值,只是简单的传入和返回. 如果是null值,返回0. 如果是undefined,返回NaN. 如 ...
- Python添加模块
参考博客:http://blog.csdn.net/damotiansheng/article/details/43916881 http://my.oschina.net/leejun2005/bl ...
- Tkinter Checkbutton
Python - Tkinter Checkbutton: checkbutton小部件用于显示切换按钮的用户多项选择.然后,用户可以通过点击相应的按钮每个选项中选择一个或多个选项. checkb ...
- 12_java之构造方法|this|super
01构造方法引入 * A:构造方法的引入 在开发中经常需要在创建对象的同时明确对象的属性值,比如员工入职公司就要明确他的姓名.年龄等属性信息. 那么,创建对象就要明确属性值,那怎么解决呢?也就是在创建 ...
- mac jmeter安装
1. 下载jmeter: 2. 通过cmd进入jmeter的bin目录: 3. 在cmd中输入:./jmeter.sh 4. 启动完成.
- halcon连续采集图像
dev_close_window()dev_update_window('off')create_bar_code_model ([], [], BarCodeHandle)dev_open_wind ...
- mfc对话框启动就直接隐藏在右下角显示托盘图标
之前在网络上找了一份mfc对话框启动就直接隐藏窗体,在右下角显示托盘图标的demo 在win7下可以正常使用,但在win10上直接溢出,导致计算机跟注销似的崩溃现象. 后来找到原因是因为在OnInit ...