2011-10-28 7 views
1

ページが読み込まれるとすぐに同時に3つのオブジェクト(div)が同時に表示されます。これをアニメーション化するのを助けるために、ちょうど1つのオブジェクトで完全に動作するJavaScriptの少しを使用していますが、3つのオブジェクトすべてを個々のスタイリングに従うようにJavaScriptを書き直す方法がわかりません。css3/javascriptを使用して複数のオブジェクトを1つのdivに渡す

Mozillaデベロッパーネットワークサイト(https://developer.mozilla.org/en/CSS/CSS_transitions/)の「移行イベントを使用してオブジェクトをアニメートする」の例が見つかりましたが、残念ながらフォーラムを無効にして解決策を見つけることができませんでした。私はしばらくの間、左側にオブジェクトのスタイルを表現するために、背景画像との1を2つのdiv要素を持っており、それが正しい位置にスタイリングだ

<body onload="runDemo()"> 
    <div id="cloud-comtainter"> 
<div class="cloud1Right"></div> 
    <div class="cloud2Right"></div> 
    <div class="cloud3Right"></div> 
    </div> 
</body> 

は、ここで基本的なHTMLです。ここで

1つのオブジェクトのためのCSSです:

.cloud1Right { 
    width: 22em; 
    height: 9.375em; 
    background-image:url(../Images/header/clouds/clouds_biodesign-white.png); 
    background-position:center; 
    left:2%; 
    position:absolute; 
    top: 5%; 
    z-index:1; 
    -webkit-transition-property:left; 
    -webkit-transition-duration: 25s; 
    -moz-transition-property:left; 
    -moz-transition-duration: 25s; 
    -o-transition-property:left; 
    -o-transition-duration: 25s; 
    -ms-transition-property:left; 
    -ms-transition-duration: 25s; 
} 
.cloud1Left { 
    width: 22em; 
    height: 9.375em; 
    background-image:url(../Images/header/clouds/clouds_biodesign-white.png); 
    background-position:center; 
    left:90%; 
    position:absolute; 
    top: 5%; 
    z-index:1; 
    -webkit-transition-property:left; 
    -webkit-transition-duration: 25s; 
    -moz-transition-property:left; 
    -moz-transition-duration: 25s; 
    -o-transition-property:left; 
    -o-transition-duration: 25s; 
    -ms-transition-property:left; 
    -ms-transition-duration: 25s; 
} 

そして、ここでは、このオブジェクトを呼び出し、再び右の画面を横切って移動して、それをアニメーション化することのJavascriptです:

function runDemo() { 
    var el = updateTransition(); 
    // Set up an event handler to reverse the direction 
    // when the transition finishes. 

    el.addEventListener("transitionend", updateTransition, true); 
} 

function updateTransition() { 
    var el = document.querySelector("div.cloud1Left"); 

    if (el) { 
     el.className = "cloud1Right"; 
    } else { 
     el = document.querySelector("div.cloud1Right"); 
     el.className = "cloud1Left"; 
    } 

    return el; 
} 

私が同時に移行したい他の2つの要素は、それぞれ独自のスタイル(位置、左%、遷移率など)で、.cloud2Left(および.cloud2Right)および.cloud3Left(および.cloud3Right)という名前が付けられています。

私は解決策のためにウェブを精査し、jsを使いこなしました。私はここやウェブの周りを見て、セレクターに関する情報と、運がない複数のセレクターの使い方を見つけました。誰もが任意のアイデアを持っているか、JavaScriptをリライトする方法を知っている場合はel.className

ため

var el=document.querySelector("div.cloud1Left, div.cloud2Left, div.cloud3Left"); 

var el=document.querySelector("div.cloud1Left"); 
var el=document.querySelector("div.cloud2Left"); 
var el=document.querySelector("div.cloud3Left");  

と同じ:私はそのようなのような複数のセレクタを使用して試してみました3つのオブジェクト(div)をすべて含むようにして、ページが読み込まれるとすぐに同時に動作させるようにすることができます。私は非常に感謝しています。前もって感謝します。

答えて

1

私はあなたのための解決策があると思います。私は今日、同じ事例に基づいて小さなことをしていました。これは私のために働いていました。 基本的に私はターンをクリックした1つの「オープナー」を持っていて、ターンが終了すると3つの他のdivに遷移させます。それぞれが独自のスピードを持っています。そして、戻る - クリックすると閉じる - 最初の3つのdivが終了し、これが終了すると、 'オープナー'がアニメーションを終了します。

HTML:

<div id="opener" onclick="switch_toolbox('open')" class="vertical">Food Toolbox</div> 
<div id="tools"> 
    <h2 id="toolbox_title" class="title">Appliances</h2> 
</div> 
<div id="freezer"> 
    <h2 id="food_title" class="title">Food store</h2> 
</div> 
<div id="spicebox"> 
    <h2 id="spices_title" class="title">Spices</h2> 
</div> 

CSS:

#opener{ 
    display:block; 
    overflow:hidden; 
    width:8.8em; 
    background-color:#F00; 
    font-weight:600; 
    font-size:1.5; 
    padding:0 0.5em; 
    cursor:pointer; 
    transition:all 0.5s ease 0s; 
    -moz-transition:all 0.5s ease 0s; /* Firefox 4 */ 
    -webkit-transition:all 0.5s ease 0s; /* Safari and Chrome */ 
    -o-transition:all 0.5s ease 0s; /* Opera */ 
    -ms-transition:all 0.5s ease 0s; /* IE */ 

} 
.vertical{ 
    -webkit-transform: rotate(90deg), translate(3em,3em); 
    -moz-transform: rotate(90deg) translate(3em,3em); 
    -o-transform: rotate(90deg) translate(3em,3em); 
    -ms-transform: rotate(90deg) translate(3em,3em); 
    transform: rotate(90deg) translate(3em,3em); 
} 
.horizontal{ 
    -webkit-transform: rotate(0), translate(0,0); 
    -moz-transform: rotate(0) translate(0,0); 
    -o-transform: rotate(0) translate(0,0); 
    -ms-transform: rotate(0) translate(0,0); 
    transform: rotate(0) translate(0,0); 
} 

