js编程中旋转轮播图的实例代码
最近一直在学习JavaScript,然后看到旋转轮播图的案例,就尝试着用js做了一个简单的轮播图,因为无法显示动态效果,所以就放个截图:
这个效果是这样的:一共有7张图片,它们会自动地向左滑动,然后左右箭头也可以控制轮播图的左滑和右滑,同时,如果鼠标停在图片上,那么轮播图会停止自动滑动,当鼠标移开时,将会继续向左轮播。
首先,我这里封装了两个函数(因为暂且还没有学jQuery,所以用了封装函数的方法来实现),第一个函数是$函数,调用可以获取html中的元素,代码如下:
`function $(select){ if (typeof select != 'string') { console.log('传入的参数有误'); return null; } var firstChar = select.charAt(0); switch(firstChar){ case '#': return document.getElementById(select.substr(1)); break; case '.': if (document.getElementsByClassName){ return document.getElementsByClassName(select.substr(1)); } else { var result = []; var allElemnts = document.getElementsByTagName('*'); console.log(allElemnts); for (var i = 0; i
第二个函数是一个动画函数,用json实现多条样式的动态改变,从而达到一个动画效果,代码如下: `
function animate(element, json, fun) { clearInterval(element.timer); function getStyle(element, styleName){ if(element.currentStyle){ //ie浏览器下 直接通过currentstyle来获取 //return element.currentStyle.heigh; return element.currentStyle[styleName]; }else{ var computedStyle = window.getComputedStyle(element,null); return computedStyle[styleName]; } } var isStop = false; element.timer = setInterval(function () { isStop = true; for (var key in json){ var target = json[key]; var current; if (key == 'opacity') { //当动画的类型为透明度时 获取的值应该是浮点类型 current = parseFloat(getStyle(element, key)) || 1; } else { //其他情况 用整数类型 current = parseInt(getStyle(element, key)) || 0; } var step = (target - current) / 10; if (key != 'opacity') { step = step > 0 ? Math.ceil(step) : Math.floor(step); } current += step; if (key == 'opacity') { if (Math.abs(target - current) > 0.01) { isStop = false; } else { current = target; } element.style.opacity = current + ''; } else { if (Math.abs(target-current) > Math.abs(step)) { isStop = false; } else { current = target; } if (key == 'zIndex'){ element.style.zIndex = Math.round(current); } else { element.style[key] = current + 'px'; } } } if (isStop) { clearInterval(element.timer); console.log('动画完成'); if (typeof fun == 'function') { fun(); } } }, 30); }`
接下来就要写html的部分了,因为只有几张图片,所以html的部分很简单:
<
body
>
<
div
class
=
"box"
>
<
div
class
=
"content"
>
<
ul
>
<
li
><
a
href
=
"#"
><
img
src
=
"./images/1.jpg"
></
a
></
li
>
<
li
><
a
href
=
"#"
><
img
src
=
"./images/2.jpg"
></
a
></
li
>
<
li
><
a
href
=
"#"
><
img
src
=
"./images/3.jpg"
></
a
></
li
>
<
li
><
a
href
=
"#"
><
img
src
=
"./images/4.jpg"
class
=
"current"
></
a
></
li
>
<
li
><
a
href
=
"#"
><
img
src
=
"./images/5.jpg"
></
a
></
li
>
<
li
><
a
href
=
"#"
><
img
src
=
"./images/6.jpg"
></
a
></
li
>
<
li
><
a
href
=
"#"
><
img
src
=
"./images/7.jpg"
></
a
></
li
>
</
ul
>
</
div
>
<
div
class
=
"control"
>
<
a
href
=
"javascript:;"
id
=
"prev"
></
a
>
<
a
href
=
"javascript:;"
id
=
"next"
></
a
>
</
div
>
</
div
>
</
body
>
css样式的部分也不多做叙述。
下面就是JS是部分啦,代码也很简单,理清楚就好
window.onload = function(){ //定位,并给图片设置大小透明度 var json = [{ width: 630, top: 23, left: 0, zIndex: 2, opacity: 0 },{ width: 630, top: 23, left: 0, zIndex: 3, opacity: 0 },{ width: 630, top: 23, left: 0, zIndex: 4, opacity: 0.6 },{ width: 730, top: 0, left: 125, zIndex: 5, opacity: 1 },{ width: 630, top: 23, left: 350, zIndex: 4, opacity: 0.6 },{ width: 630, top: 23, left: 350, zIndex: 3, opacity: 0 },{ width: 630, top: 23, left: 350, zIndex: 2, opacity: 0 }];
function
refreshImageLocatin(index){
//默认情况下 第i张图对应第i个位置
//index=1时 第i个图对应i-1个位置
//也就是第i个图对应i-index的位置
var
liArr = $(
'li'
);
for
(
var
i = 0; i < liArr.length; i++){
var
li = liArr[i];
var
locationIndex = i - index;
console.log(
'i='
+i);
console.log(
'index='
+index);
console.log(
'locationIndex='
+locationIndex);
if
(locationIndex < 0){
locationIndex += 7;
}
var
locationData = json[locationIndex];
animate(li, locationData,
null
);
}
}
refreshImageLocatin(0);
var
index = 0;
$(
'#next'
).onclick =
function
(){
index++;
if
(index == 7){
index = 0;
}
refreshImageLocatin(index);
}
$(
'#prev'
).onclick =
function
(){
index--;
if
(index < 0){
index = 6;
}
refreshImageLocatin(index);
}
var
nextImage = $(
'#next'
).onclick;
var
contentBox = $(
'.content'
)[0];
//自动播放
var
timer = setInterval(nextImage, 3000);
//当鼠标移动到图片上,停止播放
contentBox.onmouseover =
function
(){
clearInterval(timer);
}
contentBox.onmouseout =
function
(){
timer = setInterval(nextImage ,3000)
}
}
js编程中旋转轮播图的实例代码不知道朋友们都看明白了吗?想要深入了解js编程内容,可以来爱站技术频道网站翻阅查看,小编每天不定时更新各种文章内容给大家。
上一篇:js三级联动菜单的实例代码
下一篇:JS中的Screen屏幕对象详解