js图片库(无缝循环切换,左右移动效果)
2016-06-26 12:38
671 查看
今天尝试了写一个js的左右滑动效果的图片库(以前都是用渐变效果);话费2小时完成,具体代码如下
window.onload=function () {
var go={
n:-40, //用来存储当前位置
myclick:function(){
getClass (“goclick”)[0].onclick=function(){
go.n=-40 //初始化当前位置
go.goleft() //跳转到主左滑动程序
};
getClass (“goclick”)[1].onclick=function(){
mynode.nodetwo()
go.n=-340
go.goright()
};
},
goleft:function(){
go.myleft()
},
myleft:function(){
if (go.n>-340) {
go.n-=2
getId (“box”).style.left=go.n+”px”
setTimeout(function(){go.myleft()},1) //延迟一毫秒跳转回主滑动程序(达到延迟目的)
}else{ //如果到了位置
getId (“box”).style.left=”-40px” //让ul回到初始位置
mynode.nodes() //执行附加程序
go.n=-40 //初始化当前位置
};
},
goright:function(){
go.myright()
},
myright:function(){
if (go.n<-40) {
go.n+=2
getId (“box”).style.left=go.n+”px”
setTimeout(function(){go.myright()},1)
}else{
go.n=-340
};
}
};
var mynode={
n:0,
nodes:function(){
getId(“box”).appendChild(getId (“myimg”)); //获取第一个图插到最后一张
getId(“mainText”).innerHTML=getId(“myimg”).title
},
nodetwo:function(){
getId(“box”).insertBefore(getClass (“myimg”)[3],getId(“myimg”)) //最后一张切到第一张备用
getId (“box”).style.left=”-340px” //当前位置跳转到-340(成为第二张)
getId(“mainText”).innerHTML=getId(“myimg”).title
}
};
for (var i = 0; i <2; i++) {
getClass (“goclick”)[i].onmouseover=function(){ //箭头
this.style.opacity=1
};
getClass (“goclick”)[i].onmouseout=function(){
this.style.opacity=0.3
};
}
go.myclick()
function getId (myid) {
return document.getElementById(myid)
};
function getClass (myclass) {
return document.getElementsByClassName(myclass)
};
function getName (myname) {
return document.getElementsByTagName(myname)
};
};
具体思路为 首先缺点点击的是左滑动还是右滑动,如果左滑动则让位置变量回到初始值,随后调用循环移动函数,判断位置变量是否为目标值,不是则递归移动,是则把变量归零退出。 右滑动相反则可,title为判断文字所用,没有添加自动轮播效果,如果需要只需要添加定时器模拟点击即可
window.onload=function () {
var go={
n:-40, //用来存储当前位置
myclick:function(){
getClass (“goclick”)[0].onclick=function(){
go.n=-40 //初始化当前位置
go.goleft() //跳转到主左滑动程序
};
getClass (“goclick”)[1].onclick=function(){
mynode.nodetwo()
go.n=-340
go.goright()
};
},
goleft:function(){
go.myleft()
},
myleft:function(){
if (go.n>-340) {
go.n-=2
getId (“box”).style.left=go.n+”px”
setTimeout(function(){go.myleft()},1) //延迟一毫秒跳转回主滑动程序(达到延迟目的)
}else{ //如果到了位置
getId (“box”).style.left=”-40px” //让ul回到初始位置
mynode.nodes() //执行附加程序
go.n=-40 //初始化当前位置
};
},
goright:function(){
go.myright()
},
myright:function(){
if (go.n<-40) {
go.n+=2
getId (“box”).style.left=go.n+”px”
setTimeout(function(){go.myright()},1)
}else{
go.n=-340
};
}
};
var mynode={
n:0,
nodes:function(){
getId(“box”).appendChild(getId (“myimg”)); //获取第一个图插到最后一张
getId(“mainText”).innerHTML=getId(“myimg”).title
},
nodetwo:function(){
getId(“box”).insertBefore(getClass (“myimg”)[3],getId(“myimg”)) //最后一张切到第一张备用
getId (“box”).style.left=”-340px” //当前位置跳转到-340(成为第二张)
getId(“mainText”).innerHTML=getId(“myimg”).title
}
};
for (var i = 0; i <2; i++) {
getClass (“goclick”)[i].onmouseover=function(){ //箭头
this.style.opacity=1
};
getClass (“goclick”)[i].onmouseout=function(){
this.style.opacity=0.3
};
}
go.myclick()
function getId (myid) {
return document.getElementById(myid)
};
function getClass (myclass) {
return document.getElementsByClassName(myclass)
};
function getName (myname) {
return document.getElementsByTagName(myname)
};
};
具体思路为 首先缺点点击的是左滑动还是右滑动,如果左滑动则让位置变量回到初始值,随后调用循环移动函数,判断位置变量是否为目标值,不是则递归移动,是则把变量归零退出。 右滑动相反则可,title为判断文字所用,没有添加自动轮播效果,如果需要只需要添加定时器模拟点击即可
相关文章推荐
- 修复mysql数据库
- nodejs中的fiber(纤程)库详解
- 桌面中心(一)创建数据库
- 浅析C语言头文件和库的一些问题
- 桌面中心(三)修改数据库
- 目前流行的JavaScript库的介绍及对比
- MySql表、字段、库的字符集修改及查看方法
- 11个并不被常用但对开发非常有帮助的Python库
- Python标准库与第三方库详解
- Python第三方库的安装方法总结
- 实验九 模板与库使用
- c++11学习笔记
- 【转】:C++ 库
- 今天我的ubuntu软件中心坏了,于是长生了一个想法。。。
- SDL一些库的安装
- 工会i哦i哦i
- “3·01”严重暴力恐怖案成功告破
- 一种程序界面文字换肤方法
- iOS .a文件如何上传svn
- linux下一致性网关测试程序qt开发环境搭建