原生Js 實(shí)現(xiàn)的簡(jiǎn)單無(wú)縫滾動(dòng)輪播圖的示例代碼
簡(jiǎn)單無(wú)縫滾動(dòng)輪播圖存在很多漏洞,就是后期增加圖片時(shí)會(huì)很不方便,需要改動(dòng)的地方也很多,耦合性也很強(qiáng),只適用于一部分程序,所以我們可以通過(guò)改動(dòng)圖片結(jié)構(gòu)和計(jì)算折算點(diǎn)的方式,升級(jí)代碼。
原簡(jiǎn)單的滾動(dòng)輪播代碼
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.scroll{
position: relative;
width: 830px;/*展示寬度 展示4個(gè)圖+3個(gè)邊框=830*/
height: 130px;
border: 10px solid rgb(15, 15, 15);
margin: 100px auto;
overflow: hidden;
}
.scroll ul{
position: absolute;
width: 5000px;/*ul能存下所有l(wèi)i的寬*/
height: 130px;
top: 0;
left: 0;
}
.scroll ul li{
float: left;
width: 200px;
height: 130px;
margin-right: 10px;
overflow: hidden;
}
</style>
</head>
<body>
<div id="scroll" class="scroll">
<ul id="munit">
<li><img src="../BOM/shuzi/3.png" alt=""></li>
<li><img src="../BOM/shuzi/4.png" alt=""></li>
<li><img src="../BOM/shuzi/5.png" alt=""></li>
<li><img src="../BOM/shuzi/6.png" alt=""></li>
<li><img src="../BOM/shuzi/7.png" alt=""></li>
<li><img src="../BOM/shuzi/8.png" alt=""></li>
<li><img src="../BOM/shuzi/9.png" alt=""></li>
<li><img src="../BOM/shuzi/3.png" alt=""></li>
<li><img src="../BOM/shuzi/4.png" alt=""></li>
<li><img src="../BOM/shuzi/5.png" alt=""></li>
<li><img src="../BOM/shuzi/6.png" alt=""></li>
<li><img src="../BOM/shuzi/7.png" alt=""></li>
<li><img src="../BOM/shuzi/8.png" alt=""></li>
<li><img src="../BOM/shuzi/9.png" alt=""></li>
</ul>
</div>
<script>
//獲取元素
var scroll = document.getElementById("scroll");
var munit = document.getElementById("munit");
var li = munit.children;
// 進(jìn)行滾動(dòng)
var nowLeft = 0;
//要找到ul元素運(yùn)動(dòng)的折返點(diǎn)
var back = -1470;//圖和邊框是li的寬度,展示的有4張圖,所以折返點(diǎn)就是1260
//定時(shí)器
var timer = setInterval(run,20);
// 鼠標(biāo)移上scroll停止
scroll.onmouseover = function(){
clearInterval(timer);
}
// 移開輪播
scroll.onmouseout = function(){
timer = setInterval(run,20);
}
//運(yùn)動(dòng)函數(shù)
function run(){
nowLeft -= 2;
//判斷是否走到了折返點(diǎn),走到了,則瞬間切換到0位置
if(nowLeft <= back){
nowLeft = 0;
}
munit.style.left = nowLeft + "px";
}
</script>
</body>
</html>
在<div id="scroll">結(jié)構(gòu)給ul新增的一個(gè)父級(jí)div,這樣之后添加圖片,后期通過(guò)獲取ul寬度就可以了計(jì)算折算點(diǎn)
1、折返點(diǎn)計(jì)算需要通過(guò)Js自動(dòng)計(jì)算
var back = -munit.offsetWidth;//元素左移,值為負(fù)數(shù)
2、自動(dòng)生成另一組對(duì)應(yīng)的圖片結(jié)構(gòu) li
munit.innerHTML = munit.innerHTML + munit.innerHTML;//這樣就會(huì)增加一組li標(biāo)簽,后期增加圖片也會(huì)隨之增加
修改部分代碼,
css改寫部分:
/*給ul新增的一個(gè)父級(jí)div,這樣添加圖片后期獲取ul寬度 就可以了 */
.scroll .inner{
position: relative;
width: 5000px;
}
.scroll ul{
position: absolute;
height: 130px;
top: 0;
left: 0;
list-style: none;
body改寫部分:
<body>
<div id="scroll" class="scroll">
<div class="inner">
<ul id="munit">
<li><img src="../BOM/shuzi/3.png" alt=""></li>
<li><img src="../BOM/shuzi/4.png" alt=""></li>
<li><img src="../BOM/shuzi/5.png" alt=""></li>
<li><img src="../BOM/shuzi/6.png" alt=""></li>
<li><img src="../BOM/shuzi/7.png" alt=""></li>
<li><img src="../BOM/shuzi/8.png" alt=""></li>
<li><img src="../BOM/shuzi/9.png" alt=""></li>
<li><img src="../BOM/shuzi/10.png" alt=""></li>
</ul>
</div>
</div>
JS改寫部分:
<script>
//獲取元素
var scroll = document.getElementById("scroll");
var munit = document.getElementById("munit");
//改寫部分
//1 折返點(diǎn)計(jì)算需要通過(guò)Js自動(dòng)計(jì)算
var back = -munit.offsetWidth;//元素左移,值為負(fù)數(shù)
//2 自動(dòng)生成另一組對(duì)應(yīng)的圖片結(jié)構(gòu) li
munit.innerHTML = munit.innerHTML + munit.innerHTML;
// 進(jìn)行滾動(dòng)
var nowLeft = 0;
//定時(shí)器
var timer = setInterval(run,20);
// 鼠標(biāo)移上scroll停止
scroll.onmouseover = function(){
clearInterval(timer);
}
// 移開輪播
scroll.onmouseout = function(){
timer = setInterval(run,20);
}
//運(yùn)動(dòng)函數(shù)
function run(){
nowLeft -= 1;
//判斷是否走到了折返點(diǎn),走到了,則瞬間切換到0位置
if(nowLeft <= back){
nowLeft = 0;
}
munit.style.left = nowLeft + "px";
}
</script>
</body>
</html>
這樣的代碼耦合性低,也適合任意個(gè)數(shù)的li、任意大小的圖片的加入
以上就是原生Js 實(shí)現(xiàn)的簡(jiǎn)單無(wú)縫滾動(dòng)輪播圖的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Js 實(shí)現(xiàn)的簡(jiǎn)單無(wú)縫滾動(dòng)輪播圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
javascript中時(shí)區(qū)知識(shí)的整理UTC GMT問(wèn)題
這篇文章主要介紹了javascript中時(shí)區(qū)知識(shí)的整理UTC GMT問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
js移動(dòng)端事件基礎(chǔ)及常用事件庫(kù)詳解
這篇文章主要為大家詳細(xì)介紹了js移動(dòng)端事件基礎(chǔ)及常用事件庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
JavaScript中解決多瀏覽器兼容性23個(gè)問(wèn)題的快速解決方法
下面小編就為大家?guī)?lái)一篇JavaScript中解決多瀏覽器兼容性23個(gè)問(wèn)題的快速解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
關(guān)于在Servelet中如何獲取當(dāng)前時(shí)間的操作方法
下面小編就為大家?guī)?lái)一篇關(guān)于在Servelet中如何獲取當(dāng)前時(shí)間的操作方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06

