1.图片淡入淡出自动轮播.
2.可以用按钮控制轮播.
效果图:
代码如下:
html+scc:
*{margin: 0;padding: 0;}html,body{width: 100%;}.container{position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);width: 800px;height: 500px;overflow: hidden;}.list img{position: absolute;left: 0;top: 0;width: 800px;height: 500px;opacity: 0;z-index: 1;transition: all 1s;}.list img:first-child{opacity: 1;z-index: 2;}.buttons{position: absolute;left: 50%;bottom: 20px;margin-left: -90px;width: 180px;text-align: center;cursor: pointer;z-index: 2;}.buttons span{display: inline-block;width: 20px;height: 20px;margin-right: 5px;border-radius: 50%;background: #aaa;border: 1px solid #fff;}.buttons span:last-child{margin-right: 0;}.buttons .on{background: #000;}.arrow{display: none;position: absolute;top: 230px;width: 40px;height: 40px;background: rgba(0,0,0,0.4);font-size: 40px;font-weight: bold;text-align: center;cursor: pointer;color: #fff;z-index: 2;}.container:hover .arrow{display: block;}#pre{left: 0;}#next{right: 0;}</style>
</head>
<body>
<div id="container" class="container"><div id="list" class="list" ><img src="i/8绣春刀.jpg" alt="绣春刀"><img src="i/1当幸福来敲门.jpg" alt="当幸福来敲门"><img src="i/2蝙蝠侠黑暗骑士.jpg" alt="蝙蝠侠黑暗骑士"><img src="i/3后天.jpg" alt="后天"><img src="i/7无间道.jpg" alt="无间道"></div><div id="buttonGroup" class="buttons"><span index="0" class="on"></span><span index="1"></span><span index="2"></span><span index="3"></span><span index="4"></span></div>
</div>
js:
function $(id) {return document.getElementById(id);}var buttonGroup=$("buttonGroup"),buttons=buttonGroup.getElementsByTagName('span'),list=$("list"),imgs=list.getElementsByTagName('img'),flag=0,container=$("container"),timer;function render(index){for(var i=0;i<imgs.length;i++){imgs[i].style.opacity="0";imgs[i].style.zindex="1";}imgs[index].style.zindex="2";imgs[index].style.opacity="1";}function bt_listen(event){if (event.target&&event.target.tagName.toLowerCase()=='span') {var index=event.target.getAttribute('index');flag=index;render(flag);showButton();}}function showButton(){for(var i=0;i<buttons.length;i++){buttons[i].className=buttons[i].className.replace(/\s*on/,"");}buttons[flag].className+=" on";}function play(){timer=setInterval(function(){if (flag==4) {flag=0;}else{flag++;}render(flag);showButton();},3000);}function stop(){clearInterval(timer);} function start(){buttonGroup.addEventListener('click',bt_listen,false);container.addEventListener('mouseenter',stop,false);container.addEventListener('mouseleave',play,false);play();} start();
思路:
让所有的图片都position:absolute,显示在一个容器内,设置除了第一张图片之外的所有图片opcity:0;将要显示的图片z-index设置为2,其他都设置为1.flag用来记录当前的索引值。
render(index)将索引为index的图片显示.
showButton()通过flag值来渲染当前图片对应的按钮.
bt_listen()为按钮的监听函数,取出当前被点击按钮的index属性,然后用render()函数来渲染图片,再调用showButton()渲染按钮.
play()为自动轮播函数,设置setInterval,当flag=4时,重置为0,否则flag++,然后调用render和showButton.