ネイティブ Js で実装されたシンプルなシームレス スクロール カルーセルのサンプル コード

ネイティブ Js で実装されたシンプルなシームレス スクロール カルーセルのサンプル コード

シンプルなシームレススクロールカルーセルには多くの抜け穴があり、後から画像を追加するのは非常に不便で、多くの場所を変更する必要があります。また、結合度が高く、プログラムの一部にしか適用できません。そのため、画像構造を変更し、変換ポイントを計算することで、コードをアップグレードできます。

オリジナルのシンプルなスクロールカルーセルコード

<html>
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>ドキュメント</title>
    <スタイル>
        *{
            マージン: 0;
            パディング: 0;
        }
        。スクロール{
            位置: 相対的;
            width: 830px;/*表示幅: 4 つの画像 + 3 つの境界線 = 830*/
            高さ: 130px;
            境界線: 10px実線rgb(15, 15, 15);
            マージン: 100px 自動;
            オーバーフロー: 非表示;
        }
        .スクロール ul{
            位置: 絶対;
            width: 5000px;/*ulはすべてのliの幅を保存できます*/
            高さ: 130px;
            上: 0;
            左: 0;
        }
        .スクロール ul li{
            フロート: 左;
            幅: 200ピクセル;
            高さ: 130px;
            右マージン: 10px;
            オーバーフロー: 非表示;
        }

    </スタイル>
</head>
<本文>
    <div id="スクロール" class="スクロール">
        <ul id="munit">
            <li><img src="../BOM/shuzi/3.png" alt=""></li>
            <li><img src="../BOM/shuzi/4.png" alt=""></li>
            <li><img src="../BOM/shuzi/5.png" alt=""></li>
            <li><img src="../BOM/shuzi/6.png" alt=""></li>
            <li><img src="../BOM/shuzi/7.png" alt=""></li>
            <li><img src="../BOM/shuzi/8.png" alt=""></li>
            <li><img src="../BOM/shuzi/9.png" alt=""></li>

            <li><img src="../BOM/shuzi/3.png" alt=""></li>
            <li><img src="../BOM/shuzi/4.png" alt=""></li>
            <li><img src="../BOM/shuzi/5.png" alt=""></li>
            <li><img src="../BOM/shuzi/6.png" alt=""></li>
            <li><img src="../BOM/shuzi/7.png" alt=""></li>
            <li><img src="../BOM/shuzi/8.png" alt=""></li>
            <li><img src="../BOM/shuzi/9.png" alt=""></li>
        </ul>
    </div>

    <スクリプト>
        //要素を取得します var scroll = document.getElementById("scroll");
        var munit = document.getElementById("munit");
        var li = munit.children;
        // スクロール var nowLeft = 0;
        //ul要素の動きの転換点を見つけるvar back = -1470; //画像と境界線はliの幅で、表示される画像は4つなので、転換点は1260です
        //タイマー var timer = setInterval(run,20);

        //マウスを移動するとスクロールが停止します scroll.onmouseover = function(){
            タイマーの間隔をクリアします。
        }
        // カルーセルを削除します scroll.onmouseout = function(){
            タイマー = setInterval(run,20);
        }

        //モーション関数 function run(){
            nowLeft -= 2;
            // 折り返し地点に到達したかどうかを判断します。到達している場合は、即座に位置 0 に切り替えます if (nowLeft <= back) {
                nowLeft = 0;
            }
            munit.style.left = nowLeft + "px";
        }

       
    </スクリプト>
</本文>
</html>

<div id="scroll"> 構造の ul に親 div を追加して、後で画像を追加したり、ul の幅を取得して変換ポイントを計算できるようにします。
1. リベートポイントの計算はJsによって自動的に計算される必要がある
var back = -munit.offsetWidth; //要素は左に移動し、値は負になります
2. 対応する画像構造の別のセットを自動的に生成します。
munit.innerHTML = munit.innerHTML + munit.innerHTML; //これにより、li タグのセットが追加され、後で画像を追加すると、いくつかのコードも増加および変更されます。

