animate
プロパティでCSStransition
を使用してページ要素を作成しようとしていopacity
ます。フェードアウトは正常に機能しますが、フェードインは機能しません。私は何を間違っていますか?
いくつかの事実は本当に奇妙です:
.no-display
クラスを使用しなくても、すべてが期待どおりに機能します(ただし、使用する必要があります)。- ブラウザ コンソールで関数のコマンドを再生すると、期待どおりに動作します(ただし、関数は動作しません)。
コード:
HTML
<p><a href="javascript:fadeIn()">Fade in</a></p>
<p><a href="javascript:fadeOut()">Fade out</a></p>
<div class="no-display invisible" id="square"></div>
CSS
.no-display {
display: none;
}
.invisible {
opacity: 0;
}
#square {
width: 500px;
height: 500px;
background-color: red;
border: 1px solid black;
-webkit-transition: opacity 2s ease;
-moz-transition: opacity 2s ease;
-ms-transition: opacity 2s ease;
-o-transition: opacity 2s ease;
transition: opacity 2s ease;
}
JavaScript
function fadeIn() {
square.classList.remove("no-display");
square.classList.remove("invisible");
}
function fadeOut() {
square.classList.add("invisible");
setTimeout(function() { square.classList.add("no-display"); }, 2000 );
}
または: http://jsfiddle.net/V2Sar/6/。
jQuery などのフレームワークは使用できないことに注意してください。純粋な JavaScript だけで作業する必要があります。