サンプルコードを作成し、挙動を確認したところ
下記のような挙動の違いが確認できました。
- ボタン1を押す→ボタン2を押す:アニメーションが再実行される
- ボタン3を押す→ボタン4を押す:アニメーションは再実行されない(ボタン3を押す前と同じ表示)
display属性とvisibility属性は、両方とも要素を表示/非表示にするものと認識しておりました。
(visibility属性を利用した場合はdisplay属性と異なり、要素の高さ、幅がそのままで空白が詰められない、ということも認識しております)
しかし、このサンプルコードのようにアニメーションの実行にも影響を与えるということは知らなかったので色々と調べてみましたが、そういった記載のあるページが見つけられませんでした。
display='block'時にアニメーションが再実行されるのは何故でしょうか?
CSSの仕様なのでしょうか?
その場合、そういった詳細な仕様はどこに書いてあるものでしょうか?
参考になるページや書籍等がありましたらご紹介頂きたいです。
また、displayのnone/blockでは動作しないが、
visibilityのhidden/visible切替時に動作するようなCSSの属性(?)もあるのでしょうか?
もしご存知の方がいらっしゃいましたら、ご教示いただければ幸いです。
よろしくお願い致します。
HTML
1<html> 2 <head> 3 <style> 4 @keyframes sampleAnimation { 5 from { 6 width:0px; 7 } 8 to { 9 width:200px; 10 } 11 } 12 13 .child { 14 background-color: #ff0000; 15 animation-name: sampleAnimation; 16 animation-duration: 1s; 17 animation-fill-mode:forwards; 18 } 19 </style> 20 </head> 21 <body> 22 <div id="parent"> 23 <div class="child"> 24 1234567890 25 </div> 26 </div> 27 <p>display属性で切替</p> 28 <button onclick="document.getElementById('parent').style.display = 'none'">ボタン1(display=none)</button> 29 <button onclick="document.getElementById('parent').style.display = 'block'">ボタン2(display=block)</button> 30 <p>visibility属性で切替</p> 31 <button onclick="document.getElementById('parent').style.visibility = 'hidden'">ボタン3(visibility=hidden)</button> 32 <button onclick="document.getElementById('parent').style.visibility = 'visible'">ボタン4(visibility=visible)</button> 33 </body> 34</html>

回答2件
あなたの回答
tips
プレビュー