#tools{ 
    display:block; 
    overflow:hidden; 
    height:1.2em; 
    width:0; 
    transition:width 1.5s ease 0s, height 1s ease 0s; 
    -moz-transition:width 1.5s ease 0s, height 1s ease 0s; /* Firefox 4 */ 
    -webkit-transition:width 1.5s ease 0s, height 1s ease 0s; /* Safari and Chrome */ 
    -o-transition:width 1.5s ease 0s, height 1s ease 0s; /* Opera */ 
    -ms-transition:width 1.5s ease 0s, height 1s ease 0s; /* IE */ 
} 
#freezer{ 
    display:block; 
    overflow:hidden; 
    height:1.2em; 
    width:0; 
    transition:width 1s ease 0.5s, height 1s ease 0s; 
    -moz-transition:width 1s ease 0.5s, height 1s ease 0s; /* Firefox 4 */ 
    -webkit-transition:width 1s ease 0.5s, height 1s ease 0s; /* Safari and Chrome */ 
    -o-transition:width 1s ease 0.5s, height 1s ease 0s; /* Opera */ 
    -ms-transition:width 1s ease 0.5s, height 1s ease 0s; /* IE */ 
} 

#spicebox{ 
    display:block; 
    overflow:hidden; 
    height:1.2em; 
    width:0; 
    transition:width 0.5s ease 1s, height 1s ease 0s; 
    -moz-transition:width 0.5s ease 1s, height 1s ease 0s; /* Firefox 4 */ 
    -webkit-transition:width 1.5s ease 1s, height 1s ease 0s; /* Safari and Chrome */ 
    -o-transition:width 0.5s ease 1s, height 1s ease 0s; /* Opera */ 
    -ms-transition:width 0.5s ease 1s, height 1s ease 0s; /* IE */ 
} 

そして最後にJS:

function switch_toolbox(direction){ 
    var spicebox = document.getElementById('spicebox'); 
    var opener = document.getElementById('opener'); 
    if(direction=='close'){ 
     closeem(); 
     spicebox.addEventListener("transitionend", closeme, false); 
    }else{ 
     openme(); 
     opener.setAttribute('onclick','switch_toolbox("close")'); 
     opener.addEventListener("transitionend", openem, false); 
    } 
    return false; 
} 
function openme(){ 
    var opener = document.getElementById('opener'); 
    opener.setAttribute('class','horizontal'); 
} 
function closeme(){ 
    var spicebox = document.getElementById('spicebox'); 
    spicebox.removeEventListener("transitionend", closeme, false); 
    var opener = document.getElementById('opener'); 
    opener.removeEventListener("transitionend", openem, false); 
    opener.setAttribute('class','vertical'); 
    opener.setAttribute('onclick','switch_toolbox("open")'); 
    var tools = document.getElementById('tools'); 
} 
function openem(){ 
    var opener = document.getElementById('opener'); 
    opener.removeEventListener("transitionend", openem, false); 
    var spicebox = document.getElementById('spicebox'); 
    spicebox.removeEventListener("transitionend", closeme, false); 
    var tools = document.getElementById('tools'); 
    var freezer = document.getElementById('freezer'); 
    tools.style.backgroundColor='#EBD3A3'; 
    tools.style.width='20em'; 
    freezer.style.width='20em'; 
    freezer.style.backgroundColor='#B7CEEC'; 
    spicebox.style.width='20em'; 
    spicebox.style.backgroundColor='#FFA500'; 
} 
function closeem(){ 
    var tools = document.getElementById('tools'); 
    var freezer = document.getElementById('freezer'); 
    var spicebox = document.getElementById('spicebox'); 
    freezer.style.height='1.2em'; 
    spicebox.style.height='1.2em'; 
    tools.style.height='1.2em'; 
    tools.style.width='0'; 
    freezer.style.width='0'; 
    spicebox.style.width='0'; 
} 

・ホープこのヘルプ、これはあなたが

ベストを探していたものです Pifon

関連する問題