一般实现无缝轮播都需要辅助图,所以就想问下有不需要辅助图的方法吗。
不需要辅助图,但是需要至少有3张图
1张图 应该不需要滚动
2张图 复制成4张图就可以
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Banner</title>
<style>
.banner {position:relative;margin:0 40px;width:300px;height:200px;border-radius:10px;background:url('') center #F6F6F6;overflow:hidden;}
.banner .item {position:absolute;width:300px;height:200px;left:300px;background:center center/contain transparent;z-index:1;}
.banner .item.transition {
-webkit-transition: left 1s;
-moz-transition: left 1s;
-ms-transition: left 1s;
-o-transition: left 1s;
transition: left 1s;
}
.banner .item-off {left:-300px;z-index:2;}
.banner .item-active {left:0;z-index:4;}
</style>
<script>
document.addEventListener('DOMContentLoaded', function(){
(function(){
let delay = 2000;
let arrItem = Array.prototype.slice.call(document.querySelectorAll('.banner .item'));
let cntItem = arrItem.length;
let idx = 0;
function next()
{
let idxOff = idx - 1;
if(idxOff < 0)
idxOff = cntItem - 1;
arrItem[idxOff].classList.remove('item-off');
arrItem[idx].classList.remove('item-active');
arrItem[idx].classList.add('item-off');
idx ++;
if(idx >= cntItem)
idx = 0;
arrItem[idx].classList.add('item-active');
setTimeout(next, delay);
}
function init()
{
arrItem[idx].classList.add('item-active');
if(cntItem > 1)
{
setTimeout(next, delay);
}
}
init();
})();
});
</script>
</head>
<body>
<div class="banner">
<a class="item transition" href="javascript:void(0)" style="background-image:url(https://live-static.segmentfault.com/119/956/1199561634-5e676d01590e7_render)"></a>
<a class="item transition" href="javascript:void(0)" style="background-image:url(https://live-static.segmentfault.com/119/956/1199561634-5e676d01590e7_render)"></a>
<a class="item transition" href="javascript:void(0)" style="background-image:url(https://live-static.segmentfault.com/197/853/1978530267-5e0d58e51c159_render)"></a>
</div>
</body>
</html>
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
绝对定位。你把轮播想象成两个DOM。移过来移过去