ネイティブJavaScriptカルーセル実装方法

ネイティブJavaScriptカルーセル実装方法

この記事では、JavaScriptカルーセルの実装方法を参考までに紹介します。具体的な内容は次のとおりです。

エフェクトのスクリーンショット:

注: divコンテナのサイズと画像パスは自分で設定でき、 img タグaタグを追加した後でブラウザが適応します。

写真を保存するための画像フォルダを作成する

HTMLテキストを書く

<本文>
//画像パスは自分で変更できます <div id="outer">
       <ul id="画像リスト">
           <li><img src="image/8.jpg" alt=""></li>
           <li><img src="image/6.jpg" alt=""></li>
           <li><img src="image/7.jpg" alt=""></li>
           <li><img src="image/6.jpg" alt=""></li>
           <li><img src="image/8.jpg" alt=""></li>
           <li><img src="image/7.jpg" alt=""></li>
           <li><img src="image/6.jpg" alt=""></li>
           <li><img src="image/8.jpg" alt=""></li>
       </ul>
       <div id="nav">
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
           <a href="JavaScript:;"></a>
       </div>
   </div>
</本文>

CSSスタイルを追加する

<スタイル>
* {
   マージン: 0px;
   パディング: 0px;
}

/* 外枠コンテナ */
#外側{
   幅: 1555ピクセル;
   高さ: 600px;
   背景色: #bfa;
   マージン: 100px 自動;
   位置: 相対的;
   /* 隠れる */
   オーバーフロー: 非表示;

}

/* 画像のリスト */
#画像リスト {
   /* フレックスボックスレイアウト */
   ディスプレイ: フレックス;
   リストスタイル: なし;
   位置: 相対的;
   /* レイアウト方向 */
   /* flex-direct5on: 行; */
   /*画像のピクセルを1552ピクセル移動します*/
   /* 右: 1552px; */


}

#画像リスト li {
   マージン: 10px 10px;
}

/* ナビゲーションポイント */
#ナビ{
   ディスプレイ: フレックス;
   リストスタイル: なし;
   位置: 絶対;
   下: 50px;
   /* 1555/2 - 6*(20+25)/2 */
   /* 左: 642px; */

}

#nav {
   幅: 25px;
   高さ: 25px;
   マージン: 0px 10px;
   背景色: rgb(223, 129, 52);
   境界線の半径: 5px;
}

/* マウス移動効果*/
#nav a:hover {
   背景色: rgb(215, 107, 224);
}
</スタイル>

JavaScript による機能の実装

<script type="text/javascript">
    window.onload = 関数(){

    // 外側のフレームのプロパティを取得します。var outer = document.getElementById("outer");
    // imglist 属性を取得します var imglist = document.getElementById("imglist");
    // img 属性を取得します var imgArr = document.getElementsByTagName("img");

    // a 属性を取得します var allA = document.getElementsByTagName('a');
    //ナビゲーション ポイントを取得します var nav = document.getElementById("nav");
    //ナビゲーション ポイントを中央に設定します。nav.style.left = (outer.offsetWidth / 2) - (allA.length * 45 / 2) + "px";

    //デフォルトの表示インデックス var index = 0;
    allA[インデックス].style.backgroundColor = "rgb(215, 107, 224)";
    // ナビゲーションポイントタイマーを切り替える var timer = setInterval(function () {
        //ループ表示 index = (++index) % allA.length;
        //ナビゲーションポイントの背景色を設定します。 allA[index].style.backgroundColor = "rgb(215, 107, 224)";
        SetA();
        //写真を自動的に切り替えます//写真を変更すると、1 つの写真が 1552 ピクセル左に移動します
        imglist.style.transition = "右 1.5 秒"
        imglist.style.right = (インデックス * 1552) + "px";
       

    }, 1800);

    //ハイパーリンクをクリックすると画像が表示されます for (var i = 0; i < allA.length; i++) {
        //各ハイパーリンクにインデックスを追加します。allA[i].index = i;
        //各ハイパーリンクにクリック応答関数をバインドする allA[i].onclick = function () {

            imgIndex = this.index;
            //ナビゲーション ポイントの現在の位置をオーバーライドします。index = imgIndex;
            SetA();
            //画像を変更し、画像のピクセルを 1552 ピクセル左に移動する
            imglist.style.transition = "右 0.85 秒"
            imglist.style.right = (imgIndex * 1552) + "px";


            //選択したタグを変更します allA[imgIndex].style.backgroundColor = "rgb(215, 107, 224)";
        };
    }
    //関数のスタイルをクリアする SetA() {
        (var i = 0; i < allA.length; i++) の場合 {
            allA[i].style.backgroundColor = "";
        }
        //現在のナビゲーションに allA[index].style.backgroundColor = "rgb(215, 107, 224)" を設定します。
    }
};

