【问题标题】:Javascript/jQuery : Creating a 'Powered By' slideout for footer logo on websitesJavascript/jQuery:为网站上的页脚徽标创建“Powered By”幻灯片
【发布时间】:2013-12-04 01:57:12
【问题描述】:

我找到了一个 jsfiddle,它做了一些类似于我想做的事情。修改后的版本位于:http://jsfiddle.net/7m7uK/479/,它适用于 jsfiddle。我将代码复制到我的网站,更改了 ID,现在它似乎无法正常工作。以下是位于我网站上的代码。我在我的网站上使用 jQuery 1.9.1 和 jQuery UI 1.10.3。关于为什么这不起作用的任何建议?

Javascript

<script type="text/javascript">
$( document ).ready(function() {
    $('#footer_logo').hover(function(){
        if ($('#powered_by').is(':hidden')) {
            $('#powered_by').show('slide',{direction:'right'},1000);
       } else {
            $('#powered_by').hide('slide',{direction:'right'},1000);
       }
    });
});
</script>

HTML

  <img src="img.png" width="63" height="25" id="footer_logo"/>
  <div id="powered_by" width="100px"/>Powered By: </div>

CSS

#footer_logo {
    color: #000;
    cursor:pointer;
    display:block;
    position: absolute;
    bottom: 0; right: 0;
    z-index: 100;
}

#powered_by {
    width: 200px;
    height: 20px;
    display: none;
    position: absolute;
    right: 0;
    bottom: 0;
    background: #ff0000;
    z-index: 99;
}

【问题讨论】:

    标签: javascript jquery jquery-ui


    【解决方案1】:

    我在jsfiddle 上尝试了您的代码,并且运行良好。如果问题仍然存在,请查看此 SO 帖子:JQuery UI show/slide not working correctly,也许他们的解决方案可以提供帮助。

    您想在悬停时显示#powered_by,然后在悬停时隐藏它,对吗?

    我查看了您的代码,但它并不是您希望它正确表现的方式。例如,如果您将鼠标悬停,元素会滑动,但是当您将鼠标悬停然后再次悬停而不让它完成隐藏时,悬停执行将被反转。

    这样做会更有效率:

    $(document).ready(function() {
    $('#footer_logo').hover(function(){
        //hover-in 
        $('#powered_by').show('slide',{direction:'right'},1000);
    },function(){
        //hover-out 
        $('#powered_by').hide('slide',{direction:'right'},1000);
    });
    });
    

    看到这个jsfiddle

    或者使用纯 jQuery:jsfiddle

    【讨论】:

    • 我的 jquery 和 jquery UI 包含错误的 url 路径。但我确实喜欢你的解决方案,我感谢你的贡献。它就像一个魅力!
    • 发现 javascript 版本做了一些奇怪的事情。如果我多次移动该部分,它基本上会计算鼠标经过该部分的次数,以及进出该部分的次数。我该如何解决?我不希望它这样做?我喜欢 jquery 的工作方式;但是,由于我使用它的方式,无法设置 {overflow-x:hidden;}。
    • 你需要在动画前加上stop()$(selector).stop().animate()。我明白了,如果在 body 上设置 overflow-x:hidden; 会发生冲突。然后你可以切换到动画width 以同样的方式工作。在这里看到这个jsfiddle
    • jsfiddle.net/FVa69/3 - 在 jsfiddle 上工作,所以我在我的网站上检查了它,但它不起作用。我将我的代码粘贴在下面的脚本中,它看起来是正确的吗? (我在整个东西周围添加了一个容器,所以如果鼠标移到由文本提供支持的上方,它会留在外面)&lt;script type="text/javascript"&gt; $(document).ready(function() { var $pBy = $('#powered_by'), w = $pBy.width(); $pBy.width(0) $('#footer_logo_container').hover(function(){ $pBy.stop(true).animate({width: w},'slow'); },function(){ $pBy.stop(true).animate({width: 0},'slow'); }); }); &lt;/script&gt;
    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 2014-02-04
    • 2023-02-05
    • 2023-03-07
    • 2022-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多