mockaは、インターフェイスプレビューに対応するためのスタイルシートです。インターフェイスプレビューというのは、コンテンツが表示されるまでの間に、ダミーのコンテンツを表示しておく手法です。事前に表示される予定のコンテンツを表示することで、読み込み時間のストレスを軽減してくれます。
Facebookにアクセスするとわかりやすいですが、ニュースフィードの投稿が表示されるまで、以下のようなダミーの投稿が出てきます。
投稿だけじゃなく、メッセージも同じようにインターフェイスプレビューが表示されますね。これがインターフェイスプレビューです。FacebookやSlack等が導入しています。
mockaは、このようなインターフェイスプレビューを導入するためのスタイルシートです。デモはこちらのページで確認できます。
mockaの使い方
mockaのダウンロードと設置
GitHubからmockaをダウンロードします。distフォルダに入っている「mocka.min.css」をサーバーにアップロードしてください。アップロードするのは「mocka.css」でもOKです。
ファイルをアップロードしたら、<head>~</head>内に以下を追加して、mockaを読み込みます。
<link rel="stylesheet" href="mocka.min.css">
HTMLのマークアップ
ダミー画像やダミーテキストを表示したい箇所に、以下のHTMLを記述します。
<div class="mocka-container"> <span class="mocka-media"></span> <span class="mocka-heading"></span> <span class="mocka-text"></span> </div>
「mocka-media」はダミー画像、「mocka-heading」はダミーの見出し、「mocka-text」はダミーのテキストです。
見た目を変えたい場合
見た目を変えたい場合は、mocka.min.cssもしくはmocka.cssをカスタマイズします。mocka.min.cssは編集しにくいので、mocka.cssを編集した方が良いでしょう。
中身は非常にシンプルで、CSSは167行しかありません。
@-webkit-keyframes mocka-dot-a { 8% { -webkit-transform: translateY(0); } 22% { -webkit-transform: translateY(-0.3125rem); } 36% { -webkit-transform: translateY(0); } } @keyframes mocka-dot-a { 8% { transform: translateY(0); } 22% { transform: translateY(-0.3125rem); } 36% { transform: translateY(0); } } @-webkit-keyframes mocka-dot-b { 36% { -webkit-transform: translateY(0); } 50% { -webkit-transform: translateY(-0.4375rem); } 64% { -webkit-transform: translateY(0); } } @keyframes mocka-dot-b { 36% { transform: translateY(0); } 50% { transform: translateY(-0.4375rem); } 64% { transform: translateY(0); } } @-webkit-keyframes mocka-dot-c { 64% { -webkit-transform: translateY(0); } 78% { -webkit-transform: translateY(-0.3125rem); } 92% { -webkit-transform: translateY(0); } } @keyframes mocka-dot-c { 64% { transform: translateY(0); } 78% { transform: translateY(-0.3125rem); } 92% { transform: translateY(0); } } .mocka-container { position: relative; width: 20rem; height: 9.5rem; background: #fafafa; border-radius: 0.125rem; border: 0.0625rem solid #acacac; } .mocka-media, .mocka-media:before, .mocka-media:after, .mocka-heading, .mocka-heading:before, .mocka-heading:after, .mocka-text, .mocka-text:before, .mocka-text:after { position: absolute; background: #c9c9c9; } .mocka-media { top: 0.5rem; left: 0.5rem; width: 4rem; height: 4rem; } .mocka-media:before, .mocka-media:after { top: 2rem; width: 0.5rem; height: 0.5rem; border-radius: 1rem; background: #7a7a7a; content: ''; } .mocka-media:before { left: 0.75rem; -webkit-animation: mocka-dot-a 1.8s ease infinite; animation: mocka-dot-a 1.8s ease infinite; } .mocka-media:after { left: 1.75rem; -webkit-animation: mocka-dot-b 1.8s ease infinite; animation: mocka-dot-b 1.8s ease infinite; } .mocka-heading { top: 1.125rem; left: 5rem; width: calc(100% - 5.5rem); } .mocka-heading, .mocka-heading:before { height: 0.875rem; } .mocka-heading:before, .mocka-heading:after { content: ''; } .mocka-heading:before { top: 1.5rem; width: 85%; } .mocka-heading:after { top: 1.375rem; left: -1.75rem; width: 0.5rem; height: 0.5rem; border-radius: 1rem; background: #7a7a7a; -webkit-animation: mocka-dot-c 1.8s ease infinite; animation: mocka-dot-c 1.8s ease infinite; } .mocka-text { top: 5.25rem; left: 0.5rem; width: calc(85% - 1rem); } .mocka-text, .mocka-text:before, .mocka-text:after { height: 0.75rem; } .mocka-text:before, .mocka-text:after { content: ''; } .mocka-text:before { top: 1.25rem; width: calc(120% - 1rem); } .mocka-text:after { top: 2.5rem; width: 90%; }
あとがき
今後はローディングアニメーションの代わりに、インターフェイスプレビューを導入するところが増えてくるかもしれませんね。
mockaを使えば簡単にインターフェイスプレビューが導入できますので、ぜひお役立てください。