【问题标题】:show('slide') effect on repeat?显示('幻灯片')重复效果?
【发布时间】:2011-09-11 07:56:06
【问题描述】:

我有一个隐藏的 div,我想在将鼠标悬停在另一个 div 上时向上滑动。

$('.gallery-single a').mouseenter(function(){
    $('.gallery-single-title', this).show('slide', { direction: 'down' }, 1000);
    $('.black', this).css({ opacity: 0 });

});

现在,当我将鼠标悬停在上方时,由于某种原因,滑动动作会重复发生,我希望它只向上滑动一次。将不胜感激。

http://jsfiddle.net/cCTpd/2/

【问题讨论】:

  • 我很困惑。你说你想让它向上滑动,但你的代码让它向下滑动。你能发布一个 JSFiddle 吗?
  • 大声笑我是的,听起来很有趣,向下滑动实际上向上滑动 =S 请检查现在附加的 JSfiddle 链接
  • 我不明白你想要它做什么。当您进入和离开项目时,它都会向上滑动......就像您对其进行编程一样。我推荐hover(),由 natedavisolds 提供。请注意他是如何将其编码为上下滑动的。

标签: jquery hover slide


【解决方案1】:

我会通过悬停事件和更改课程来做到这一点。我在这里假设你的一些 html 结构。如果我能看到它,我可以回答得更好。

$('.gallery-single a').hover(
    function() {
        if(!$(this).hasClass('slid')) {
            $(this).find('.gallery-single-title').slideUp(1000);
            $(this).find('.black').css({ opacity: 0 });
            $(this).addClass('slid');
        } 
    }, 
    function() {
        $(this).find('.gallery-single-title').slideDown(1000);
        $(this).find('.black').css({ opacity: 1 });
        $(this).removeClass('slid');
    }
);

更新

这里是更新后的代码,让它按照你想要的方式运行。

http://jsfiddle.net/YJaM5/7/

上面的javascript只有一处改动:

$(this).find('.black').animate({ opacity: .5 });

我还建议将事件设置为$('.gallery-single'),以防万一您想在没有链接的情况下获得此效果,但这不是必需的。

所有其他更改都是针对 css 的

.gallery-single {
    display:inline-block; 
    margin: 12px; 
    background:#333;
    width: 300px; 
    height:200px;
    position:relative;
}

.gallery-single img { border:none; }

.black {
    background-color:#000000;
    width:300px;
    height:200px; 
    position:absolute;
    top: 0;
    left: 0;
    opacity: 0.5;
}

.gallery-single-title {
    font-family: 'ContinuumLightRegular', Helvetica, Arial, sans-serif;
    font-weight:bold;
    font-size: 18px;
    padding: 5px 5px 0 5px;
    width:290px;
    height:60px; 
    bottom: 0;
    left:0;
    overflow:hidden;
    color: white;
    background:#00b9e1;
    position:absolute;
    display:none;
}

让我解释一下。 position:relative;.gallery-single 所必需的,以将其全部保存在一个整洁的包中。它允许我们将底部属性设置为标题元素。

我在.black 元素中添加了opacity: 0.5;,因此我们不必使用js。

对于.gallery-single-title,我删除了margin-top 并设置了

bottom: 0;
left:0;

无论是slideUp还是slideDown,这都会使标题元素上下滑动,但这并不重要,因为我们正在实现正确的效果。

这应该适合你了。

【讨论】:

  • 虽然这行得通,但它不是我想要的滑动效果。这从顶部向下滑动.. 我希望它们从下方向上滑动,然后在鼠标移出时向下滑动
  • @Ian:这不是有点挑剔吗?它有效...您只需根据自己的喜好翻转它。
  • @Nate:但是我试过了,但效果不太好。悬停在不显示 .gallery-single-title div 上时。只有鼠标移出 div 才会显示它不应该做的事情。感谢您的尝试,感谢您的帮助
  • 我看了你的 jsfiddle。通过对 CSS 进行一些更改,这些问题得以解决。我将分叉你的代码并发布一个链接,指向一些你想要的行为方式的代码。不过必须是明天;那就去找吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 2012-10-10
相关资源
最近更新 更多