動くかっこいいウェブデザインについてのメモ2 本文の部分に使う動き

前回はファーストビューからの導入部分で使えそうな動きを掲載しましたが、今回は、本文部分に使えそうな動きをメモしていきます。

イメージ写真

目次

縦と横から現れるアニメーション

読みやすさを損なわない程度の動きがあるアニメーションを作ってみました。

                               
 
<style>
/* 初期状態の設定 */
.anim-box {
    opacity: 0;
    transform: translateY(50px); /* 初期位置 */
    transition: all 2s ease-out;
}
                        
.anim-box.is-animated {
    opacity: 1;
    transform: translateY(0); /* 元の位置に移動 */
}
                        
/* slidein_left 用アニメーション */
.anim-box.slidein_left {
    transform: translateX(50px); /* 初期状態を右に設定 */
}
                        
.anim-box.slidein_left.is-animated {
    transform: translateX(0); /* 元の位置にスライドイン */
}
                        
/* slidein_up 用アニメーション */
.anim-box.slidein_up {
    transform: translateY(50px); /* 初期状態を下に設定 */
}
                        
.anim-box.slidein_up.is-animated {
    transform: translateY(0); /* 元の位置にスライドイン */
}
                        
/* ホバー時の画像拡大効果 */
.anim-box img {
    transition: transform 0.3s ease; /* なめらかな拡大アニメーション */
}
                        
.anim-box img:hover {
    transform: scale(1.1); /* 画像を110%に拡大 */
}
.title {
    font-size: xx-large;
}
                            </style>
                                

                               
                               

                               

     <script>
        document.addEventListener("DOMContentLoaded", () => {
            // Intersection Observer を設定
            const observer = new IntersectionObserver((entries) => {
                entries.forEach(entry => {
                    if (entry.isIntersecting) {
                        // ビューポートに入った場合にクラスを追加
                        entry.target.classList.add("is-animated");
                    } else {
                        // ビューポート外に出た場合にクラスを削除
                        entry.target.classList.remove("is-animated");
                    }
                });
            });

            // アニメーション対象の要素を監視
            const animElements = document.querySelectorAll(".anim-box");
            animElements.forEach(el => observer.observe(el));
        });
    </script>

                               
                               

                               

                <div class="anim-box slidein_left">
                    <img src="/images/top_slider01.jpg" alt="イメージ写真">
                </div>
                <div class="anim-box slidein_up">
                    <p class="title">タイトルタイトルタイトル</p>
                    <p class="letter_body">ダミーダミーダミーダミー...</p>
                    <div class="text_center">
                        <p class="animation-btn">
                            <a href="#" class="animation-btn-inner">ダミー<i class="bi bi-arrow-right"></i></a>
                        </p>
                    </div>
                </div>

                <br><br><br><br>

                <div class="anim-box slidein_left">
                    <img src="/images/top_slider02.jpg" alt="イメージ写真">
                </div>
                <div class="anim-box slidein_up">
                    <p class="title">タイトルタイトルタイトル</p>
                    <p class="letter_body">ダミーダミーダミーダミー...</p>
                    <div class="text_center">
                        <p class="animation-btn">
                            <a href="#" class="animation-btn-inner">ダミー<i class="bi bi-arrow-right"></i></a>
                        </p>
                    </div>
                </div>

                <br><br><br><br>

                <div class="anim-box slidein_left">
                    <img src="/images/top_slider03.jpg" alt="イメージ写真">
                </div>
                <div class="anim-box slidein_up">
                    <p class="title">タイトルタイトルタイトル</p>
                    <p class="letter_body">ダミーダミーダミーダミー...</p>
                    <div class="text_center">
                        <p class="animation-btn">
                            <a href="#" class="animation-btn-inner">ダミー<i class="bi bi-arrow-right"></i></a>
                        </p>
                    </div>
                </div>

                               
                               

縦からゆっくりと現れるアニメーション

イベント感がある動きですね。

                               
 
<style>

.list_item_lines3-1 li {
    opacity: 0; /* 初期状態は非表示 */
    transform: translateX(50px); /* 初期位置を右にずらす */
    transition: all 1s ease-out; /* アニメーションの設定 */
}

.list_item_lines3-1 li.is-visible {
    opacity: 1; /* 表示 */
    transform: translateX(0); /* 元の位置に移動 */
}

</style>
                                

                               
                               

                               

   <script>

        document.addEventListener("DOMContentLoaded", () => {
            const observer = new IntersectionObserver((entries) => {
                entries.forEach((entry, index) => {
                    if (entry.isIntersecting) {
                        // 順番に表示させるためにディレイを設定
                        setTimeout(() => {
                            entry.target.classList.add("is-visible");
                        }, index * 300); // 各要素の表示間隔を0.3秒ずつ増やす
                    } else {
                        // ビューポート外に出た場合にクラスを削除
                        entry.target.classList.remove("is-visible");
                    }
                });
            });

            // アニメーション対象の要素を監視
            const listItems = document.querySelectorAll(".list_item_lines3-1 li");
            listItems.forEach(item => observer.observe(item));


        });

    </script>

                               
                               

                               

<ul>
    <ul class="list_item_lines3-1 flex">
        <li><a href="/contents/service.html#area-1"><img src="/images/top_service01.gif" alt="ホームページの作成のイメージイラスト"><span>ホームページの作成</span></a></li>
        <li><a href="/contents/service.html#area-2"><img src="/images/top_service02.gif" alt="ネット販売用商品ページの作成のイメージイラスト"><span>ネット販売用商品ページの作成</span></a></li>
        <li><a href="/contents/service.html#area-3"><img src="/images/top_service03.gif" alt="既存サイトの改善のイメージイラスト"><span>既存サイトの改善</span></a></li>
    </ul>
</ul>