5

CSS3で日の出と日の入りのアニメーションを開発しています。ランタイムjsFiddleの出力を確認してください。

太陽は期待どおりにある色から別の色に移行しています

拡大画像をクリックしてください

ここに画像の説明を入力してください

午後

拡大画像をクリックしてください

ここに画像の説明を入力してください

拡大画像をクリックしてください

ここに画像の説明を入力してください

拡大画像をクリックしてください

ここに画像の説明を入力してください

早朝

拡大画像をクリックしてください

ここに画像の説明を入力してください

問題は、あるモードから別のモードへの空の遷移にあり、色の変化は急激で線形ではありません

空の色の変更に使用されるコード

@-webkit-keyframes changeSkyColor /* Safari and Chrome */
{
    1%{
        background: -webkit-linear-gradient(top, rgba(30, 152, 209, 1) 0%,rgb(202, 229, 243) 40%,rgba(125, 185, 232, 0.82) 100%); /* Background of Sky */
    }
    11%{
        background: -webkit-linear-gradient(top, rgba(30, 152, 209, 1) 0%,rgb(202, 229, 243) 40%,rgba(125, 185, 232, 0.82) 100%); /* Background of Sky */
    }
    33%  {
        background: -webkit-linear-gradient(top, rgb(240, 231, 26) 0%,rgb(245, 86, 12) 50%,rgba(197, 127, 81, 0.82) 100%); /* Background of Sky */
    }
    66%  {
        background: -webkit-linear-gradient(top, rgb(34, 33, 3) 0%,rgb(162, 55, 5) 50%,rgb(24, 10, 1) 100%); /* Background of Sky */
    }
    100% {
        background: -webkit-linear-gradient(top, rgba(5, 5, 5, 1) 0%,rgb(54, 55, 56) 40%,rgb(3, 3, 3) 100%); /* Background of Sky */
    }
}

JsFiddleコードを確認してください(コメント付きです)

  • アニメーションで線形グラデーションを使用することは想定されていませんか?
  • もしそうなら、スカイカラーをスムーズに通過させる方法は?

私が見逃しているものはありますか?誰かが私にそれを前進させるためのいくつかの参照または任意のポインタを与えることができれば私は感謝するでしょう。

4

1 に答える 1

5

私が行うことは、グラデーション全体を最初から最後まで1つの要素に適用し(この例では、を使用します#sky)、その要素の位置をアニメーション化して、色が薄くなっているように見せることです。TwitterのBootstrapは、このトリックを使用して、ボタンホバーの背景をアニメーション化します。

このアプローチであなたのJSFiddleの私のフォークを見てください:http://jsfiddle.net/jakebellacera/6Zabx/

追加したCSSは次のとおりです。

#sky {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 900%; /* This must be in a factor of three */
    background-image: -webkit-linear-gradient(top, rgba(30,152,209,1) 0%, rgb(202, 229, 243) 11%, rgba(125, 185, 232, 0.82) 22%,
                                                   rgb(240, 231, 26) 33%, rgb(245, 86, 12) 44%,   rgba(197, 127, 81, 0.82) 55%,
                                                   rgba(5, 5, 5, 1) 66%,  rgb(54, 55, 56) 77%,    rgb(3, 3, 3) 100%);
    background-image: -moz-linear-gradient(top, rgba(30,152,209,1) 0%, rgb(202, 229, 243) 11%, rgba(125, 185, 232, 0.82) 22%,
                                                rgb(240, 231, 26) 33%, rgb(245, 86, 12) 44%,   rgba(197, 127, 81, 0.82) 55%,
                                                rgba(5, 5, 5, 1) 66%,  rgb(54, 55, 56) 77%,    rgb(3, 3, 3) 100%);
    -webkit-animation-name: changeSkyColor; /* Change Shiny Sky to evening sky and to darkness */  /* Safari and Chrome */
    -webkit-animation-duration: 14s; /* Total time of animation */
    -webkit-animation-timing-function: linear; /* Just another timing function */
    -webkit-animation-iteration-count: infinite; /* Lets repeat sunrise and sunset till world ends :) */
    -webkit-animation-direction: alternate; /* Lets do in alternate fashion */
    -moz-animation-name: changeSkyColor; /* Change Shiny Sky to evening sky and to darkness */  /* Mozzilla */
    -moz-animation-duration: 14s; /* Total time of animation */
    -moz-animation-timing-function: linear; /* Just another timing function */
    -moz-animation-iteration-count: infinite; /* Lets repeat sunrise and sunset till world ends :) */
    -moz-animation-direction: alternate; /* Lets do in alternate fashion */
}

@-webkit-keyframes changeSkyColor /* Safari and Chrome */
{
    0%{
        top: 0px;
    }
    100% {
        top: -800%; /* #sky's height - 100% */
    }
}
@-moz-keyframes changeSkyColor /* Mozilla */
{

    0%{
        top: 0px;
    }
    100%  {
        top: -800%; /* #sky's height - 100% */
    }
}
于 2013-03-14T21:38:35.587 に答える