【问题标题】:How to hide image when hovering on a link in a different div将鼠标悬停在不同div中的链接上时如何隐藏图像
【发布时间】:2016-02-23 23:48:32
【问题描述】:

我已经找遍了这个,我似乎无法弄清楚。我有一个链接列表,当悬停在每个链接上时会显示图像。当没有悬停链接时,我在同一个占位符中也有一个默认图像。当链接显示其图像时,如何使该默认图像消失。我不想使用背景来覆盖默认图像。

https://jsfiddle.net/76tnfh96/2/

HTML:

<div class="links">
<p class="default_img"><a><img src="http://thedeskdoctors.com/Images/LifePreserver.jpg"></a></p>
        <ul id="over" class="links">
                <li><a>Link 1<span><img src="http://innovativeprofessionaloffices.com/wp-content/uploads/2014/09/IPOLogo.png"></span></a></li>
                <li><a>Link 2<span><img src="http://mojosimon.files.wordpress.com/2011/12/large-company.jpg?w=600"></span></a></li>
                <li><a>Link 3<span><img src="http://innovativeprofessionaloffices.com/wp-content/uploads/2014/07/seo-for-small-business-300x200.jpg"></span></a></li>
        </ul>
</div>

CSS:

<style type="text/css">

.links .default_img a {
  top:100px;
    float:right;
  width:100px;
  height:100px;
    background:#000000;
    position:absolute;
  display:none;
}
/*Link position*/
ul.links {
    list-style:none;
    padding:0;
    width:100px;
}
.links li {
    width:200px;
    color:#000000;
}

/*Hover Image Position/transition out*/
.links li a span, .links li a b {
    position:absolute;
    right:8px;
    top:-999em;
    display: none;
}

.links li a:hover span {
    top:24px;
    display: block;
}

</style>

【问题讨论】:

  • 只有 CSS 是不可能的,你不能选择 DOM,如果你想我可以告诉你一个 JS 解决方案。
  • 如果我不能在 CSS 中做到这一点,那么 JS 就可以了。我该怎么做是JS?谢谢。
  • 请参考my answer,它适用于所有浏览器,您只需根据需要编辑hidden 类。

标签: html css image hover


【解决方案1】:

使用 jquery:

$("li a").mouseenter(function() {
  $(".default_img").eq(0).hide();
});

$("li a").mouseleave(function() {
  $(".default_img").eq(0).show();
});

【讨论】:

  • 不要让人们去追求一个五行代码的成熟框架,完全浪费资源!
  • 在大多数情况下,使用纯 JavaScript 而不是成熟的框架完全是浪费时间
  • 哦,好吧,我要辞职了,所以每天都在恶化。
【解决方案2】:

您可以将整个标记保留为已有的标记,然后将此 JavaScript 代码添加到您的页面。您不需要添加任何框架,它可以在所有浏览器上运行。

var links = document.querySelectorAll("#over a");

[].forEach.call(links, function(value) {

  var default_image = document.querySelector(".links .default_img a");

  value.addEventListener("mouseover", function(){
   default_image.classList.add("hidden");
  });

  value.addEventListener("mouseleave", function(){
   default_image.className = default_image.className.replace(/\hidden\b/,'');
  });
});

Example

(该示例可能会有点滞后,因为您的 CSS 会像野生动物一样移动您的图像)

Example 2

(为了更好的测试目的移动了图像)

【讨论】:

  • 没有谈到需要 javascript 解决方案。隐含了 CSS。
  • 没有任何灵活的 CSS 解决方案,因为无法爬取 DOM,其他任何东西都是 hackish。
  • 我的解决方案不符合 dom 这就是为什么我粘贴了 html 代码来显示这一点 - 请在投票前查看和消化。
  • 这就是我的意思,你完全改变了可能的依赖关系。想象一下为需要此功能的客户工作,现在您更改了标记并可能破坏了一些代码。 这太骇人听闻了!
【解决方案3】:

只是更改了一些内容,因此您不必使用 jQuery/javascript。为了能够悬停动作另一个非依赖元素,您需要 javascript,因为这将被称为脱节翻转。

        <ul id="over" class="links">
                <li><a>Link 1<span><img src="http://thedeskdoctors.com/Images/LifePreserver.jpg"></span></a></li>    
                <li><a>Link 2<span><img src="http://innovativeprofessionaloffices.com/wp-content/uploads/2014/09/IPOLogo.png"></span></a></li>
                <li><a>Link 3<span><img src="http://mojosimon.files.wordpress.com/2011/12/large-company.jpg?w=600"></span></a></li>
                <li><a>Link 4<span><img src="http://innovativeprofessionaloffices.com/wp-content/uploads/2014/07/seo-for-small-business-300x200.jpg"></span></a></li>
        </ul>
</div> 



 <style type="text/css">

/*Link position*/
ul.links {
    list-style:none;
    padding:0;
    width:100px;
}
.links li {
    width:200px;
    color:#000000;
}

/*Hover Image Position/transition out*/

.links li a span {
    position:absolute;
    left:200px;
    display: none;
}
.links li a span img {
    width: 100px; height:100px;
}
.links li a:hover span {
    top:24px;
    display: block;
  background: none;
}
.links li:first-of-type a span, .links li:first-of-type a:hover span{
  display:block;
  background: url(http://thedeskdoctors.com/Images/LifePreserver.jpg) no-repeat 0 0;
}
</style>

更改了图像大小,使其在测试时适合视图。

【讨论】:

  • 不能正常工作,也不要在 CSS 中使用绝对路径!
  • 绝对路径没有错,同时展示了另一个要求的点! @克莱门斯希默。
  • 绝对路径的一切都是错误的,删除 CSS 中的 URL,你的例子就更不值钱了。而且它不起作用。
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
相关资源
最近更新 更多