備忘録8〜カッコよくテキストや画像を出したい
ちょっとおしゃれなサイトでよく見る、黒い帯が出てなくなるとテキストや画像が出てくるやつあるじゃないですか
実装したくて色々調べてみました。
うーん、動くやつの画面撮るの難しいです・・・
伝わったと信じて、実装に必要な物を紹介します。
プラグイン「Block Reveal Effects」を用意します。
まずは以下のページの「Download source」から一式ダウンロード可能です。
必要なファイルを読み込む
この3つが必要です。
<script src="js/anime.min.js"></script>
<script src="js/scrollMonitor.js"></script>
<script src="js/main.js"></script>
WordPressで子テーマのfunction.phpに書き込める場合は、以下のように入れてもいいと思います。
// inview の読み込み
function add_scripts() {
wp_enqueue_script( 'anime', get_home_url() . '/js/anime.min.js', array( 'jquery' ), '20210211', true );
wp_enqueue_script( 'main', get_home_url() . '/js/main.js', array( 'jquery' ), '20210211', true );
wp_enqueue_script( 'scrollMonitor', get_home_url() . '/js/scrollMonitor.js', array( 'jquery' ), '20210211', true );
}
add_action('wp_print_scripts', 'add_scripts');
?>
HTML
<div id="kanban" class="block-revealer__element">
<img src="https://www.peop.jp/wp-content/uploads/2021/02/peop_logo-710x169.png">
</div>
今回は、画像を出したいのでこんな感じにしてます。idが必要なので適当に入れます。(id="kanban"のところです)
CSS idの方に指定しても大丈夫ですが、複数箇所設置を想定してclassにしてます。
.block-revealer__element {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
pointer-events: none;
opacity: 0;
}
javascriptも必要なので
$(function() {
setTimeout(init, 10);
function init() {
var scrollElemToWatch_1 = document.getElementById('kanban',-100),//先程のHTMLで書いたidを指定します。
watcher_1 = scrollMonitor.create(scrollElemToWatch_1), // 監視領域を#kanbanに設定
rev1 = new RevealFx(scrollElemToWatch_1, {
revealSettings : {
bgcolor: '#000000',//黒い背景が出てきます。色は好きなのものに変更してください
delay: 500,//動作を遅らせる時間
duration: 1000, //エフェクトの速度 これで1秒です
easing:'easeInOutCirc',
onCover: function(contentEl, revealerEl) {
contentEl.style.opacity = 1;
}
}
});
watcher_1.enterViewport(function() { // 監視領域に入ったタイミングでアニメーション実行
rev1.reveal();
//watcher_1.destroy(); 一度きりならここのコメントと「//」を消してください
});
}
オプション
revealSettings : {}の中に書いてありますが他にもあるので、書いておきますね。
オプション名 | 内容 |
---|---|
bgcolor | ボックス背景色 |
delay | 遅延実行 |
duration | アニメーション速度 |
direction | アニメーション方向 |
easing | イージング |
direction
アニメーションの方向を設定できます。4パターンあるので好みに合わせて設定してください。
設定値 | 内容 |
---|---|
lr | 左から右 (デフォルト) 設定しない場合はこれになる |
rl | 右から左 |
tb | 上から下 |
bt | 下から上 |
easing
Block Reveal Effectsは、アニメーション関連の処理をJavaScriptライブラリであるanime.jsを利用し、実行しています。
イージングなど詳しく知りたい方は、以下を参考にしてみてください!
サイト内に書いてあるeasingの名称があるのでそれを指定するとアニメーションの動き方が変わります。
複数箇所の設置・・・
idを変更しつつ、JavaScriptを増やす感じになりますね。
フロントページの中央部でも使っています。タイミングをずらしながら表示みたいなこともできるので
DEMOサイトも参考にしつつ試してみてください。
class指定で全部同じ動きを設置できないかと思いましたが、このプラグインではできないようでした・・・
ご参考までに、プラグインなしでJavaScriptとCSSで再現していました。
CSSのアニメーションの設定変更が大変でしたが、同じ動きを複数箇所に設置するのならばこちらの方が楽かと思います。
こちらのページで実装してみました。各見出しで設定してあります。タイミングを調整するのが面倒でしたがうまく動いていると思います。
ディスカッション
コメント一覧
まだ、コメントがありません