フェードインのベースを作る
CSSアニメーションを使って、フェードイン表示を作ります。
まず、シンプルにキーフレームアニメーションを作ってみましょう。
/* ------------ */
/* アニメーション*/
/* ------------ */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
.top_imgbox,
.top_stepbox li,
.top_stepbox .btn {
opacity: 0;
animation-name: fadeIn;
animation-duration: 800ms;
animation-timing-function: ease-in;
animation-fill-mode: forwards;
}
ひとまず、アニメーションを適用する要素をセレクタにしました。
CSSが効いているか、ブラウザで見てみましょう。 ブラウザで表示もしくはリロードすると、フェードインっぽい表示になりました。
1.表示する順番を決める(SP)
現時点では、全て同じタイミングで表示されてしまっているので、要望に沿った順番で表示されるように設定しましょう。
「animation-delay」を使って、実行タイミングをずらします。
/* アニメーションの順番 */
.top_imgbox{
animation-delay: unset;
}
.top_stepbox li:nth-child(1) {
animation-delay: 200ms;
}
.top_stepbox li:nth-child(2) {
animation-delay: 400ms;
}
.top_stepbox li:nth-child(3) {
animation-delay: 600ms;
}
.top_stepbox li:nth-child(4) {
animation-delay: 800ms;
}
.top_stepbox .btn {
animation-delay: 1000ms;
}
2.表示する順番を変える(TB幅~)
PC幅のときはliの画像が先、QbaseWEBイメージ画像はそのあとに表示させます。
レイアウトが横並びに変わるタブレット幅@media (min-width: 768px){}
から、アニメーションの実行順序を変更しましょう。
/* @media (min-width: 768px){}内 */
/* アニメーションの順番 */
.top_imgbox{
animation-delay: 800ms;
}
.top_stepbox li:nth-child(1) {
animation-delay: unset;
}
.top_stepbox li:nth-child(2) {
animation-delay: 200ms;
}
.top_stepbox li:nth-child(3) {
animation-delay: 400ms;
}
.top_stepbox li:nth-child(4) {
animation-delay: 600ms;
}
これで簡単なフェードイン表示は完了です。
ちょっとアレンジ
上の形でも、クライアントの要望を満たしていますので完成ではあります。 ですが、単調すぎで少し退屈な印象もありますよね。 もう少し変化を付けてみましょう。
イメージは、 QbaseWEBイメージ画像が右横からスライドイン 今すぐテストを受けるボタンが下からスライドイン です。
クライアントはもしかすると単調な方が好きかもしれません。 cssをコピーして、別バージョンとして作ると確実です。
※デモファイルではdemo-style2.cssとしています。
右から左(本来の位置) 下から上(本来の位置) に移動するキーフレームを作ります。
@keyframes fadeIn-right {
0% {
transform: translateX(30px);
}
100% {
transform: translateX(0);
}
}
@keyframes fadeIn-bottm {
0% {
transform: translateY(30px);
}
100% {
transform: translateX(0);
}
}
どのキーフレームを使うかを設定します。
.top_imgbox,
.top_stepbox li,
.top_stepbox .btn {
opacity: 0;
animation-duration: 800ms;
animation-timing-function: ease-in;
animation-fill-mode: forwards;
}
.top_imgbox{
animation-name: fadeIn,fadeIn-right;
}
.top_stepbox li{
animation-name: fadeIn;
}
.top_stepbox .btn {
animation-name: fadeIn, fadeIn-bottm;
}
全て共通の設定よりは、少し面白みがあるのではないでしょうか?
- アニメーション速度
- アニメーション進行パターン
- 移動距離
- 要素ごとの時間差
などを、お好みに合わせて調節すれば完成です。
素材からダウンロードして頂けるデモコードでは、スマホ幅、タブレット以上の幅でアニメーションを分けました(demo-style2.css)。
最後に
トップページ作成はこれで完成です。 最後にもう一度スマホ、タブレット、PC幅の表示をチェックしましょう。
規定の幅以外での表示確認に、表示幅を変えてみたり。
自分が使用しているディスプレイよりも大きい場合を考えて、WEBを縮小してみると、見落としていた崩れを発見できることもあります。
W3Cの Markup Validationにかけてみると「言語指定を入れよ」と指摘されたので、htmlタグに日本語指定を加えました。
CSSチェッカーの方は扱い・見方が難しいですが、 Markup Validation Service(HTMLチェッカー)の方は使いやすいです。 ご自身で書いたコードを使って試してみて下さい。