如何使可拖动的图像出现在链接悬停上?

发布于 2025-01-11 10:55:26 字数 563 浏览 0 评论 0原文

如何使可拖动的图像出现在链接悬停上?就像在 这个网站 中一样,

我将发布更多图片: 输入图片此处描述

在此处输入图像描述输入图片这里的描述

我正在使用React,所以如果它可以与库一起使用,我将很乐意接受建议

How to make a draggable image appear on link hover? Just like in this website

I will post some more images:
enter image description here

enter image description here
enter image description here

I am using React, so if it works with a library, i will be happy to take recommendations

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感情洁癖 2025-01-18 10:55:26

您必须介绍到目前为止您所做的事情,以便我们可以提供帮助。在您接下来的问题中请考虑这一点。顺便说一句,你可以使用这样的东西:

document.querySelectorAll(".item").forEach((element) => {
  element.addEventListener("mousemove", (e) => {
    const img = e.currentTarget.querySelector("img");
    const {
      x,
      y,
      width,
      height
    } = e.currentTarget.getBoundingClientRect();
    img.style.display = "block";
    img.style.transform = `translate(${e.pageX - img.clientWidth / 2 - x}px,${
      e.pageY - img.clientHeight / 2 - y
    }px)`;

    if (
      e.pageX > width + x ||
      e.pageY > height + y ||
      e.pageX < x ||
      e.pageY < y
    ) {
      img.style.display = "none";
    }
  });

  element.addEventListener("mouseleave", (e) => {
    const img = e.currentTarget.querySelector("img");
    img.style.display = "none";
  });
});
.item {
  display: block;
  position: relative;
  background-color: tomato;
}

* {
  padding: 0;
  margin: 0;
}

body {
  padding-top: 50px;
}

a {
  text-decoration: none;
  color: black;
  font-size: 2rem;
}

a:active,
a:focus,
a:hover {
  cursor: none;
}

.title {
  overflow: hidden;
  max-width: 100%;
}

.item img {
  display: none;
  max-width: 220px;
  position: absolute;
  top: 0;
  left: 0;
}

.item {
  margin-top: 20px;
  background-color: cadetblue;
}
<a class="item" href="#">
  <h3 class="title">Title</h3>
  <img src="https://kulbachny.com/wp-content/uploads/2021/01/jg-cosmos.jpg" />
</a>

You must present what you have done till now, so we can help. consider this for your next questions. Btw you can use something like this:

document.querySelectorAll(".item").forEach((element) => {
  element.addEventListener("mousemove", (e) => {
    const img = e.currentTarget.querySelector("img");
    const {
      x,
      y,
      width,
      height
    } = e.currentTarget.getBoundingClientRect();
    img.style.display = "block";
    img.style.transform = `translate(${e.pageX - img.clientWidth / 2 - x}px,${
      e.pageY - img.clientHeight / 2 - y
    }px)`;

    if (
      e.pageX > width + x ||
      e.pageY > height + y ||
      e.pageX < x ||
      e.pageY < y
    ) {
      img.style.display = "none";
    }
  });

  element.addEventListener("mouseleave", (e) => {
    const img = e.currentTarget.querySelector("img");
    img.style.display = "none";
  });
});
.item {
  display: block;
  position: relative;
  background-color: tomato;
}

* {
  padding: 0;
  margin: 0;
}

body {
  padding-top: 50px;
}

a {
  text-decoration: none;
  color: black;
  font-size: 2rem;
}

a:active,
a:focus,
a:hover {
  cursor: none;
}

.title {
  overflow: hidden;
  max-width: 100%;
}

.item img {
  display: none;
  max-width: 220px;
  position: absolute;
  top: 0;
  left: 0;
}

.item {
  margin-top: 20px;
  background-color: cadetblue;
}
<a class="item" href="#">
  <h3 class="title">Title</h3>
  <img src="https://kulbachny.com/wp-content/uploads/2021/01/jg-cosmos.jpg" />
</a>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文