輪滑效果,控制啟停鸳址,控制停留最小時間

本例主要實現(xiàn)三個需求:
1.點擊開始則給計時器并運作
2.中途停止時點擊開始則繼續(xù)
3.到點停止時點擊開始則沒有滿三秒不準繼續(xù),滿則繼續(xù)

html部分

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="../../dom類測試/reset.css" />
    <style>
      html,
      body {
        width: 100%;
        height: 100%;
      }
      .container {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
      }
      .out-block {
        width: 260px;
        height: 150px;
        margin: 0 auto;
        background-color: rgb(35, 35, 35, 0.6);
        overflow: auto;
        display: flex;
        justify-content: center;
        align-items: center;
      }
      .out-block ul {
        white-space: nowrap;
      }
      .out-block ul li {
        width: calc(100% - 20px);
        display: inline-block;
        list-style-type: none;
        margin: 10px;
      }
      .out-block ul li .img-blcok {
        width: 100%;
        height: 100px;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <button onclick="start()">開始</button>
      <button onclick="end()">結束</button>
      <div class="out-block">
        <ul>
          <li>
            <div class="img-blcok">
              <img
                src="../../測試文件/-6e24b109b13b4c98.jpg"
                alt=""
                width="100%"
                height="100%"
              />
            </div>
          </li>
          <li>
            <div class="img-blcok">
              <img
                src="../../測試文件/110328s72xxse7lfis9fnd.jpg"
                alt=""
                width="100%"
                height="100%"
              />
            </div>
          </li>
          <li>
            <div class="img-blcok">
              <img
                src="../../測試文件/155922dx0d0yyy7ukzxqyw.jpg"
                alt=""
                width="100%"
                height="100%"
              />
            </div>
          </li>
          <li>
            <div class="img-blcok">
              <img
                src="../../測試文件/213601f2xz7usscm2z1mjh.jpg"
                alt=""
                width="100%"
                height="100%"
              />
            </div>
          </li>
          <li>
            <div class="img-blcok">
              <img
                src="../../測試文件/u=3777236932,922309564&fm=214&gp=0.jpg"
                alt=""
                width="100%"
                height="100%"
              />
            </div>
          </li>
          <li>
            <div class="img-blcok">
              <img
                src="../../測試文件/bb4aa884e3493ba7efcbafdcc71dede0fb150bee.jpg"
                alt=""
                width="100%"
                height="100%"
              />
            </div>
          </li>
          <li>
            <div class="img-blcok">
              <img
                src="../../測試文件/img-8d57a33b99ba5eec789e54561cad7a0f.jpg"
                alt=""
                width="100%"
                height="100%"
              />
            </div>
          </li>
        </ul>
      </div>
    </div>
  </body>
</html>

html部分主要是在一個區(qū)域內(nèi)放幾張圖片泉懦,只留露出一張圖片的尺寸,這也是大部分輪播圖的實現(xiàn)方式疹瘦。

js部分
使用了函數(shù)式編程思想崩哩,代碼變得簡潔凝練很多

      // 點停止則停,中途點則停,到點停則停邓嘹,三秒后給滿三秒的標志

      // 1.運作 2.停止 3.計時三秒給標志

      let outBlock = document.getElementsByClassName("out-block")[0];
      let interValTimer = null;
      let timeoutTimer = null;
      let timeout = 3000;
      let isClickStop = true;
      let isClickstart = false;
      let isAtPoint = false;
      let isDown = true;

      //給計時器
      let makeTimer = function () {
        //單例模式
        if (!interValTimer) {
          interValTimer = setInterval(() => {
            //執(zhí)行回調(diào)
            intValOperater()

            //此處時間固定為2s
          }, 5);
        }
      };
      //運作:
      let scrollGoOn = function () {
        outBlock.scrollLeft++;
      };

      //停止:
      let scrollStop = function () {
        window.clearInterval(interValTimer);
        interValTimer = null;
      };

    //   到點操作
    let intValOperater = function(){
        isAtPoint  = false; 
            isDown = true;
       //判斷是否到點,為立即執(zhí)行的依據(jù)
        let scrollLeft = Math.floor(outBlock.scrollLeft)

        if (scrollLeft !== 0 && Math.floor(scrollLeft) % 265 === 0) {
            isAtPoint  = true; 
            isDown = false;

            //單例,到點則起碼等三秒,三秒內(nèi)點擊開始則無效
            if(!timeoutTimer){
            timeoutTimer = setTimeout(() => {
                isDown = true;
                

      //點擊結束,三秒內(nèi)點擊開始無效,次數(shù)為偵聽
            if(isClickstart){
                start()
                isClickstart = false;
            }else{
                scrollGoOn()
            }

                //配合單例
                window.clearTimeout(timeoutTimer)
                timeoutTimer = null


                }, timeout);
            }
        }else{
            scrollGoOn()
        }
    }

      //點擊開始
      let start = function () {
          if(isDown){
              if(isClickStop){
                makeTimer()
                isClickStop = false;
              }
              //繼續(xù)走
            scrollGoOn()
          }else{
            isClickstart = true;
          }
      };

      let end = function(){
          //點擊停止則任何時候都可以停止
          scrollStop()
          isClickStop = true;
      }

總結:
輪播圖核心思想就是橫向(或者豎向)擺放多張圖片酣栈,只保留一張圖的展示位置,其余圖片隱藏汹押。然后添加定時器矿筝,用將滾動條移動,則圖片自然就輪播了棚贾。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窖维,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子妙痹,更是在濱河造成了極大的恐慌铸史,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怯伊,死亡現(xiàn)場離奇詭異琳轿,居然都是意外死亡,警方通過查閱死者的電腦和手機耿芹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門崭篡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吧秕,你說我怎么就攤上這事琉闪。” “怎么了寇甸?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵塘偎,是天一觀的道長。 經(jīng)常有香客問我拿霉,道長吟秩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任绽淘,我火速辦了婚禮涵防,結果婚禮上,老公的妹妹穿的比我還像新娘沪铭。我一直安慰自己壮池,他們只是感情好,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布杀怠。 她就那樣靜靜地躺著椰憋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赔退。 梳的紋絲不亂的頭發(fā)上橙依,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天证舟,我揣著相機與錄音,去河邊找鬼窗骑。 笑死女责,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的创译。 我是一名探鬼主播抵知,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼软族!你這毒婦竟也來了刷喜?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤互订,失蹤者是張志新(化名)和其女友劉穎吱肌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仰禽,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡氮墨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吐葵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片规揪。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖温峭,靈堂內(nèi)的尸體忽然破棺而出猛铅,到底是詐尸還是另有隱情,我是刑警寧澤凤藏,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布奸忽,位于F島的核電站,受9級特大地震影響揖庄,放射性物質(zhì)發(fā)生泄漏栗菜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一蹄梢、第九天 我趴在偏房一處隱蔽的房頂上張望疙筹。 院中可真熱鬧,春花似錦禁炒、人聲如沸而咆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暴备。三九已至,卻和暖如春们豌,著一層夾襖步出監(jiān)牢的瞬間馍驯,已是汗流浹背阁危。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留汰瘫,地道東北人。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓擂煞,卻偏偏與公主長得像混弥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子对省,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354