//获取轮播图的ul元素
var banner = document.getElementById('banner_ul');
//获取轮播图里的每个图片(数组)
var banner_li = document.getElementById('banner_ul').getElementsByTagName('li');
//获取轮播图底部的按钮ul元素
var banner_btn_ul = document.getElementById('banner_ul');
//获取轮播图按钮的每个按钮(数组)
var banner_btn = document.getElementById('banner_btn').getElementsByTagName('li');
// 参数node:将要获取其计算样式的元素节点
function getStyle(node) {
var style = null;
if(window.getComputedStyle) {
style = window.getComputedStyle(node,null);
}else{
style = node.currentStyle;
}
return style;
}
//通过底部按钮改变图片
//1.对底部按钮进行监视
for (var i=0;i < banner_btn.length;i++) {
banner_btn[i].onclick = function(){
btn_remove(this);
}
}
//2.获取到点击的是第几个按钮,通过索引进行变换
function btn_remove(obj){
//2.1获取点击的是第几个按钮
for (var i = 0;i < banner_btn.length; i++) {
if (banner_btn[i] == obj) {
break;
}
}
//2.2改变轮播图片left的值
for (var j = 0;j < banner_btn.length; j++) {
banner_li[j].style.left = "-" + i*1000 + "px";
}
//2.3改变颜色
setColor();
}
function Left(){
//获取当前轮播图的left位置
var cur = getStyle(banner_li[0]).left;
cur = parseInt(cur);
//因为当元素移动时,left的属性值不是一个整数
//但是仍在(-5000px ~ 0px)之间,所以还得判断left的值是不是整数
if (cur <= 0 && cur > -5000 && cur%1000==0) {
cur = cur - 1000 + "px";
//给每个轮播图里的li元素改变其left值
for (var i = 0; i < banner_li.length; i++) {
banner_li[i].style.left = cur;
}
//改变底部按钮的颜色
setColor();
}
else if (cur == -5000){
for (var i = 0; i < banner_li.length; i++) {
banner_li[i].style.left = "0px";
}
setColor();
}
}
function Right(){
//获取当前轮播图的位置
var cur = getStyle(banner_li[0]).left;
cur = parseInt(cur);
if (cur >= -5000 && cur < 0 && cur%1000==0) {
cur = cur + 1000 + "px";
for (var i = 0; i < banner_li.length; i++) {
banner_li[i].style.left = cur;
}
setColor();
}
else if (cur == 0){
for (var i = 0; i < banner_li.length; i++) {
banner_li[i].style.left = "-5000px";
}
setColor();
}
}
//改变底部按钮颜色
function setColor() {
//定义目前的中间图片所对应的那个按钮
//利用left的值除以图片的长度
var index_btn = parseInt(banner_li[0].style.left) / -1000;
//给每个按钮的透明度设为0.3
for (var i = 0; i < banner_btn.length; i++) {
banner_btn[i].style.opacity = "0.3";
}
//给目前显示图片所对应的按钮单独设置透明度
banner_btn[index_btn].style.opacity = "1";
}
//定时器
function autoPlay() {
timer = setInterval(function(){
Left();
},3000)
}
autoPlay();
//当鼠标移入路轮播图的盒子时,停止计时器,移除开始。
//(获取banner时,不能使用class获取,测试使用class获取,定时器无用)
var bigBanner = document.getElementById('banner');
bigBanner.onmouseover = function () {
clearInterval(timer);
}
bigBanner.onmouseout = function () {
autoPlay();
}
网友评论