title: js轮播图透明度切换 date: 2016-04-25 10:22:16 tags: js
js轮播图透明度切换(带上下页和底部圆点切换)
<!--more-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js轮播图透明度切换</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
border: none;
}
li {
list-style: none;
}
#box {
height: 340px;
width: 790px;
position: relative;
margin: 100px auto;
}
#box #list1 {
height: 340px;
width: 790px;
}
#box #list1 li {
position: absolute;
font-size: 80px;
text-align: center;
height: 340px;
width: 790px;
left: 0;
top: 0;
opacity: 0;
filter: alpha(opacity=0);
}
#box #list1 li img {
height: 340px;
width: 790px;
}
#shang,#xia {
height: 80px;
width: 50px;
color: #212121;
background: #ccc;
font-size: 60px;
font-weight: bold;
line-height: 80px;
text-align: center;
position: absolute;
top: 130px;
opacity: 0.8;
filter: alpha(opacity=80);
cursor: pointer;
}
#shang {
left: 0;
}
#xia {
right: 0;
}
#box #list2 {
height: 20px;
width: 195px;
position: absolute;
left: 297px;
bottom: 25px;
opacity: 0.8;
filter: alpha(opacity=80);
}
#box #list2 li {
height: 20px;
width: 20px;
background: #ccc;
border-radius: 50%;
float: left;
margin-right: 5px;
cursor: pointer;
}
#box #list2 li.active {
background: black;
}
</style>
</head>
<body>
<div id="box">
<ul id="list1">
<li style="background: red;">1</li>
<li style="background: yellow;">2</li>
<li style="background: green;">3</li>
<li style="background: blue;">4</li>
<li style="background: blueviolet;">5</li>
<li style="background: brown;">6</li>
<li style="background: orangered;">7</li>
<li style="background: palevioletred;">8</li>
</ul>
<ul id="list2">
<li class="active"></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li style="margin-right:0px;"></li>
</ul>
<div id="shang">
<
</div>
<div id="xia">
>
</div>
</div>
<script type="text/javascript">
onload = function(){
var oBox = document.getElementById('box');
var oList1 = document.getElementById('list1');
var aLi1 = oList1.getElementsByTagName('li');
var oList2 = document.getElementById('list2');
var aLi2 = oList2.getElementsByTagName('li');
var oShang = document.getElementById('shang');
var oXia = document.getElementById('xia');
aLi1[0].style.opacity = 1;
aLi1[0].style.filter = 'alpha(opacity=100)';
var size = aLi1.length;
var i = 0;
var timer = setInterval(function(){
i++;
move();
},2000);
function move(){
if (i >= size ) {
i = 0;
}
if (i < 0 ) {
i = size - 1;
}
for (var j = 0; j < aLi1.length; j++) {
if (j == i) {
animate(aLi1[j],{opacity:100});
aLi2[j].className = 'active';
}else{
animate(aLi1[j],{opacity:0});
aLi2[j].className = '';
}
}
}
//前一张
oShang.onclick = function(e){
var evt = e || event;
evt.preventDefault();
i--;
move();
}
//后一张
oXia.onclick = function(e){
var evt = e || event;
evt.preventDefault();
i ++;
move();
}
//下面的圆点
for(var k = 0;k < aLi2.length; k ++){
aLi2[k].index = k;
aLi2[k].onmouseenter = function(){
i = this.index;
move();
}
}
oBox.onmouseenter = function(){
clearInterval(timer);
}
oBox.onmouseleave = function(){
timer = setInterval(function(){
i ++;
move();
},2000);
}
/*************************缓冲运动可封装留着以后备用^_^*************************/
function getStyleAttr(obj, attr){
if (window.getComputedStyle){
return getComputedStyle(obj, null)[attr];
}
else {
return obj.currentStyle[attr];
}
}
function animate(obj, json, fn){
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var bStop = true;
for (var attr in json){
var iTarget = json[attr];
var current;
if (attr == "opacity"){
current = parseFloat(getStyleAttr(obj, attr))*100;
current = Math.round(current);
}
else {
current = parseFloat(getStyleAttr(obj, attr));
current = Math.round(current);
}
var speed = (iTarget-current)/8; (400-393)/8
speed = speed>0 ? Math.ceil(speed) : Math.floor(speed);
if (current != iTarget){
bStop = false;
}
if (attr == "opacity"){
obj.style[attr] = (current+speed)/100;
obj.style.filter = "alpha(opacity=" + (current+speed) + ")";
}
else {
obj.style[attr] = current+speed + "px";
}
}
if (bStop){
console.log("停止运动");
clearInterval(obj.timer);
if (fn) {
fn();
}
}
}, 30);
}
}
</script>
</body>
</html>