私は、純粋なCSSで「フェードアウト」効果を実装しようとしています。これが fiddle です。オンラインでいくつかの解決策を検討しましたが、 documentation online を読んだ後、スライドアニメーションが機能しない理由を見つけようとしています。ポインタはありますか?
ここにHTMLがあります
<div class="dummy-wrap">
<div class="success-wrap successfully-saved">Saved</div>
</div>
CSS
.dummy-wrap {
animation: slideup 2s;
-moz-animation: slideup 2s;
-webkit-animation: slideup 2s;
-o-animation: slideup 2s;
}
.success-wrap {
width: 75px;
min-height: 20px;
clear: both;
margin-top: 10px;
}
.successfully-saved {
color: #FFFFFF;
font-size: 20px;
padding: 15px 40px;
margin-bottom: 20px;
text-align: center;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
background-color: #00b953;
}
@keyframes slideup {
0% {
top:0px;
}
75% {
top:0px;
}
100% {
top:-20px;
}
}
@-moz-keyframes slideup {
0% {
top:0px;
}
75% {
top:0px;
}
100% {
top:-20px;
}
}
@-webkit-keyframes slideup {
0% {
top:0px;
}
75% {
top:0px;
}
100% {
top:-20px;
}
}
@-o-keyframes slideup {
0% {
top:0px;
}
75% {
top:0px;
}
100% {
top:-20px;
}
}
代わりに遷移を使用できます:
.successfully-saved.hide-opacity{
opacity: 0;
}
.successfully-saved {
color: #FFFFFF;
text-align: center;
-webkit-transition: opacity 3s ease-in-out;
-moz-transition: opacity 3s ease-in-out;
-ms-transition: opacity 3s ease-in-out;
-o-transition: opacity 3s ease-in-out;
opacity: 1;
}
同じことを行う別の方法を次に示します。
フェードイン効果
.visible {
visibility: visible;
opacity: 1;
transition: opacity 2s linear;
}
フェードアウト効果
.hidden {
visibility: hidden;
opacity: 0;
transition: visibility 0s 2s, opacity 2s linear;
}
UPDATE 1:
最新のチュートリアルが見つかりました CSS3トランジション:表示要素を非表示にするフェードインとフェードアウトのようなエフェクト および ツールチップの例:CSS3トランジションを使用してヒントまたはヘルプテキストを表示 こちらサンプルコード付き。
UPDATE 2:
(@ big-moneyが要求した詳細を追加)
(visibleクラスに切り替えて)要素を表示するときに、visibility:visibleをすぐに開始する必要があるため、opacityプロパティのみを移行してもかまいません。また、要素を非表示にする(非表示のクラスに切り替える)ときに、最初にフェードアウト遷移を確認できるように、visibility:hidden宣言を遅らせます。これを行うには、可視性プロパティで遷移を宣言し、期間を0秒にして遅延を設定します。詳細な記事を見ることができます こちら
私は答えるには遅すぎることを知っていますが、他の人の時間を節約するためにこの答えを投稿します。それがあなたを助けることを願っています!!
displayはアニメーション可能なCSSプロパティではありません。 1つdisplay:none fadeCSアニメーションを純粋なcss3アニメーションに置き換え、最後のフレームでwidth:0およびheight:を設定し、animation-fill-mode :forwards width:0およびheight:0プロパティを保持します;
@-webkit-keyframes fadeOut {
0% { opacity: 1;}
99% { opacity: 0.01;width: 100%; height: 100%;}
100% { opacity: 0;width: 0; height: 0;}
}
@keyframes fadeOut {
0% { opacity: 1;}
99% { opacity: 0.01;width: 100%; height: 100%;}
100% { opacity: 0;width: 0; height: 0;}
}
.display-none.on{
display: block;
-webkit-animation: fadeOut 1s;
animation: fadeOut 1s;
animation-fill-mode: forwards;
}
.dummy-wrap
クラスに位置プロパティを追加するのを忘れて、上/左/下/右の値が静的に配置された要素に適用されない(デフォルト)
.fadeOut{
background-color: rgba(255, 0, 0, 0.83);
border-radius: 8px;
box-shadow: silver 3px 3px 5px 0px;
border: 2px dashed yellow;
padding: 3px;
}
.fadeOut.end{
transition: all 1s ease-in-out;
background-color: rgba(255, 0, 0, 0.0);
box-shadow: none;
border: 0px dashed yellow;
border-radius: 0px;
}
これはあなたの質問の作業コードです。
コーディングをお楽しみください...
<html>
<head>
<style>
.animated {
background-color: green;
background-position: left top;
padding-top:95px;
margin-bottom:60px;
-webkit-animation-duration: 10s;animation-duration: 10s;
-webkit-animation-fill-mode: both;animation-fill-mode: both;
}
@-webkit-keyframes fadeOut {
0% {opacity: 1;}
100% {opacity: 0;}
}
@keyframes fadeOut {
0% {opacity: 1;}
100% {opacity: 0;}
}
.fadeOut {
-webkit-animation-name: fadeOut;
animation-name: fadeOut;
}
</style>
</head>
<body>
<div id="animated-example" class="animated fadeOut"></div>
</body>
</html>