【问题标题】:Fade out on load with Jquery. Then, fade in on hover, and out on unhover, with CSS使用 Jquery 在加载时淡出。然后,在悬停时淡入,在悬停时淡出,使用 CSS
【发布时间】:2012-04-16 22:56:39
【问题描述】:

在我的博客应用程序中,当首页加载时,我希望 twitter 分享按钮(每个博客帖子一个)淡出(这样用户就知道它们在那里,但它们不会分散布局的注意力)长)。当用户将鼠标悬停在帖子上时,我希望分享按钮淡入,然后在未悬停时再次淡出。

现在我正在使用 Jquery 在页面加载时淡出,效果很好:

jQuery ->
  $('.t-share').fadeOut(6800)

但是,我无法使用 CSS 在悬停/取消悬停时淡入/淡出。这很奇怪,因为当用户悬停/取消悬停在帖子上时,还有几个其他链接会出现/消失,这是我使用 css 转换实现的。然而,当我试图让.t-share div 做同样的事情时,它不起作用。按钮上的display: none; 属性不会改变,但是对于应该淡入的其他元素它会改变。

此外,当按钮淡出时(需要 6 秒)将鼠标悬停在 div 上时,我可以看到发生 CSS 转换(它还添加了边框),但它继续淡出。

这是 CSS:

&:hover {
    .t-share {
        display:inline-block;
        position:absolute;
        right:8px;
        top:8px;
        border:2px solid red;
    }

JS 是否以某种方式禁用了 CSS 过渡?

在 Jquery 在加载时淡出按钮后,如何使用 CSS 让按钮在悬停/取消悬停时淡入/淡出?

如果不行,JS解决方案是什么?

【问题讨论】:

  • 代表HTML? Demo?

标签: jquery css


【解决方案1】:

这可能是因为当它完全淡出时,fadeOut 函数将.t-share 设置为display: none,所以您的css 转换不起作用(我不确定是否如此)。您可能需要对此进行测试。

与此同时,您可以选择 100% JS。虽然这不使用纯 CSS...

$('.t-share')
  .mouseenter(function(){ $(this).fadeIn(200); })
  .mouseleave(function(){ $(this).fadeOut(200); })
  .fadeOut(6800);

【讨论】:

  • fadeOut 确实在 6.8 秒结束后将 .t-share 设置为 display:none(它会在此之前更改不透明度),但即使在设置之后,它也不会淡入。JS示例似乎不起作用 - 它可以淡出,但不会在悬停时淡入。
  • 我认为它不会淡入,因为当它的“显示”设置为“无”时,没有元素可以移动鼠标。可以这么说,它不能被鼠标悬停。您可以尝试将其淡化 1%,使其无法隐藏。使用 fadeTo 来做到这一点。
  • 我的糟糕 - 忘了提到另一个元素 (.post) 会触发其中 .t-share 元素的淡入/淡出。上面的JS有效。仍然好奇为什么 CSS 解决方案不起作用。
  • 您可以尝试使用 firebug 或类似的东西从 dom 元素中删除 display:none,然后将鼠标悬停在 .post 上。如果这确实有效,那么您就知道它与 display 属性有关,您可以从那里进一步搜索。如果它仍然不起作用,那么它就是别的东西。我不知道那会是什么。 :/ 很高兴听到我提供的脚本有效。
  • 谢谢,我去看看。现在我将坚持使用 JS 解决方案。这是我使用的修改后的咖啡脚本解决方案:jQuery -> $('.t-share').fadeOut(6800) $(".post").mouseenter(-> $(this).find('.t-share').fadeIn 0 ).mouseleave(-> $(this).find('.t-share').fadeOut 0 )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 2013-05-19
相关资源
最近更新 更多