純生JS輪播,定時器新增和清除定時器
js輪播筆記
程式碼實現了簡單的文字左右切換和圖片覆蓋隱藏效果,點選方框按鈕會切換圖片及文字描述,滑鼠放上圖片時清除定時器
html
<div class="phoShow" id="phoShow">
<ul class="phoUl" id="phoUl">
<li class="phoShow"><a href="#"><img src="images/moShou.jpg" height="300" width="630"/></a></li>
<li><a href="#"><img src="images/a1.jpg" height="300" width="630"/></a></li>
<li><a href="#"><img src="images/a2.jpg" height="300" width="630"/></a></li>
<li><a href="#"><img src="images/a3.jpg" height="300" width="630"/></a></li>
</ul>
<div class="outline">
<div class="test">
<ul class="clkUl" id="clkUl">
<li>魔獸世界原畫集</li>
<li>隨便亂編1</li>
<li>不夠充數2</li>
<li>胡編亂插3</li>
</ul>
</div>
</div>
<div class="dots" id="dots"></div>
</div>
<script src="js/show.js"></script>
css
*{
padding: 0;
margin: 0;
}
ul,ol,li{
list-style: none;
}
.clear{
clear: both;
height: 0;
overflow: hidden;
font-size: 0;
line-height: 0;
}
body{
font-family:Arial,Verdana,"微軟雅黑","宋體";
}
a{
text-decoration: none;
}
.phoShow,
.phoUl,
.phoUl>li,
.phoUl>li>a{
width: 630px;
height: 300px;
}
.phoShow{
margin-right: auto;
margin-left: auto;
margin-top: 100px;
position: relative;
overflow: hidden;
}
.phoUl{
overflow: hidden;
}
.phoUl>li{
position: absolute;
left: 0;
bottom: 0;
transition: all 1s;
overflow: hidden;
}
.phoUl>li:not(.phoShow){
opacity: 0;
}
.phoShow{
opacity: 1;
}
.phoUl>li>a{
display: block;
}
.outline,
.test,
.clkUl,
.clkUl>li{
height: 74px;
}
.outline{
position: absolute;
width: 630px;
left: 0;
bottom: 0;
background: rgba(0,0,0,0.6);
}
.test{
width: 126px;
margin-left: 55px;
z-index: 10;
overflow: hidden;
}
.clkUl{
width: 504px;
transition: all 0.2s;
}
.clkUl>li{
float: left;
font-size: 18px;
width: 126px;
line-height: 74px;
color: #ffffff;
}
.phoShow{
animation: show 0.5s both;
}
.dots{
position: absolute;
right: 35px;
bottom: 29px;
height: 16px;
z-index: 20;
}
.dots span{
display: inline-block;
margin-right: 10px;
width: 16px;
height: 16px;
background: white;
cursor: pointer;
transition: all 0.2s;
}
.dots .on{
background: #b60973;
animation: show 0.2s both;
}
@keyframes show {
0%{
transform: scale(1.2) rotateZ(60deg);
}
100%{
transform: scale(1) rotateZ(0deg);
}
}
js
{
let phoDiv = document.getElementById("phoShow");// 獲取整個板塊的div
let phoUl = document.getElementById("phoUl"); // 獲取裝圖片的ul
let clkUl = document.getElementById("clkUl"); // 獲取圖片上的文字的ul
let dots = document.getElementById("dots"); // 獲取切換圖片按鈕div
let picCd = phoUl.children; // 獲取裝每一個圖片的li
let listCd = dots.children; // 獲取每個圖片上文字的li
let index = 0; // 初始化索引
let myset = null; // 初始化定時器變數
let moveFun = function (index) { // 讓圖片輪播的函式
clkUl.style.marginLeft = -126 * index + "px" ; // 每次執行函式讓圖片對應的文字顯示出現
for (let j = 0; j < picCd.length; j++) { // 迴圈圖片的長度
listCd[j].classList.remove("on"); // 去除全部按鈕的class樣式
picCd[j].classList.remove("phoShow"); // 去除全部圖片的class樣式
}
listCd[index].classList.add("on"); // 給展示出來的按鈕新增樣式
picCd[index].classList.add("phoShow"); // 給展示出來的圖片新增樣式
};
for (let i = 0; i < picCd.length; i++) {
let newSpan = document.createElement("span"); // 根據圖片的個數創造按鈕
dots.appendChild(newSpan); // 將按鈕加到div中
( i === 0 )&&( newSpan.classList.add("on")); // 給第一個按鈕新增樣式
listCd[i].addEventListener("click",function () {// 點選每個按鈕執行函式
moveFun(i); // 執行輪播函式
index = i; // 點選第幾個按鈕就將索引重置為幾
});
}
let IntervalFun = function(){ // 定義定時器函式
myset = setInterval(function () {
index++; // 每次執行函式就讓索引自加
if (index >= picCd.length) { // 如果索引大於圖片個數就重置索引,意味著輪播重新開始
index = 0;
}
moveFun(index); // 呼叫輪播函式,傳入索引值
},2000); // 定時器每兩秒執行一次
};
phoDiv.addEventListener("mouseenter",function () { // 滑鼠放上圖片時停止定時器
clearInterval( myset );
});
phoDiv.addEventListener("mouseleave",function () { // 滑鼠移開圖片時重新開始定時器
IntervalFun(); // 呼叫定時器函式
});
IntervalFun(); // 例項化定時器函式
}
myset變數要先在函式外部定義,不然後面的mouseenter事件無法清除定時器,定時器函式定義後要再次將他呼叫,不然無法訪問使用。
相關文章
- 輪播圖(JavaScript定時器)JavaScript定時器
- js定時器JS定時器
- javascript怎麼清除所有定時器JavaScript定時器
- js 定時器 繫結classJS定時器
- JS學習之Bom(window和定時器)JS定時器
- GO的定時器Timer 和定時任務cronGo定時器
- 定時器以及定時器的幾個案例定時器
- 定時器(setInterval、setTimeout 和requestAnimationFrame)定時器requestAnimationFrame
- JS定時器和單執行緒非同步特性JS定時器執行緒非同步
- Timer(定時器)定時器
- python定時器Python定時器
- JavaScript 定時器JavaScript定時器
- JavaScript定時器JavaScript定時器
- iOS定時器iOS定時器
- 定時器JS深入理解解讀定時器JS
- 深度剖析定時器、提一嘴事件輪循定時器事件
- MYSQL定時任務-定時清除備份資料MySql
- Qt - QTimer(定時器)QT定時器
- TIM-定時器定時器
- python flask 定時器PythonFlask定時器
- Flink onTimer定時器定時器
- java 中定時器Java定時器
- Qt QTimer定時器QT定時器
- Linux核心定時器Linux定時器
- JMeter—定時器(八)JMeter定時器
- Systemd 定時器教程定時器
- Java - Timer定時器Java定時器
- 手動實現輪播圖(二):迴圈滾動、定時切換與指示器
- 馴服定時器和執行緒定時器執行緒
- 極簡 Node.js 入門 - 2.4 定時器Node.js定時器
- BIOS相關定時器iOS定時器
- 19. 通用定時器定時器
- workerman定時器問題定時器
- odoo12 定時器Odoo定時器
- (八)定時計數器
- JavaScript6:定時器JavaScript定時器
- 5.9 jmeter元件-定時器JMeter元件定時器
- Java之定時器TimerJava定時器