【问题标题】:Mootools: Fading between divs in menuMootools:菜单中的 div 之间的淡入淡出
【发布时间】:2011-01-08 20:06:46
【问题描述】:

我有一个菜单,左边有 4 个

  • 项目,右边有 4 个 div,每个项目一个,用鼠标输入一个项目应该显示其中一个 div。 像
    <ul><li onmouseover="javascript:showDiv("div1");">one</li><li  onmouseover="javascript:showDiv("div2");">two</li>(4 li)</ul>
    

    其中 showDiv(id) 显示一个 div 并隐藏另一个 div。

    div:

    <div id="menu1">menu1</div>
    <div id="menu2" style="display:none;">menu2</div>
    <div id="menu3" style="display:none;">menu3</div>
    <div id="menu4" style="display:none;">menu4</div>
    

    Javascript 代码:

    function fadeBetweenDivs( div1, div2 ) {
     $$( div1 ).fade( "out" );
     (function(){
      $$( div1 ).setStyles({
       display: 'none',
       opacity: 0
      });
     }).delay( 150 );
     (function(){
      $( div2 ).setStyles({
       display: 'block',
       opacity: 0
      });
     }).delay( 150 );
     $$( div2 ).fade( "in" );
    }
    function findDiv() {
     var arrayDiv = ["menu1","menu2","menu3","menu4"];
     for (i=0;i<arrayDiv.length;i++) {
      var blockDiv = document.getElementById(arrayDiv[i]).style.display;
      if (blockDiv = "block") {
       var viewedDiv = arrayDiv[i];
       return viewedDiv;
      }
     }
    }
    function showDiv(showdiv) {
     var hidediv = findDiv();
     fadeBetweenDivs(hidediv,showdiv);
    }
    

    addEvent 等代码有效,这里就不贴了。执行的函数是 showDiv("div id"); .

    我找不到问题。你能告诉我如何让它工作,或者至少是一种更简单的淡化 div 的方法吗?

    (Mootools 有效,我正在使用 Joomla)

  • 【问题讨论】:

      标签: javascript joomla mootools


      【解决方案1】:

      您的代码中有很多错误。 我试图做一个小例子来帮助你理解问题并轻松找到解决方案。 希望对您有所帮助!

      http://goo.gl/TzlSt

      如果您有任何疑问,请随时问我;)

      【讨论】:

      • $$('.menu').fade(0).setStyle('display','none'); - 淡入淡出是异步的,不能像这样被链接,它会因为显示而有效地隐藏它,然后将淡入淡出补间到 0 但不让用户看到。使用el.set("tween", { onComplete: function() { this.element.setStyle("display", "none"); }).fade("0"); - 虽然你需要el.get("tween").removeEvents(); 在你做其他补间之前,如淡入。另外,你应该缓存选择器 - 这对于大型数据集和旧浏览器可能非常慢/无效。 p.s.这是 1.2 所以不是 joomla 1.5(除非定制)
      • 右二米塔!这只是一个简单的例子,让肯知道解决这个问题的方法!感谢让我和他知道如何改进代码。顺便说一句,我知道淡入淡出,但这只是一种“重置”不透明度的方法,同样通过 setStyle('opacity',0)。为了让用户看到效果,可以通过链接 Fx.Morph 来完成另一种方法。我也同意你关于缓存的看法。当我有 5 分钟的时间时,我会修复代码;)
      • 我知道您知道这一点,但提出问题的人或将查看解决方案的人可能不知道。 :)
      猜你喜欢
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多