第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

防止在離開拖動時(shí)單擊以在 js 中滾動

防止在離開拖動時(shí)單擊以在 js 中滾動

慕運(yùn)維8079593 2021-11-18 16:09:46
我有一個(gè)也可拖動的水平滾動 div。這個(gè) div 里面的元素是鏈接。每次我離開拖動它都會觸發(fā)點(diǎn)擊并將我發(fā)送到鏈接。有沒有辦法可以在離開拖動后阻止點(diǎn)擊,但在不拖動時(shí)保持可用?這是一個(gè)片段:const slider = document.querySelector('.wrapper');let isDown = false;let startX;let scrollLeft;slider.addEventListener('mousedown', (e) => {    isDown = true;    slider.classList.add('active');    startX = e.pageX - slider.offsetLeft;    scrollLeft = slider.scrollLeft;});slider.addEventListener('mouseleave', () => {    isDown = false;    slider.classList.remove('active');});slider.addEventListener('mouseup', () => {    isDown = false;    slider.classList.remove('active');});slider.addEventListener('mousemove', (e) => {    if(!isDown) return;    e.preventDefault();    const x = e.pageX - slider.offsetLeft;    const walk = (x - startX)*2;    slider.scrollLeft = scrollLeft - walk;});document.getElementsByClassName('.book').ondragstart = function() { return false; };.wrapper {    position: relative;    display: -webkit-box;    display: -webkit-flex;    display: -ms-flexbox;    display: flex;    overflow: auto;    min-width: 100%;}.book {    width: auto;    height: 100vh;    min-width: 50vw;}.one {  background-color: #d07fe0;  }  .two {  background-color: #808888;  }  .three {  background-color: #83e7dc;  }  .four {  background-color: #edf7a8;  }  .five {  background-color: #e9d98f;  }  .six {  background-color: #fdd;  }  <body><div class="wrapper">    <a href="https://stackoverflow.com/" class="book one"></a>    <a href="https://stackoverflow.com/" class="book two"></a>    <a href="https://stackoverflow.com/" class="book three"></a>    <a href="https://stackoverflow.com/" class="book four"></a>    <a href="https://stackoverflow.com/" class="book five"></a>    <a href="https://stackoverflow.com/" class="book six"></a></div></body>
查看完整描述

1 回答

?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

我可以建議的一種方法。


定義一個(gè)函數(shù) preventClick


const preventClick = (e) => {

        e.preventDefault();

        e.stopImmediatePropagation();

      }

定義一個(gè)變量isDragged以有條件地添加和刪除事件偵聽器。


let isDragged = false;

在mouseup事件中,您輸入 2 種情況,isDragged = false(單擊時(shí))或isDragged = true(拖動時(shí))


第一種情況: 移除阻止點(diǎn)擊傳播的事件監(jiān)聽器


第二種情況: 添加防止點(diǎn)擊傳播的事件監(jiān)聽器。


試試下面的代碼,讓我知道這是否有幫助。請注意,這不是優(yōu)化代碼。我正在為所有錨標(biāo)記添加和刪除事件處理程序,只是為了演示您可以遵循的方法。


const slider = document.querySelector(".wrapper");

      const preventClick = (e) => {

        e.preventDefault();

        e.stopImmediatePropagation();

      }

      let isDown = false;

      var isDragged = false;

      let startX;

      let scrollLeft;


      slider.addEventListener("mousedown", e => {

        isDown = true;

        slider.classList.add("active");

        startX = e.pageX - slider.offsetLeft;

        scrollLeft = slider.scrollLeft;

      });


      slider.addEventListener("mouseleave", () => {

        isDown = false;

        slider.classList.remove("active");

      });


      slider.addEventListener("mouseup", e => {

        isDown = false;

        const elements = document.getElementsByClassName("book");

        if(isDragged){

            for(let i = 0; i<elements.length; i++){

                  elements[i].addEventListener("click", preventClick);

            }

        }else{

            for(let i = 0; i<elements.length; i++){

                  elements[i].removeEventListener("click", preventClick);

            }

        }

        slider.classList.remove("active");

        isDragged = false;

      });


      slider.addEventListener("mousemove", e => {

        if (!isDown) return;

        isDragged =  true;

        e.preventDefault();

        const x = e.pageX - slider.offsetLeft;

        const walk = (x - startX) * 2;

        slider.scrollLeft = scrollLeft - walk;

      });


      document.getElementsByClassName("book").ondragstart = function() {

        console.log("Drag start");

      };

      .wrapper {

        position: relative;

        display: -webkit-box;

        display: -webkit-flex;

        display: -ms-flexbox;

        display: flex;

        overflow: auto;

        min-width: 100%;

      }


      .book {

        width: auto;

        height: 100vh;

        min-width: 50vw;

      }


      .one {

        background-color: #d07fe0;

      }


      .two {

        background-color: #808888;

      }


      .three {

        background-color: #83e7dc;

      }


      .four {

        background-color: #edf7a8;

      }


      .five {

        background-color: #e9d98f;

      }


      .six {

        background-color: #fdd;

      }

<body>

      <div class="wrapper">

        <a href="https://stackoverflow.com/" class="book one"></a>

        <a href="https://stackoverflow.com/" class="book two"></a>

        <a href="https://stackoverflow.com/" class="book three"></a>

        <a href="https://stackoverflow.com/" class="book four"></a>

        <a href="https://stackoverflow.com/" class="book five"></a>

        <a href="https://stackoverflow.com/" class="book six"></a>

      </div>

    </body>


查看完整回答
反對 回復(fù) 2021-11-18
  • 1 回答
  • 0 關(guān)注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號