图片减速滚动
来源:互联网 发布:网络打印机关闭web打印 编辑:程序博客网 时间:2024/04/29 00:33
图片滚动效果在网站应用中非常多见。 但光是普普通通的图片滚动,在视觉效果上往往显示比较单调。下面就介绍一个变速滚动的效果。
类代码如下:
JScript code
/// <summary>
/// 数值递减操作类
/// </summary>
/// <param name="count" datatypes="number">总数值。 当所有递减值之和等于此数值时, 停止操作</param>
function SpeedChange( count ) {
var interVal = 30;
var self = this;
/// <summary>
/// 当速度变换时执行。30毫秒执行一次
/// </summary>
/// <param name="all" datatypes="number">递减过程中已经递减值的和</param>
/// <param name="count" datatypes="number">递减值</param>
this.onChange = function( all, current ) {}
/// <summary>
/// 当递减完成时执行
/// </summary>
this.onEnd = function() {}
/// <summary>
/// 开始一次速度递减。
/// </summary>
this.start = function() {
var distance = 0;
var timer = window.setInterval( function() {
var speed = ( count - distance ) / 8;
speed = speed > 0 ? Math.ceil( speed ) : Math.floor( speed );
distance += speed;
if( typeof( self.onChange ) == 'function' ) {
self.onChange( distance, speed );
}
if( distance >= count ) {
window.clearInterval( timer );
if( typeof( self.onEnd ) == 'function' ) {
self.onEnd();
}
}
},
interVal );
}}
这个类的接口比较简单,我们就拿图片滚动的示例来解释这个类。构造函数只需要传一个参数, 就是需要滚动的距离。方法start的调用可以让这个滚动效果开始执行, 它是一个递减的效果, 滚动的速度从大变小。事件onChange是在递减的过程中连续执行的事件, 它有两个参数, all指的是递减过程中递减值的和,current指的是当前的递减值。事件onEnd是在递减结束时执行, 当递减值的和大于等于构造函数传入的参数时,执行结束, 同时激发onEnd事件。
以下是调用代码:
HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>javascript变速滚动效果</title>
<style>
body, div, img{ margin:0;padding:0}
#outer{ width: 650px; height: 260px; overflow:hidden; position: relative;}
#inner{ width: 3900px; height: 260px;position: absolute;}
#inner img{ float: left;}
</style>
</head>
<body>
<script>
/// <summary>
/// 数值递减操作类
/// </summary>
/// <param name="count" datatypes="number">总数值。 当所有递减值之和等于此数值时, 停止操作</param>
function SpeedChange( count ) {
var interVal = 30; var self = this;
/// <summary>
/// 当速度变换时执行。30毫秒执行一次
/// </summary>
/// <param name="all" datatypes="number">递减过程中已经递减值的和</param>
/// <param name="count" datatypes="number">递减值</param>
this.onChange = function( all, current ) {}
/// <summary>
/// 当递减完成时执行
/// </summary>
this.onEnd = function() {}
/// <summary>
/// 开始一次速度递减。
/// </summary>
this.start = function() {
var distance = 0;
var timer = window.setInterval( function() {
var speed = ( count - distance ) / 8;
speed = speed > 0 ? Math.ceil( speed ) : Math.floor( speed );
distance += speed;
if( typeof( self.onChange ) == 'function' ) {
self.onChange( distance, speed );
}
if( distance >= count ) {
window.clearInterval( timer );
if( typeof( self.onEnd ) == 'function' ) {
self.onEnd();
}
}
}, interVal );
}}
</script>
<div id="debug">
</div>
<div id="outer">
<div id="inner" style="left:0;">
<img src="http://www.chhblog.com/upload/1/images/SpeedChangeImage/2e716679fcd74a45ad880b9f72d6198b.jpg"/>
<img src="http://www.chhblog.com/upload/1/images/SpeedChangeImage/3a2644c9fc9042879d0c6e9294b7b282.jpg"/>
<img src="http://www.chhblog.com/upload/1/images/SpeedChangeImage/753d4ea7b5654f278d7d58a0d32fd6bc.jpg"/>
<!-- 重复部份 -->
<img src="http://www.chhblog.com/upload/1/images/SpeedChangeImage/2e716679fcd74a45ad880b9f72d6198b.jpg"/>
<img src="http://www.chhblog.com/upload/1/images/SpeedChangeImage/3a2644c9fc9042879d0c6e9294b7b282.jpg"/>
<img src="http://www.chhblog.com/upload/1/images/SpeedChangeImage/753d4ea7b5654f278d7d58a0d32fd6bc.jpg"/>
</div>
</div>
<script>
//实例化对象。 指定总数值,此值每为每图片的宽度
var sc = new SpeedChange( 650 );
//添加onchange事件。
sc.onChange = function( all, current ) {
//通过事件的第二个参数设置图片的left值进行滚动
var left = parseFloat( document.getElementById( 'inner' ).style.left );
document.getElementById( 'inner' ).style.left = ( left - current ) + 'px' }
//添加onend事件.
sc.onEnd = function() {
//当移动超过三张图片时, 把图片外层的left值设为0.
if( parseFloat( document.getElementById( 'inner' ).style.left ) <= -1950 ) {
document.getElementById( 'inner' ).style.left = '0px'; }
//继续下一次滚动
window.setTimeout( function() {
//再次开始执行
sc.start();
}, 1000 )
}
//开始执行
sc.start();
</script>
</body>
</html>
演示地址:http://www.chhblog.com/demo/46.html
0 0
- 图片减速滚动
- 让uitextview自动滚到最后一行并滚动减速
- 滚动图片
- 滚动图片
- 滚动图片
- 图片滚动...............
- 图片滚动
- 图片滚动
- 滚动图片
- 滚动图片
- 滚动图片
- 图片滚动
- 图片滚动
- 图片滚动
- 滚动图片
- 图片滚动
- 图片滚动
- 图片滚动
- 阿Q大战手游,市场比“道德”更有决定性
- 黑马程序员《java基础总结(十六)》(网络编程<反射、正则表达式>)
- bootstrap 中 modal里面的remote 缓存问题
- ELF(一)介绍
- 联想、小米:全民偶像or全网公敌
- 图片减速滚动
- oracle如何删除重复行
- 第一部分:枝繁叶茂的操作系统篇
- ELF(二)ELF头
- iOS 单例模
- dex文件的生成和反汇编
- ELF(三)程序头表
- android apk反编译和odex转dex
- 커뮤니티쪽 레이아웃을 쇼핑몰과 같게 하려면 어떻게 해야 하나요?