【问题标题】:Hide custom cursor when mouseover on iframe鼠标悬停在 iframe 上时隐藏自定义光标
【发布时间】:2020-02-14 12:30:00
【问题描述】:

我正在努力找出如何在我的自定义光标位于 iframe 上时隐藏它。

我设计了一个自定义光标,但它在所有网页部分都可以正常工作。但是,当它越过 Vimeo iframe 时,鼠标会停留在 iframe 的边缘并显示默认的网络浏览器光标。

我认为最简单的方法是在 iframe 上进行鼠标悬停时隐藏自定义光标。

试图通过使用 CSS(当自定义光标在 iframe 上时应用 display:none)和 js 来弄清楚,但没有成功。

这里是codepen中的代码:https://codepen.io/felixgonzalo/pen/vYOLrVJ

这是代码: JS

let mouseCursor = document.querySelector(".cursor");
let Links = document.querySelectorAll("a");
let logo = document.querySelector(".logo-error");

window.addEventListener('mousemove', cursor);

function cursor(e){

    mouseCursor.style.top = e.pageY + "px";
    mouseCursor.style.left = e.pageX + "px";
}

Links.forEach(link =>{

    if ( link !== logo ){

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

            mouseCursor.classList.remove("link-grow");
        });

        link.addEventListener("mouseover", () => {

            mouseCursor.classList.add("link-grow");
        });
    }  

});

CSS

body{
    cursor: none;

}

.cursor{
    width: 2rem;
    height: 2rem;
    border: 2px solid white;
    border-radius: 50%;
    position: absolute;
    transform: translate(-50%, -50%);
    transition: all 0.3s ease;
    transition-property: background, transform;
    transform-origin: 100% 100%;
    z-index: 20000;
    pointer-events: none;
}

.link-grow{
    transform: scale(1.2);
    background: white;
    mix-blend-mode: difference;

}

a:-webkit-any-link {
    cursor: none;
}

.logo-error:hover .cursor{
    display: none !important;
}

@media (max-width: 768px){
  .cursor {
    display: none;

  } 
}

【问题讨论】:

    标签: javascript jquery css iframe mouseevent


    【解决方案1】:

    基本上,你需要三样东西:

    1. 获取iframe 元素

    var iframe = document.querySelector("iframe");
    1. 添加mouseover事件处理程序

    iframe.addEventListener("mouseover", function() {
      mouseCursor.style.display = 'none';
    })
    1. 添加mouseleave事件处理程序

    iframe.addEventListener("mouseleave", function() {
      mouseCursor.style.display = 'block';
    })

    现在,当您将鼠标悬停在 iframe 上时,您的自定义光标将为 hidden,一旦您将鼠标从 iframe 移开,它就会再次可见。

    请注意:请注意,我使用的是querySelector,它只返回第一个选择器,所以如果你有很多 iFrame,它只会应用第一个上的代码。为避免这种情况,您可以使用querySelectorAllgetElementsByTagName,循环返回的数组,然后注入事件。

    【讨论】:

      【解决方案2】:

      mouseovermouseleave 上添加类,就像使用链接一样。

      像这样:

      https://codepen.io/yoseftuk/pen/RwPrJXx

      (顺便说一句,我为自定义光标的正确定位做了一些更改)

      【讨论】:

      • 谢谢 Yosef,它的解释如此清晰简洁。真的很感激!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多