1

divのinnerHTMLを変更するときに、フェードイン/フェードアウト効果を実行しようとしています。サファリドキュメントで与えられた例を試してみました

divをフェードアウトし、コンテンツを変更してから、新しいコンテンツで再度フェードインします。

<style>
.cv { background-color: #eee; -webkit-transition: all 1s ease-in-out;}
.cf {opacity: 0;}
</style>
<body> 
 <div id="main"> 
  <div id="c"> OLD </div>
 </div> 
</body>
<script> 
var c = document.getElementById("c");
c.setAttribute("class", "cf");
c.innerHTML = '';
c.appendChild(fragment);
c.setAttribute("class", "cv");
</script>

ここで私を助けてください

4

4 に答える 4

2
<style>
.cv { opacity:1; background-color: #eee; -webkit-transition: all 1s ease-in-out;}
.cv.hide {opacity: 0;}
</style>

[...]

<script>
c.setAttribute("class", "cv hide");
[...]
c.setAttribute("class", "cv");
</script>
于 2010-12-30T15:33:47.617 に答える
1

私はあなたのコードを書き直しました-http://jsfiddle.net/Kai/ec64b/を参照してください

また、使用できるクラス操作関数もいくつか含まれています。

于 2010-12-30T15:54:50.590 に答える
0
<style>
.cv { background-color: #eee; -webkit-transition: all 1s ease-in-out;}
/* .cf {opacity: 0;} */
</style>
<body> 
 <div id="main"> 
  <div id="c"> OLD </div>
 </div> 
<script> 
var c = document.getElementById("c");
c.setAttribute("class", "cf");
// c.innerHTML = '';
// c.appendChild(fragment);
c.setAttribute("class", "cv");
</script>
</body>

このコードを試してください。スクリプトを本文の終了タグの後にではなく、前に配置します。

于 2010-12-30T03:56:01.430 に答える
0

これが私がやっとやったことです。答えてくれてありがとう

init: function(fragment) {
        var c = document.getElementById("c");
        c.addEventListener( 'webkitTransitionEnd', IDR.callHook(c, fragment), false);
        c.setAttribute("class", "cv hide"); 
     },

     callHook: function(c, fragment) {
        var fp = function() {
           c.removeEventListener('webkitTransitionEnd', fp, false);
           c.innerHTML = '';
           c.setAttribute("class", "cv");
           c.appendChild(fragment);
        };
        return fp;
     },
于 2010-12-31T17:50:16.487 に答える