<style>
*{
padding: 0;
margin: 0;
}
#banner{
position: relative;
margin: 200px 400px;
height: 200px;
width: 400px;
}
li{
list-style: none;
width: 400px;
height: 200px;
position: absolute;
}
#banner div{
position: absolute;
width: 100%;
bottom: 40%;
opacity: 0;
}
#banner div span{
width: 40px;
height: 40px;
color: #fff;
font-size: 30px;
background-color: #000;
opacity: 0.4;
text-align: center;
line-height: 40px;
display: block;
float: left;
cursor: pointer;
}
#banner div #right{
float: right;
}
</style>
<div id="banner">
<ul>
<li style="background-color: gold;"></li>
<li style="background-color: plum;"></li>
<li style="background-color: yellowgreen;"></li>
<li style="background-color: skyblue;"></li>
<li style="background-color: pink;"></li>
</ul>
<div><span id="left"><</span><span id="right">></span></div>
</div>
<script>
function my$(id){
return document.getElementById(id);
}
var list = my$("banner").getElementsByTagName("li");
var focus = my$("banner").children[1];
var config = [
{"width": 200,"top":-50,"left":-60,"opacity":0.2,"zIndex":0},
{"width": 300,"top":-20,"left":-100,"opacity":0.8,"zIndex":9},
{"width": 400,"top":0,"left":0,"opacity":1,"zIndex":99},
{"width": 300,"top":-20,"left":200,"opacity":0.8,"zIndex":9},
{"width": 200,"top":-50,"left":260,"opacity":0.2,"zIndex":0},
];
var flag = true;
function assign(){
for(var i = 0; i < list.length; i++){
animation(list[i],config[i],function(){
flag = true;
});
}
}
assign();
my$("right").onclick = function(){
if(flag){
flag = false;
config.push(config.shift());
assign();
}
}
my$("left").onclick = function(){
if(flag){
flag = false;
config.unshift(config.pop());
assign();
}
}
my$("banner").onmouseover = function(){
animation(focus,{"opacity": 1, "zIndex": 100});
}
my$("banner").onmouseout = function(){
animation(focus,{"opacity": 0, "zIndex": 0});
}
function getStyle(element, attr){
return window.getComputedStyle ? window.getComputedStyle(element,null)[attr] : element.currentStyle[attr] || 0;
}
function animation(element, json, fn){
clearInterval(element.timeId);
element.timeId = setInterval(function(){
var flag = true;
for(var key in json){
if(key == "opacity"){
var current = getStyle(element, key) * 100;
var target = json[key] * 100;
var step = (target - current)/10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
current += step;
element.style[key] = current/100;
}else if(key == "zIndex"){
element.style[key] = target;
}else{
var current = parseInt(getStyle(element, key));
var target = json[key];
var step = (target - current)/10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
current += step;
element.style[key] = current + "px";
}
if(current != target){
flag = false;
}
}
if(flag){
clearInterval(element.timeId);
if(fn){
fn();
}
}
},10);
}
</script>