</スクリプト>

完全なコード

<!DOCTYPE html>
<html lang="ja">

<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>カルーセル画像</title>

    <スタイル>
        * {
            マージン: 0px;
            パディング: 0px;
        }

        /* 外枠コンテナ */
        #外側{
            幅: 1555ピクセル;
            高さ: 600px;
            背景色: #bfa;
            マージン: 100px 自動;
            位置: 相対的;
            /* 隠れる */
            オーバーフロー: 非表示;

        }

        /* 画像のリスト */
        #画像リスト {
            /* フレックスボックスレイアウト */
            ディスプレイ: フレックス;
            リストスタイル: なし;
            位置: 相対的;
            /* レイアウト方向 */
            /* flex-direct5on: 行; */
            /*画像のピクセルを1552ピクセル移動します*/
            /* 右: 1552px; */


        }

        #画像リスト li {
            マージン: 10px 10px;
        }

        /* ナビゲーションポイント */
        #ナビ{
            ディスプレイ: フレックス;
            リストスタイル: なし;
            位置: 絶対;
            下: 50px;
            /* 1555/2 - 6*(20+25)/2 */
            /* 左: 642px; */

        }

        #nav {
            幅: 25px;
            高さ: 25px;
            マージン: 0px 10px;
            背景色: rgb(223, 129, 52);
            境界線の半径: 5px;
        }

        /* マウス移動効果*/
        #nav a:hover {
            背景色: rgb(215, 107, 224);
        }
    </スタイル>
    <script type="text/javascript">
        window.onload = 関数(){

            // 外側のフレームのプロパティを取得します。var outer = document.getElementById("outer");
            // imglist 属性を取得します var imglist = document.getElementById("imglist");
            // img 属性を取得します var imgArr = document.getElementsByTagName("img");

            // a 属性を取得します var allA = document.getElementsByTagName('a');
            //ナビゲーション ポイントを取得します var nav = document.getElementById("nav");
            //ナビゲーション ポイントを中央に設定します。nav.style.left = (outer.offsetWidth / 2) - (allA.length * 45 / 2) + "px";

            //デフォルトの表示インデックス var index = 0;
            allA[インデックス].style.backgroundColor = "rgb(215, 107, 224)";
            // ナビゲーションポイントタイマーを切り替える var timer = setInterval(function () {
                インデックス = (++index) % allA.length;
                //ナビゲーションポイントの背景色を設定します。 allA[index].style.backgroundColor = "rgb(215, 107, 224)";
                SetA();
                //写真を自動的に切り替えます//写真を変更すると、1 つの写真が 1552 ピクセル左に移動します
                imglist.style.transition = "右 1.5 秒"
                imglist.style.right = (インデックス * 1552) + "px";

                //ループ表示}, 1800);


            //ハイパーリンクをクリックすると画像が表示されます for (var i = 0; i < allA.length; i++) {

                //各ハイパーリンクにインデックスを追加します。allA[i].index = i;
                //各ハイパーリンクにクリック応答関数をバインドする allA[i].onclick = function () {

                    imgIndex = this.index;
                    //ナビゲーション ポイントの現在の位置をオーバーライドします。index = imgIndex;
                    SetA();
                    //画像を変更し、画像のピクセルを 1552 ピクセル左に移動する
                    imglist.style.transition = "右 0.85 秒"
                    imglist.style.right = (imgIndex * 1552) + "px";


                    //選択したタグを変更します allA[imgIndex].style.backgroundColor = "rgb(215, 107, 224)";

                };

            }
            //関数のスタイルをクリアする SetA() {
                (var i = 0; i < allA.length; i++) の場合 {
                    allA[i].style.backgroundColor = "";
                }

                allA[インデックス].style.backgroundColor = "rgb(215, 107, 224)";


            }


        };


    </スクリプト>
</head>

