Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >左右滚动,带控制按钮

左右滚动,带控制按钮

作者头像
苦咖啡
发布于 2018-05-07 09:06:14
发布于 2018-05-07 09:06:14
3.6K00
代码可运行
举报
文章被收录于专栏:我的博客我的博客
运行总次数:0
代码可运行

今天需要一个左右滚动图的js,从网上着了半天,修改调试了半天才弄好,于是就收藏了。不过以后真得看看js了

关键代码有注释:(红色部分是我加的注释)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<table border=0″ cellspacing=0″ cellpadding=0>
<tr>
<td width=”25px”>
<!–向左按钮,其中src是向左的按钮图片,其中id的值不要改变–>
<input id=”idPre” type=”image” src=”l.gif” onFocus=this.blur()/></td>
<td width=”750px”>
<div style=”width:800px; height:170px;”id=”idContainer2″>
<!–这里的id那个值不可以改变,如果改变需要改动js,而且高度和宽度不能省去,这里还有问题,为何单元格是750这的div设置成800?为了便于滚动我调试的–>
<table id=”idSlider2″ border=0″ cellpadding=”10px” cellspacing=0>
<!–id那个不可以改变,如果改变需要改动js,cellpadding是单元格之间的间距,cellspacing是内容与单元格线的间距–>
<tr>
<td><a href=”#”><img src=1.jpg” width=”180px” height=”160px”/></a></td>
<td><a href=”#”><img src=1.jpg” width=”180px” height=”160px”/></a></td>
<td><a href=”#”><img src=1.jpg” width=”180px” height=”160px”/></a></td>
<td><a href=”#”><img src=1.jpg” width=”180px” height=”160px”/></a></td>
<td><a href=”#”><img src=1.jpg” width=”180px” height=”160px”/></a></td>
<td><a href=”#”><img src=1.jpg” width=”180px” height=”160px”/></a></td>
</tr>
</table>
</div>
</td>
<td width=”25px”>
<!–向右按钮,其中src是向右的按钮图片,其中id的值不要改变–>
<input id=”idNext” type=”image” src=”r.gif” onFocus=this.blur()/>
</td>
</tr>
</table>

