悬停效果产生闪烁

Posted

技术标签:

【中文标题】悬停效果产生闪烁【英文标题】:hover effect creates flickering 【发布时间】:2013-06-07 16:32:03 【问题描述】:

我试图在悬停时在图像上显示选项,但是当我悬停时显示的选项一直闪烁

      $('a').hover(function(event) 
        var href = $(this).attr('href');
        var top = $(this).next().css("bottom");

            $(this).next().css("display", "block");
            $(this).next().next().css( 'top': '30px', 'display': 'block' );

    ,function() 
            $(this).next().hide();
            $(this).next().next().hide();

    );

);
$('.SelectionAnimate').hover(function()  $(this).css("display", "block"); $(this).next().show(); );

列表视图代码

           <ItemTemplate>
            <div style="float: left; position: relative; margin: 10px;" >
                <div>
                    <a class="real" href='<%#"/ProfileTenModified/UserProfile/PhotoCross.aspx?in="+ Eval("Full_Image_Name") +"&mi=" + Eval("User_Id") +"&fd="+ Eval("Album")%>'>
                        <asp:Image ID="Image1" runat="server" ImageUrl='<%#"/ProfileTenModified/setP/"+ Eval("Slide_Thumb_Name") +".JPEG" %>'
                            BorderStyle="Solid" BorderWidth="1px" Width="172px" Height="172px" />
                    </a>
                    <asp:LinkButton CssClass="SelectionAnimate" ID="Selection" runat="server" Text="Set as Display"
                        OnCommand="ListViewThums_Selection_Command" CommandName="selection"></asp:LinkButton>
                    <asp:LinkButton CssClass="SelectionAnimate" ID="Deletion" runat="server" Text="Remove"
                        OnCommand="ListViewThumbs_Command"></asp:LinkButton>
                </div>
                <asp:HiddenField ID="HiddenFieldImageId" runat="server" Value='<%#Eval("Id") %>' />
            </div>
        </ItemTemplate>

我同时使用了mouseenterhover 都产生了相同的效果。有没有办法解决这个问题

【问题讨论】:

为什么是javascript?一个简单的悬停应该很容易,只需 css... 【参考方案1】:

您仅在a 上应用.hover()。因此,当您悬停a 时,图像会出现悬停在您的a 上,这意味着您不再悬停a。这将触发.hover() 的第二次回调并且图像将消失。然后你再次悬停a,它会无限重复。

要解决这个问题,您只需在父容器或两个元素上绑定.hover()

【讨论】:

我添加了类 real 但没有使用它。我想我应该包括 .real ?? 不,这不能解决你的问题,因为.reala。不过你可以试试$('.real').parent().hover(your code) 因为被悬停的是a的兄弟姐妹。理论上,在a 的父级上应用.hover() 将停止闪烁。没有一个活生生的例子很难提供帮助...... 其实在parent上绑定.hover()会报错,因为this和之前的不一样了... 检查这个小提琴:jsfiddle.net/4LzaU/1。由于它很轻,你看不到它发生(它太快了),但你可以看到光标很疯狂。据我了解,这是你的问题。但是如果你把它应用到父级上,它就会停止闪烁:jsfiddle.net/4LzaU/2【参考方案2】:

我曾经遇到过与您类似的问题。 所以,为了解决这个问题,我使用了 mouseenter 和 mouseleave 事件。

$(selector).on('mouseenter', function()
  //perform what you want whe mouse is on your selector
).on('mouseleave', function()
  //your code on when mouse leaves the selector
);

【讨论】:

如果我使用$(selector).parent().on('mouseenter', function()); 可以吗 不,这不起作用,但如果你说 $('a').hover 给你所需的结果并且它闪烁,那么 $('a').on('mouseenter' 应该工作。如果仍然存在问题而不是将整个东西放在一个 div 中,请将一个类设置为 div 并在该类上的 mouseenter 事件上

以上是关于悬停效果产生闪烁的主要内容,如果未能解决你的问题,请参考以下文章

按钮的背景在鼠标悬停时闪烁或消失

悬停+闪烁时的CSS +不透明度变化

悬停在一个元素上会导致使用jQuery对其他元素产生悬停效果

Firefox 变换比例图像错误。使用悬停变换过渡时,图像会闪烁自身的一个小版本

鼠标悬停时褪色的jQuery幻灯片闪烁/队列问题(slideSwitch.js)

chrome transition闪烁BUG