【问题标题】:How to place overlay over image using JQuery?如何使用 JQuery 在图像上放置叠加层?
【发布时间】:2015-02-17 18:50:41
【问题描述】:

期望的效果:当用户将鼠标悬停在图像上时,图像(并且只有图像)应该变暗。

计划:使用 .mouseenter 配合 JQuery 实现想要的效果。

问题:当用户将鼠标悬停在图像上时,尽管对 .mouseenter 和附加叠加层使用了相同的选择器,但叠加层仍适用于其他东西(#Bars)。所以叠加层可以正常工作,但它不适用于图像。我通过将叠加层附加到正文来测试它,这确实有效(也就是说,当我将鼠标悬停在图像上时,网页的整个正文变暗了)。我什至在导航栏上对其进行了测试,它再次起作用(当我将鼠标悬停在图像上时,导航栏变暗)。不幸的是,我想将它附加到的一件事,图像,不起作用。

尝试的解决方案:我已将 ID 添加到 ul、li、a 和 img,并尝试选择这些的几种组合,但没有任何效果。我还尝试将 CSS 中的高 z-index 添加到#overlay,以防它低于图片。这不起作用。

问题:我应该使用哪个选择器来达到预期的效果?

html.erb

<ul id="Bars">
    <li id="bar1photo" class="barphoto"><%= link_to(image_tag("bar1.jpg", id: "bar1image"), bar1_path, id: "bar1") %></li>
    <li id="bar2photo" class="barphoto"><%= link_to(image_tag("bar2.jpg", id: "bar2image"), bar2_path, id: "bar2") %></li>
<ul>

jQuery

$(document).ready(function(){
    var $overlay = $('<div id="overlay"></div>');
    $("li#bar1photo a")
        .mouseenter(function(){

            $("li#bar1photo a").append($overlay.show());

        })
        .mouseleave(function(){
            $overlay.hide();
        });
});

CSS

#overlay {
    background: rgba(0,0,0, 0.75);
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    display: none;
}

【问题讨论】:

  • 有什么理由不能直接将覆盖元素添加到 HTML 而不是使用 jQuery?你可以这样做并跳过 jQuery:jsfiddle.net/pu0k2bf9.

标签: jquery html css ruby-on-rails image


【解决方案1】:

父级需要relative 位置。

.barphoto {
 position: relative;
}

Demo 在这里。

【讨论】:

    【解决方案2】:

    我会这样做:

    $("li#bar1photo a").on('mouseover',function(){
      $(this).parent("li").addClass('overlay');
    });
    

    还有类似的css:

    .overlay {
         position: absolute;
         top: 0;
         right: 0;
         width: 100%;
         height: 100%;
         background-color: rgba(0,0,0, 0.75);
    }
    

    【讨论】:

    • 您的 jQuery 向 li 元素添加了一个类,该元素已经有一个类 .barphoto OP 可以挂钩。您提供的代码将样式添加到li,不会提供覆盖效果。
    • OP 是什么意思?...向元素添加一个以上的类是没有问题的...我从这个问题中得出结论,将图像作为背景图像的 li 不是吗?
    • OP = Original Poster = 提问者。当然,您可以在一个元素上拥有多个类。创建一个实用程序类可能很有用,因为我相信这是您在回答中建议的一部分,但 OP 想要一个叠加层,当它悬停时可以有效地使图像变暗。更改 li 的背景不会在悬停时使图像变暗。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    相关资源
    最近更新 更多