0
左側にメニューがあります。li >の項目があり、右側に4つのdivと1つの項目があり、マウスで項目を入力するとdivの1つが表示されます。 showDiv(ID)がDIVを示し、他のDIVを隠しMootools:メニュー内のdiv間のフェードアップ
<ul><li onmouseover="javascript:showDiv("div1");">one</li><li onmouseover="javascript:showDiv("div2");">two</li>(4 li)</ul>
など何か。
の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のを使用しています、作品)
'$$( 'メニュー。 ')(0).setStyle(' display' をフェード、 'どれも'。 ); ' - fadeは非同期であり、連鎖することはできません。表示のために非表示にし、フェードを0にトゥイーンしますが、ユーザーは見ることができません。 fade( "0"); ' - あなたは' 'el ''を使う必要がありますが、' 'el.set(" tween "、{onComplete:function(){this.element.setStyle(" display "、" none ");})フェードインのような他のトゥイーンを行う前に、.get( "tween")。removeEvents(); 'を実行すると、セレクタをキャッシュする必要があります。これは、大きなデータセットと古いブラウザでは非常に遅く/効果がありません。 p.s.これは1.2のためではないのでjoomla 1.5(custom'dを除く) –
右ディミタール!ケンにその問題を解決する方法を知らせるだけの簡単な例でした!コードを改善する方法を私に教えてくれてありがとう。ところで、私はフェードを知っていましたが、それはsetStyle( 'opacity'、0)を実行することによって同じように不透明度を "リセット"する方法に過ぎませんでした。ユーザーにエフェクトが表示されるようにするには、Fx.Morphを連鎖させて別の方法を実行します。私はキャッシングについても同意します。コードを修正する5分があるときは – stecb
あなたはこれを知っていますが、質問をした人または解決策を見ている人は分かりません。 :) –