ネイティブ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インデックスの詳細な分析

推薦する

VMware 15.5 に CentOS7 をインストールするためのグラフィック チュートリアル

1. VMware 15.5で新しい仮想マシンを作成する1. VMware を開き、ホームページで「...

入力テキスト ボックスと画像検証コードの位置合わせの問題 (画像は常に入力より 1 つ上になります)

Web ページ制作では、input と img が同じ行に配置されることが多く、img タグが常に ...

Html+CSS フローティング広告ストリップの実装

1.html部分コードをコピーコードは次のとおりです。 <!DOCTYPE html> ...

ウェブデザインの教育または学習プログラム

セクションコース内容営業時間1 ウェブデザインの概要2 2 HTML 基本タグとフォーマットタグ 2...

MySQL 5.7 で業務を停止せずに従来のレプリケーションを GTID レプリケーションに変更する例

GTID の利点により、従来のファイル POS ベースのレプリケーションを GTID ベースのレプリ...

MySQL SQL文の特殊処理文のまとめ(必読)

1.テーブル全体を更新します。データ行の列の値が空の場合は、別の列フィールドの値と同じにします。 ...

CSS3で跳ねるボールのアニメーションを実現

私は通常、大手ウェブサイトの特別ページや製品リリースページを訪問するのが好きです。なぜなら、たくさん...

Vue3.0 異なる解像度のコンピュータの適応操作

まず依存関係をインストールする必要があります npm i lib-flexible-computer...

4種類のMySQL接続とマルチテーブルクエリの詳細な説明

目次MySQL 内部結合、左結合、右結合、外部結合、複数テーブルクエリビルド環境: 1. 内なる慈恩...

フレームセットの共通プロパティ(フレームとウィンドウの分割)

フレームとは、Web ページ画面を複数のフレームに分割したもの(複数の Web ページという形で表示...

SQL Server での exists と except の使用法の概要

目次1. 存在する1.1 説明1.2 例1.3 交差/2017-07-21 2. 除く2.1 説明2...

Nginx のパフォーマンスを向上させるための提案

Web アプリケーションが 1 台のマシンでのみ実行される場合、パフォーマンスを向上させるのは非常に...

ノードをMySQLデータベースに接続する際に発生する問題と解決策

今日、MySQL の新しいバージョン (8.0.21) をインストールしましたが、ノード フレームワ...

vue+drf+サードパーティのスライディング検証コードアクセスの実装

目次1. 背景2. 検証プロセス3. 検証を作成する4. フロントエンドコード4.1 コアjsファイ...