CSS書き換え部分:
  /* ul に親 div を追加して、後で画像を追加した後に ul の幅を取得できるようにします */
        .スクロール .インナー{
            位置: 相対的;
            幅: 5000ピクセル;
        }
        .スクロール ul{
            位置: 絶対;
            高さ: 130px;
            上: 0;
            左: 0;
            リストスタイル: なし;


本文書き換え部分:      
<本文>
    <div id="スクロール" class="スクロール">
       <div class="inner">
           <ul id="munit">
              <li><img src="../BOM/shuzi/3.png" alt=""></li>
              <li><img src="../BOM/shuzi/4.png" alt=""></li>
              <li><img src="../BOM/shuzi/5.png" alt=""></li>
              <li><img src="../BOM/shuzi/6.png" alt=""></li>
              <li><img src="../BOM/shuzi/7.png" alt=""></li>
              <li><img src="../BOM/shuzi/8.png" alt=""></li>
              <li><img src="../BOM/shuzi/9.png" alt=""></li>
              <li><img src="../BOM/shuzi/10.png" alt=""></li>
          </ul>
       </div>
    </div>

JS書き換え部分:
<スクリプト>
        //要素を取得します var scroll = document.getElementById("scroll");
        var munit = document.getElementById("munit");

        //書き換え部分//1 戻り点の計算はJsによって自動的に計算される必要がある var back = -munit.offsetWidth;//要素は左に移動し、値は負になります//2 対応する画像構造の別のセットを自動的に生成します li
        munit.innerHTML = munit.innerHTML + munit.innerHTML;
        // スクロール var nowLeft = 0;
        //タイマー var timer = setInterval(run,20);

        //マウスを移動するとスクロールが停止します scroll.onmouseover = function(){
            タイマーの間隔をクリアします。
        }
        // カルーセルを削除します scroll.onmouseout = function(){
            タイマー = setInterval(run,20);
        }

        //モーション関数 function run(){
            nowLeft -= 1;
            // 折り返し地点に到達したかどうかを判断します。到達している場合は、即座に位置 0 に切り替えます if (nowLeft <= back) {
                nowLeft = 0;
            }
            munit.style.left = nowLeft + "px";
        }

    </スクリプト>
</本文>
</html>

この種のコードは結合度が低く、任意の数の li と任意のサイズの画像を追加するのにも適しています。

上記はネイティブ Js で実装されたシンプルなシームレススクロールカルーセルのサンプルコードの詳細です。Js で実装されたシンプルなシームレススクロールカルーセルの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • JavaScript を使用してカルーセル画像のシームレスなスクロールと自動再生を実現する方法
  • シームレススクロールカルーセルの例のJavaScriptオブジェクト指向実装
  • 特殊な形状のスクロールカルーセルを実現するJavaScript
  • JSはランキングテキストの上向きスクロールカルーセル効果を実現します
  • js カルーセル シームレス スクロール効果
  • js フォーカス カルーセル効果を完璧に実装する (パート 2) (スクロール可能な画像)
  • JavaScript カルーセルとマウスホイール付きカスタムスクロールバーのコード投稿を共有
  • JS シンプルなカルーセル画像スクロールの例
  • ネイティブ js でカルーセルを実装するためのサンプル コード
  • JavaScriptスクロールカルーセルの作り方の原理を詳しく解説

<<:  MySQL は SQL ステートメントの最新のレコードをクエリします (最適化)

>>:  MySQL 8.0.11 圧縮版のインストールチュートリアル

推薦する

VSCode の JS フォーマットでセミコロンを自動的に追加または削除する方法について

導入js コード文の末尾にセミコロンを追加しても追加しなくても問題ありません。一般的に、チームで開発...

MySQL 文字列連結関数 GROUP_CONCAT の詳細な説明

前回の記事では、クロステーブル更新について書きました。自分が書いた SQL を見たとき、自分がバカみ...

Alibaba Cloud ECSインスタンスのユーザールートパスワードとリモート接続方法を設定する方法

Alibaba Cloud サーバーを購入した後、新しいインスタンスが正常に動作できるようにするには...

ネイティブjsは9マスグリッドのドラッグアンドドロップを実現します

ネイティブJSを使用して9つの正方形のグリッドを記述し、9つのグリッドの位置をドラッグして変更する効...

Flex レイアウトで適応型ページを作成する (構文と例)

Flex レイアウトの紹介英語の Flex はフレキシブル ボックス、つまり伸縮性のあるボックスを...

JS WebSocket 切断理由とハートビートの仕組みの詳しい説明

1. 切断理由WebSocket が切断される理由は多数あります。WebSocket が切断されたと...

タブ切り替え効果を実現するJavaScript

この記事では、タブ切り替え効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...

MySQL 外部キー制約の例の説明

MySQL の外部キー制約は、2 つのテーブル間のリンクを確立するために使用されます。 1 つのテー...

MySQL の永続性とロールバックの原理を 1 つの記事で理解する

目次再実行ログディスクデータを直接更新するのではなく、最初にメモリデータを更新する必要があるのはなぜ...

Ubuntu 15.04 は MySQL リモート ポート 3306 を開きます

Ubuntu 15.04 は MySQL リモート ポート 3306 を開きます。以下の操作はすべて...

MySQLインデックスベースのストレステストの実装

1. データベースデータをシミュレートする1-1 データベースとテーブルスクリプトを作成する - v...

MySQLユーザーと権限管理の詳細な説明

この記事では、例を使用して MySQL ユーザーと権限の管理について説明します。ご参考までに、詳細は...

ウェブページ作成における絶対パスと相対パスの違い

1. 絶対パスまず、ローカル コンピューターでは、ファイルの絶対パスは、当然、ハード ディスク上でフ...

MySQL ソートの原則とケース分析

序文ソートはデータベースの基本的な機能であり、MySQL も例外ではありません。ユーザーは、Orde...