ネイティブ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は複数テーブル関連統計(サブクエリ統計)の例を実装します

この記事では、例を使用して、MySQL で複数テーブルの関連統計を実装する方法について説明します。ご...

docker ベースの redis-sentinel クラスターの構築例

1. 概要Redis Cluster は、Redis ノードのグループ間での高可用性とシャーディング...

CSS マスクを使用して PNG 画像のサイズを大幅に最適化します (推奨)

この記事は共有および集約することを歓迎します。全文を転載する必要はありません。著作権を尊重してくださ...

JSキャンバスは描画ボードと署名ボードの機能を実現します

この記事では、お絵かきボード/サインボード機能を実現するためのJSキャンバスの具体的なコードを参考ま...

React 国際化 react-i18next の詳細な説明

導入react-i18next は、 i18nextをベースにした強力な国際化フレームワークです。 ...

count(1)、count(*)、count(列名)の実行の違いの詳細な説明

実施効果: 1. count(1) と count(*)テーブル内のデータ量が多い場合、テーブルを分...

docker で golang イメージに基づいて ssh サービスを構築する方法

以下は、docker の golang イメージに基づいて ssh サービスを構築するためのコードで...

OpenLayers 3 のベクターマップソースの読み込みの問題を解決する

1. ベクターマップベクター グラフィックスは直線と曲線を使用してグラフィックスを表します。これらの...

Linux の特別な権限 SUID、SGID、SBIT の詳細な説明

序文Linux のファイルまたはディレクトリの権限については、通常の rwx 権限についてすべて知っ...

MySQLオンラインDDL gh-ostの使用の概要

背景: DBA として、大規模なテーブルの DDL 変更のほとんどは、Percona の pt-on...

TypeScript における型保護の詳細な説明

目次概要型アサーション構文ではインスタンスオブ構文typeof構文要約する概要TypeScript ...

VUE ユニアプリの条件付きコーディングとページレイアウトに関する簡単な説明

目次条件付きコンパイルページレイアウト要約する条件付きコンパイル条件付きコンパイルでは、特別なコメン...

シンプルなHTMLとCSSの使い方の詳細な説明

HTML と CSS を含む JD.com のホームページの静的ページ効果を 3 日間で完成させます...

insert と select を組み合わせて、「データベース内のフィールドの最大値 + 1 を挿入する」メソッドを実装する

この記事はmysqlデータベースです質問 1 表 1 のデータを表 2 にインポートします。表 1 ...

Windows 上の Docker にさまざまなソフトウェアをインストールする詳細なプロセス

1. MySQLをインストールする # docker で mysql をダウンロード docker ...