javascript - 滚动时背景颜色闪烁

标签 javascript html jquery css

我的代码是当用户在每个div上touchstart时应用div背景颜色。这对你来说很清楚。
然后,当用户滚动时,我使用 $(window).scroll.. 事件来重置删除所有背景颜色div 的。


但我的问题是:当用户(触摸 + 滚动)div时,< strong>背景颜色正在闪烁颜色!我想:在(点击、触摸+滚动)时不要更改 div 背景颜色。
如果您不明白我的意思问题,你可以看到:(facebook Messenger 好友对话、snapchat 对话、故事等)

闪烁的div:
enter image description here
我的代码:https://www.w3schools.com/code/tryit.asp?filename=GLUIAUU64MDX - 在触摸设备上运行。

$(window).scroll(function() {
  resetBg();
});

$(".❄").on('touchstart', function() {
  $(this).css("background-color", "#7bffea");
});

$(".❄").on('touchend mouseleave mouseup blur click', function() {
  resetBg();
});

function resetBg() {
  $(".❄").css("background-color", "");
}
div.❄ {
    display: block;
    height: 150px;
    border: 1px solid black;
    margin: 10px 0px;
    padding: 0px;
    border-radius: 8px;
    background-color: #ffffff;
  }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div class="❄"></div>
  <div class="❄"></div>
  <div class="❄"></div>
  <div class="❄"></div>
  <div class="❄"></div>
  <div class="❄"></div>
  <div class="❄"></div>
  <div class="❄"></div>
  <div class="❄"></div>
  <div class="❄"></div>

最佳答案

您可以在 touchstart 处获取指针位置,并在 touchend 上检查指针位置是否更改,而不是在 touchstart 上设置背景。如果没有,请更改div背景并设置超时功能以重置它。如果指针的位置改变了,那么它就是一个滚动,所以你不需要改变背景

let initialY = null;

$(".❄").on('touchstart', function(e) {
  initialY = e.clientY;
});

$(".❄").on('touchend', function(e) {
  if(e.clientY===initialY){
     $(this).css("background-color", "#7bffea");
    setTimeout(()=>{    //This is optional
      resetBg();
    },100);
  }
});

function resetBg() {
  $(".❄").css("background-color", "");
}

关于javascript - 滚动时背景颜色闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65379158/

相关文章:

jquery - 隐藏没有 src 的图像

javascript - 是否有一个函数可以检查一个数组是否包含另一个数组?

javascript - vuejs 在@click 事件中使用箭头函数

javascript - 如何使用 Express 传输 mp3 文件

javascript - 我们如何在 ionic 应用程序中隐藏启动画面?

html - 如果类只能包含一个元素,为什么还要有 id 这样的东西呢?

html - 替代 & 和 %26

javascript - 使用 jQuery 将监听器附加到 iframe 内的顶部窗口焦点事件

javascript - 使用 select 标签中的选项作为 Javascript 的输入

javascript - jquery 事件中的参数