在触摸设备上使用js删除自定义光标

mrphzbgm  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(221)

我在我的网站上有一个自定义光标,我想在触摸设备(手机/平板电脑)上隐藏它。我已经成功地做到了这一点,但当你访问网站的一瞬间,光标出现在左上角,然后被隐藏。有什么方法可以阻止它的显示吗?
这是im用于删除触摸设备上光标id的代码。

jQuery(document).ready(function($) {
{
    if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone/i.test(navigator.userAgent)) {
    $('#custom-cursor').remove();
}
}
});
jQuery(document).ready(function($) {
let cursor = document.querySelector('#custom-cursor');
document.addEventListener('mousemove', evt => {

  let { clientX: x, clientY: y } = evt;
  let scale = 1;

  if (evt.target.matches('a,span,[onclick],img,video,i')) {
    cursor.classList.add('active');
    scale = 0.5;
  } else {
    cursor.classList.remove('active');
  }

  cursor.style.transform = `translate(${x}px, ${y}px) scale(${scale})`;

});
});

* {

  cursor: none;
}

# custom-cursor {

  position: fixed;
  width: 20px; height: 20px;
  top: -10px;
  left: -10px;
  border: 2px solid black;
  border-radius: 50%;
  opacity: 1;
  background-color: #fb4d98;
  pointer-events: none;
  z-index: 99999999;
  transition:
    transform ease-out 0.15s,
    border 0.5s,
    opacity 0.5s,
    background-color 0.5s;
}

# custom-cursor.active {

  opacity: 0.5;
  background-color: #000;
  border: 2px solid #fb4d98;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="custom-cursor"></div>
iyr7buue

iyr7buue1#

如果看不到更多的代码,就不可能绝对确定,但是从问题中的信息来看,整个页面似乎是在移除光标之前加载的。
您可以通过多种方式解决这一问题,例如,在初始html中不包含游标元素,而是在需要时在加载时添加它。
或者,您可以保持初始html不变,但将光标设置为在css中显示:无。然后,如果不删除光标,则onload js会将style.display设置为block。
更新:现在我们已经看到了更多的代码,这里有一个代码片段,展示了第二个方法(游标)是如何使用的 display: none 在加载页面之前)可以实现:

jQuery(document).ready(function($) {
let cursor = document.querySelector('#custom-cursor');

    if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone/i.test(navigator.userAgent)) {
    $('#custom-cursor').remove();
}
else { cursor.style.display = 'block';}

document.addEventListener('mousemove', evt => {

  let { clientX: x, clientY: y } = evt;
  let scale = 1;

  if (evt.target.matches('a,span,[onclick],img,video,i')) {
    cursor.classList.add('active');
    scale = 0.5;
  } else {
    cursor.classList.remove('active');
  }

  cursor.style.transform = `translate(${x}px, ${y}px) scale(${scale})`;

});
});

* {

  cursor: none;
}

# custom-cursor {

  position: fixed;
  width: 20px; height: 20px;
  top: -10px;
  left: -10px;
  border: 2px solid black;
  border-radius: 50%;
  opacity: 1;
  background-color: #fb4d98;
  pointer-events: none;
  z-index: 99999999;
  transition:
    transform ease-out 0.15s,
    border 0.5s,
    opacity 0.5s,
    background-color 0.5s;
    display: none;
}

# custom-cursor.active {

  opacity: 0.5;
  background-color: #000;
  border: 2px solid #fb4d98;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="custom-cursor"></div>

相关问题