<本文>

    <div id="外側">
        <ul id="画像リスト">
            <li><img src="image/8.jpg" alt=""></li>
            <li><img src="image/6.jpg" alt=""></li>
            <li><img src="image/7.jpg" alt=""></li>
            <li><img src="image/6.jpg" alt=""></li>
            <li><img src="image/8.jpg" alt=""></li>
            <li><img src="image/7.jpg" alt=""></li>
            <li><img src="image/6.jpg" alt=""></li>
            <li><img src="image/8.jpg" alt=""></li>
        </ul>
        <div id="nav">
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
            <a href="JavaScript:;"></a>
        </div>
    </div>
</本文>
</html>

関数の使用法:

タイマーを作成します。

setInterval(関数() {},30)

丸い境界線を設定します。

境界線の半径: 5px;

offsetWidth 水平幅 + 左右のパディング + 左右の境界線
offsetHeight 垂直高さ + 上下のパディング + 上下の境界線

clientWidth 水平幅 + 左右のパディング
clientHeight 垂直高さ + 上部と下部のパディング

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • カルーセルの完全なコードを実装するためのjs
  • ネイティブ js でカルーセルを実装するためのサンプル コード
  • 携帯電話のスライドスイッチカルーセル画像の例をサポートする効果を実現するためのjs
  • JS カルーセル図の実装の簡単なコード
  • js で左右のボタンをクリックして画像を再生する
  • JSは自動カルーセル効果(適応型画面幅+携帯電話タッチスクリーンスライド)を実現します
  • html+js+css を使用してページ カルーセル効果を実現する (例の説明)
  • JSは左右のシームレスなカルーセルコードを実装します
  • 無限ループカルーセル効果を実現するネイティブ js
  • jsは左から右へのスライドカルーセル効果を実現します

<<:  HTTPS の原則の説明

>>:  MySQLインデックスの詳細な分析

推薦する

MySQL 5.7 zip アーカイブ バージョンのインストール チュートリアル

この記事では、MySQL 5.7 zipアーカイブ版のインストールチュートリアルを参考までに紹介しま...

HTMLの基礎を徹底解説(第1部)

1. WEBを理解するWeb ページは主にテキスト、画像、ハイパーリンクなどの要素で構成されていま...

Docker コンテナ アプリケーションで避けるべき 10 の悪い習慣

コンテナが企業の IT インフラストラクチャに欠かせない要素となっていることは間違いありません。コン...

CSS が複数のクラスに一致する方法のサンプルコード

CSSは複数のクラスにマッチする次の HTML タグ li、クラスはオープン スタイルです。私の要件...

JavaScript 手ぶれ補正のケーススタディ

原理手ぶれ補正の原理は、イベントをトリガーすることはできますが、イベントがトリガーされてから n 秒...

Centos8 システムの VMware インストール チュートリアル図 (中国語グラフィカル モード)

目次1. ソフトウェアとシステムイメージ2. 仮想マシンを作成する3. CentOS8をインストール...

MySql への新しいユーザーの追加、ユーザー用のデータベースの作成、ユーザーへの権限の割り当ての概要

1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...

テーブルを使用してフォームコントロールの形式を調整し、見栄えを良くします。

自分でウェブページを書きたいので、HTML 言語についても少し勉強しています。これは、大学時代にウェ...

jQuery における Ajax の関連知識ポイントのまとめ

序文JavaScriptを学ぶ学生は、 AJAX (非同期JavaScriptとxml) 変換は非同...

myisamchk および mysqlcheck ツールを使用して破損した MySQL データベース ファイルを迅速に修復する方法

サーバーのデータベース ハード ディスク領域がいっぱいだったため、大量のデータの書き込みに失敗し、「...

MySQL MGR の利点は何ですか?

MGR (MySQL グループ レプリケーション) は、バージョン 5.7 で追加された新しい機能...

LinuxベースのApacheウェブサイトサービス構成の詳細な説明

オープンソース ソフトウェアである Apache は、最も広く使用されている Web アプリケーショ...

docker で Apollo をデプロイする詳細なチュートリアル

1. はじめにここでは apollo について詳しく説明しません。公式サイト https://git...

VMWare仮想マシンのcentosの時間が現地時間と矛盾する問題を解決する

VM Ware 仮想マシン CentOS の時刻は、次の図に示すように、現地時間と一致しません。おそ...

MySQLのさまざまなロックに関する詳細な理解

目次ロックの概要ロックの分類データベース操作の粒度データ操作の種類MySQL ロックさまざまなストレ...