ネイティブ 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 圧縮版のインストールチュートリアル

推薦する

JSは検証コードのランダム生成を実装します

この記事の例では、検証コードのランダム生成を実現するためのJSの具体的なコードを参考までに共有してい...

画像のフェードインとフェードアウト効果を実現する js

この記事では、画像のフェードインとフェードアウトを実現するためのjsの具体的なコードを参考までに紹介...

JavaScript の基本: ループと配列

目次ループ - for forループの基本的な使い方ループを終了するネストされたループ配列配列とは何...

Maven で tomcat8-maven-plugin プラグインを使用する詳細なチュートリアル

オンラインで多くの記事を検索しましたが、解決策は見つかりませんでした。次のように、tomcat7-m...

Linuxシステムの操作レベルの詳細な紹介

目次1. Linuxシステムの操作レベルの概要2. 実行レベルを確認する3. 現在のシステムの動作レ...

Yahooが開発したウェブページスコアリングプラグインYSlowのスコアリングルール

YSlow は、Yahoo USA が開発したページ スコアリング プラグインです。非常に優れていま...

CSS変数var()の使い方を理解する必要があります

Web プロジェクトがどんどん大きくなると、CSS は天文学的な大きさと複雑さを増します。この問題を...

ウォーターフォールレイアウト+ダイナミックレンダリングの実装

目次典型的なウォーターフォールウェブサイトウォーターフォールフローレイアウトの原則一般的な考え方具体...

HTML フォーム送信アクションと URL ジャンプアクションの違い

フォームのアクションは URL ジャンプとは異なります。フォームはバックグラウンドにデータを渡すこと...

docker ベースで Prometheus+Grafana を構築する手順の詳細説明

1. プロメテウスの紹介Prometheus は、もともと SoundCloud によって開発された...

HTML テーブル マークアップ チュートリアル (16): タイトルの水平方向の配置属性 ALIGN

デフォルトでは、表のタイトルは水平方向に中央揃えされます。ALIGN 属性を使用して、タイトル テキ...

Centos8 で NIS ドメイン サービスをセットアップおよび構成するための詳細な手順

目次NIS の紹介ネットワーク環境: 1. 環境の準備(両方のノードが必要) 2.nisマスターサー...

MySQLコマンドプロンプトで入力エラーが発生したときに前のコマンドを修正する方法

目次現在の問題解決プロセス具体的な手順解決した事件現在の問題MySQL コマンド プロンプトに複数行...

入力が正しいにもかかわらず、MySQL 8.0 でアクセスが拒否される問題を解決する

最近、MySQL を学び始めました。インストールはスムーズに進み、インターネット上の既成のチュートリ...

Vue CLI のモードと環境変数の詳細な説明

序文実際のプロジェクトの開発では、通常、プロジェクト開発フェーズ、テストフェーズ、最終オンラインフェ...