js代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
var $ = function (id) {
return “string” == typeof id ? document.getElementById(id) : id;
};
var Extend = function(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
}
var CurrentStyle = function(element){
return element.currentStyle || document.defaultView.getComputedStyle(element, null);
}
var Bind = function(object, fun) {
var args = Array.prototype.slice.call(arguments).slice(2);
return function() {
return fun.apply(object, args.concat(Array.prototype.slice.call(arguments)));
}
}
var Tween = {
Quart: {
easeOut: function(t,b,c,d){
return -c * ((t=t/d-1)*t*t*t – 1) + b;
}
},
Back: {
easeOut: function(t,b,c,d,s){
if (s == undefined) s = 1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
}
},
Bounce: {
easeOut: function(t,b,c,d){
if ((t/=d) < (1/2.75)) {
return c*(7.5625*t*t) + b;
} else if (t < (2/2.75)) {
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
} else if (t < (2.5/2.75)) {
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
} else {
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
}
}
}
}
//容器对象,滑动对象,切换数量
var SlideTrans = function(container, slider, count, options) {
this._slider = $(slider);
this._container = $(container);//容器对象
this._timer = null;//定时器
this._count = Math.abs(7);//切换数量
this._target = 0;//目标值
this._t = this._b = this._c = 0;//tween参数
this.Index = 0;//当前索引
this.SetOptions(options);
this.Auto = !!this.options.Auto;
this.Duration = Math.abs(this.options.Duration);
this.Time = Math.abs(this.options.Time);
this.Pause = Math.abs(this.options.Pause);
this.Tween = this.options.Tween;
this.onStart = this.options.onStart;
this.onFinish = this.options.onFinish;
var bVertical = !!this.options.Vertical;
this._css = bVertical ? “left” : “left”;//方向
//样式设置
var p = CurrentStyle(this._container).position;
p == “relative” || p == “absolute” || (this._container.style.position = “relative”);
this._container.style.overflow = “hidden”;
this._slider.style.position = “absolute”;
this.Change = this.options.Change ? this.options.Change :
this._slider[bVertical ? “offsetHeight” : “offsetWidth”] / this._count;
};
SlideTrans.prototype = {
//设置默认属性
SetOptions: function(options) {
this.options = {//默认值
Vertical:	true,//滚动方向,这里是垂直,已固定,且不能修改)
Auto:		true,//是否自动
Change:		200,//改变量如果滚动有的图片不能显示,要根据图片的大小和td单元格间距来调整这个数字
Duration:	50,//滑动持续时间
Time:		10,//滑动延时
Pause:		2000,//停顿时间(Auto为true时有效)
onStart:	function(){},//开始转换时执行
onFinish:	function(){},//完成转换时执行
Tween:		Tween.Quart.easeOut//tween算子
};
Extend(this.options, options || {});
},
//开始切换
Run: function(index) {
//修正index
index == undefined && (index = this.Index);
index < 0 && (index = this._count – 1) || index >= this._count && (index = 0);
//设置参数
this._target = -Math.abs(this.Change) * (this.Index = index);
this._t = 0;
this._b = parseInt(CurrentStyle(this._slider)[this.options.Vertical ? “top” : “left”]);
this._c = this._target – this._b;
this.onStart();
this.Move();
},
//移动
Move: function() {
clearTimeout(this._timer);
//未到达目标继续移动否则进行下一次滑动
if (this._c && this._t < this.Duration) {
this.MoveTo(Math.round(this.Tween(this._t++, this._b, this._c, this.Duration)));
this._timer = setTimeout(Bind(this, this.Move), this.Time);
}else{
this.MoveTo(this._target);
this.Auto && (this._timer = setTimeout(Bind(this, this.Next), this.Pause));
}
},
//移动到
MoveTo: function(i) {
this._slider.style[this._css] = i + “px”;
},
//下一个
Next: function() {
this.Run(++this.Index);
},
//上一个
Previous: function() {
this.Run(this.Index);
},
//停止
Stop: function() {
clearTimeout(this._timer); this.MoveTo(this._target);
}
};
var forEach = function(array, callback, thisObject){
if(array.forEach){
array.forEach(callback, thisObject);
}else{
for (var i = 0, len = array.length; i < len; i++) { callback.call(thisObject, array[i], i, array); }
}
}
var st = new SlideTrans(“idContainer2”, “idSlider2”, 3, { Vertical: false });
var nums = [];
forEach(nums, function(o, i){
o.onmouseover = function(){ o.className = “on”; st.Auto = false; st.Run(i); }
o.onmouseout = function(){ o.className = “”; st.Auto = true; st.Run(); }
})
//设置按钮样式
st.onStart = function(){
forEach(nums, function(o, i){ o.className = st.Index == i ? “on” : “”; })
}
$(“idNext”).onclick = function(){ st.Next(); }
$(“idPre”).onclick = function(){ st.Previous(); }
st.Run();
</script>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011年11月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
vue学习(3)
webpack:打包机,它能将我们的html、css、js,font,png进行打包,交给服务器。
玩蛇的胖纸
2018/08/16
2.9K0
JavaScript学习笔记019-原生js运动框架0时间运动框架
Author:Mr.柳上原 付出不亚于任何的努力 愿我们所有的努力,都不会被生活辜负 不忘初心,方得始终 吾日三省吾身 学习 学习 学习 Nodejs又来了 下个月笔记更新 前端果然是一项需要活到老学到老的语言 当你登上这座船 几乎永远不可能再停下来 <!DOCTYPE html> <!-- 文档类型:标准html文档 --> <html lang='en'> <!-- html根标签 翻译文字:英文 --> <head> <!-- 网页头部 --> <meat charset='UTF-8'/> <
Mr. 柳上原
2018/09/05
9660
js实现图片3D轮播效果(收藏)
3D的图片轮播效果很炫,写到这里只是为了不丢代码,不为别的。 效果预览: html代码: <head> <meta http-equiv="Content-Type" content="text/ht
何处锦绣不灰堆
2020/05/29
13.2K0
js实现图片3D轮播效果(收藏)
第42天:焦点图
1、焦点图 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>焦点图</title> 6 <style> 7 *{ 8 margin: 0; 9 padding: 0; 10 } 11 ul,ol{ 12 list-
半指温柔乐
2018/09/11
8280
js动画之无缝滚动
效果图如下: HTML代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>无缝滚动</title
汪凡
2019/03/01
15.5K0
js动画之无缝滚动
CSS 05 transition特效
transition-timing-function 过渡函数,默认ease函数,还有ease-out(先快后慢)、ease-in(先慢后快)、linear(匀速)等等函数
卢衍飞
2023/02/13
6790
JQuery分析及实现part6之动画模块功能及实现
JQuery模块分析及其实现第六部分动画部分功能及实现,接第五部分! 动画原理 根据人眼具有 0.1 秒的视觉残留,只有在一秒切换至少 24 个画面就会产生动画 动画的基本结构 function animate() { function render() { //动画 } window.setInterval(render, time); } 小动画案例 奔跑的小矩形 <html lang="en"> <head> <meta charset="UTF-8"> <title>奔跑吧矩形</ti
ihoey
2018/10/31
6650
仿Google+相册的动画
鼠标移入、移出时均有动画效果,咋一看估计是使用了css3的transform属性来实现动画效果的。
meteoric
2018/11/16
8700
校园篮球网页作业成品 运动系列NBA篮球主题 学校篮球网页制作模板 学生简单体育运动网站设计成品
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 💬历任研发工
IT司马青衫
2022/08/24
1.4K0
校园篮球网页作业成品 运动系列NBA篮球主题 学校篮球网页制作模板 学生简单体育运动网站设计成品
Div Scroll Bar (用层模拟滚动条)
对Div的盒模型以及Css控制定位都不熟,所以遇到了不少BT问题……好在最终突破了种种困难,基本实现了自己想要的效果。 说明: 最大的突破是通过了 xhtml1-transitional.dtd 验证,可以在xhtml文档里正常使用. 采用相对定位,使用起来更灵活,可以放在页面任何地方而不用改程序. 结构规范,容易扩展. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR
张善友
2018/01/19
1.5K0
Python与HTML倾情打造情人节示爱网站:愿天下有情人终成眷属!
吸引他们在一起的,不是Python的“人缘广”,也不是HTML的“花里胡哨”,而是他们为了一件事愿意携起手来共同创造价值的魅力。
荣仔_最靓的仔
2022/01/05
4450
Python与HTML倾情打造情人节示爱网站:愿天下有情人终成眷属!
Canvas实现网页协同画板
画板协同: 简单来说就是使用canvas开发一个可以多人共享的画板,都可以在上面作画画板,并且画面同步显示 canvas白板相关使用参考我之前的文章:Canvas网页涂鸦板再次增强版
不愿意做鱼的小鲸鱼
2022/09/30
1.8K0
Canvas实现网页协同画板
js图片横排无限循环滚动
一个好的插件地址:http://www.superslide2.com/demo.html
全栈程序员站长
2022/09/09
10.1K0
前端插件——头像截图上传插件的使用(带后台)
效果图:实现上传头像,右边是预览,有三个大小,可以对头像进行裁剪 HTML: toParentData 和 img 返回的是图片裁剪后的base64编码。其中toParentData用于业务需求,可以
生活创客
2018/01/30
3.5K0
前端插件——头像截图上传插件的使用(带后台)
原生JS实现腾讯视频轮播图
给大家分享一个用原生JS实现的腾讯视频轮播图特效,实现效果如下: 以下是代码实现,欢迎大家复制粘贴。 <!DOCTYPE html> <html> <head> <meta http-equ
越陌度阡
2020/11/26
16.5K0
原生JS实现腾讯视频轮播图
JavaScript实现图片轮播
test2.html   <!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
用户8671053
2021/09/23
3.6K0
自己写的一个JQUERY焦点图
以前写了一个JQUERY焦点图插件。但是过于冗长,其逻辑非常费解。今天心血来潮,决定重新写一下。暂时还没有封装成插件。回头抽时间封装成插件。
FungLeo
2022/11/28
1.5K0
3D拖拽相册的实现
<!DOCTYPE html> <html onselectstart="return false">     <head>         <meta http-equiv="Content-Type" content="text/html;charset=utf-8">         <title>3D拖拽相册</title>         <meta name="Keywords" content="关键字,关键字">         <meta name="descrip
山海散人
2021/03/03
6510
JS生成随机验证码校验(前端)
HTML <div class="box"> <div class="code" id="checkCode">{{nowCode}}</div> <a href="###" @click="changeCode">看不清,换一张</a> <input type="text" placeholder="请输入验证码" v-model="inputCode"> <button id="subBtn" @click="isLegalCode">验证</button> </div
执行上下文
2022/07/26
5.1K0
【字节前端青训营】跟着月影学JavaScript—— 前端代码优化三大原则之组件封装,用原生JS写一个轮播图并封装
组件封装对于学过React或者Vue框架的同学应该都不陌生,就我个人而言我之前的原生JS基础并不太是太好,一开始接触前端是因为参加学校的实验室做React Native项目,我是稍微了解一下原生JS之后就直接学React了,对于React组件的封装已经是比较熟悉了,而封装原生JS组件对我来说还是很新鲜的。上完这次课,自己跟着把代码敲了一遍真的是受益匪浅,让我对框架的理解又加深了一步,希望大家有时间的话都好好做一下这个轮播图组件,很棒。
henu_Newxc03
2022/05/05
1.8K0
【字节前端青训营】跟着月影学JavaScript—— 前端代码优化三大原则之组件封装,用原生JS写一个轮播图并封装
相关推荐
vue学习(3)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验