【问题标题】:Losing control, How could I reach this effect?失控,我怎么能达到这个效果?
【发布时间】:2014-06-11 12:12:57
【问题描述】:

主要想法是在我的页面中获得一些效果动画 div。 一、主要线索:

<ul class="institucional-menu">
            <li class="insmenu" id="Historia">Historia Fundacional</li>
            <li class="insmenu" id="Autoridades">Autoridades</li>
            <li class="insmenu" id="Balance">Balance</li>
        </ul>

当指针在某个菜单选项上时,右侧的 div 会根据每个选项移动并显示图像,直到下一次用户将鼠标移到其他不同选项上为止。在第一个动作(第一个用户在某个选项上移动)是可以的,问题从第二个和更高的动作开始,因为之前的 IMG 在那里,所以我需要将 div 向右移动(创建它消失的效果取另一个 img) 并将其从右向左返回,新的 img 在里面充电。

这是我的 Javascript:

jQuery('.insmenu').mouseover(function(){
        jQuery('#imgcontainer').animate({
            left: '1024px',
            opacity: '1'
        });
        jQuery('#imgcontainer').queue(function(){
            jQuery('#imgcontainer').attr("src", e.id+'.jpg');
            jQuery('#imgcontainer').animate({
            left: '0px',
            opacity: '1'
        });
        });
    });

我整天都在尝试首先移开潜水,然后充电图像,最后返回那个潜水。但我不能。有什么推荐吗?

非常感谢!

PD:“e.id”试图成为已经“悬停”的元素的值(我不知道怎么说,如果这个动词存在)例如 id="Historia" ,图像与每个

  • 上的 ID 值具有相同的名称,这就是我失去控制的原因,我试图传递该值...
  • 【问题讨论】:

    • 我喜欢这个效果问题,你能继续这个小提琴吗?所以我明白你的意思了吗? jsfiddle.net/KLrVg/1
    • 什么是e.id?你能发布#imgcontainer的标记吗?
    • 抱歉,我忘记删除了。我会立即纠正。
    • 我正在尝试完成小提琴,但它没有触发动画方法,我不知道为什么
    • 试试这个版本jsfiddle.net/KLrVg/22注意,元素不能是静态的动画'left'

    标签: javascript jquery css animation effect


    【解决方案1】:

    你是这个意思吗?

    $(document).ready(function(){
      $('.insmenu').mouseover(function(){
            var e = $(this);
            $('#imgcontainer').animate({
                left: '1024px',
                opacity: '1'
            },function(){
                  $('#imgcontainer').attr("src",  e.attr('image'));
                  console.log(e.attr('image'));
                  $('#imgcontainer').animate({
                       left: '0px',
                       opacity: '1'
                 });            
            });
    
        });
    });
    

    请注意,为了使左侧动画可行,该项目不能是静态的(将其位置更改为绝对、相对或固定)

    http://jsfiddle.net/KLrVg/22/

    【讨论】:

    • 图像消失又回来。这就是我理解你想要的,如果不让我知道。我更改了 url 图像设置导致域的原因。但你应该能够继续前进
    • 这个脚本移动了 img,我可以看到它用 firbug 调试,但由于某种原因它没有使用 img
    • 这就是我所说的,我更改了示例的 url 处理
    • 谢谢!这是工作!但是你能解释一下这条线是什么意思吗?:console.log(e.attr('image'));。我不知道我是不是一个糟糕的程序员,但我必须说我从来没有使用过。
    • 仅在正确加载 url 时进行调试。它就像一个 alert('string') 但不那么突兀,例如,您可以在 firebug 的控制台中看到它。你可以删除它;)顺便说一句。如果您发现我的回答有帮助,则标记为正确:P
    【解决方案2】:

    我对用户的点击而不是鼠标悬停做出了同样的效果。同样的想法,如果我理解正确的话。

    我必须做的是在容器 div(这里是 #imgcontainer)内给每个(这里是 mouseover-able li)菜单一个自己的 div。例如:

     <ul class="institucional-menu">
            <li class="insmenu" id="Historia">Historia Fundacional</li>
            <li class="insmenu" id="Autoridades">Autoridades</li>
            <li class="insmenu" id="Balance">Balance</li>
     </ul>
     <div id="imgcontainer">
        <div id="divHistoria><img src="..." /></div>
        <div id="divAuthoridades><img src="..." /></div>
        <div id="divBalance><img src="..." /></div>
     </div>
    

    然后隐藏/显示/动画与菜单项同名的 div 是一件简单的事情。不需要 src 交换(尽管如果有很多非常大的图像,这可能是个问题)。

    【讨论】:

    • 这就是问题所在。我的图像是 1024x768,所以我试图避免加载图像的孔集。但是您如何解决隐藏前一个 div(带有动画两个)并显示新单击的 div 的问题?那是我的问题。在这里解释起来很复杂......我想我需要一个视频
    • 试试这个。 jsfiddle.net/KLrVg/25 当然,根据需要随意更改动画。对加载时间没有帮助,而是关于你需要交换什么?
    • 我在考虑更多的加载时间:您需要在页面加载过程中预先加载所有图像,或者当它们将鼠标悬停在您的不同部分时。作为一个互联网速度较慢的人,我对以前的 jsFiddles 之一感到非常困惑,因为图像交换但没有显示 - 由于加载时间 - 所以无论哪种方式你都应该包含某种加载指示器。它会立即运行,或者每次鼠标悬停运行(除非 img 被兑现)。我想这取决于你的设置,但我个人首先推荐一次。增加了一些花哨的加载器/启动屏幕的时间。
    猜你喜欢
    • 2014-02-05
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 2015-10-14
    相关资源
    最近更新 更多