HTML+CSS+JS でスタックカルーセル効果を実装するサンプルコード

HTML+CSS+JS でスタックカルーセル効果を実装するサンプルコード

効果:
スライドショーが一方向に動く場合、各画像のサイズ、位置、透明度、レベルを変更する必要があります。
原理:
カルーセルが左に移動すると、最初の子要素が最後までカットされます。カルーセルが右に移動すると、最後の子要素が最前面にカットされ、シームレスなカルーセル効果を実現します。li がカットされた後に次の li が埋められるため (たとえば、最初の子要素が最後までカットされると、2 番目の子要素が最初の子要素として埋められる)、li の添え字は変更されません。このようにして、各位置の li のプロパティ (サイズ、位置、透明度、レベル) が変更されます。
HTMLコード:

 <本文>
    <div class="smallBox">
    <div class="arrowLeft">←</div>
    <div class="smallPicBox"> //div を使用して ul を保存し、ul<ul> 内の各 li の初期スタイルを設定します。
                <li id="li1" style="position: absolute;top:calc(50% - 200px);left: 0px;z-index:1;background-color: aqua;transform: scale(0.5);transition: 0.3s;opacity: 0.5;background-image: url(./images/01.jpg);background-size: cover;"></li>
                <li id="li2" style="position: absolute;top:calc(50% - 200px);left: 150px; z-index:2;background-color: red;transform: scale(0.7); transition: 0.3s;opacity: 0.7;background-image: url(./images/02.jpg);background-size: cover;"></li>
                <li id="li3" style="position: absolute;top:calc(50% - 200px);left: 300px; z-index:3;background-color: blue;transform: scale(0.9); transition: 0.3s;opacity: 0.9;background-image: url(./images/03.jpg);background-size: cover;"></li>
                <li id="li4" style="position: absolute;top:calc(50% - 200px);left: 450px; z-index:4;background-color: green;transform: scale(1); transition: 0.3s;opacity: 1;background-image: url(./images/04.jpg);background-size: cover;"></li>
                <li id="li5" style="position: absolute;top:calc(50% - 200px);left: 600px; z-index:3;background-color: yellow;transform: scale(0.9); transition: 0.3s;opacity: 0.9;background-image: url(./images/05.jpg);background-size: cover;"></li>
                <li id="li6" style="position: absolute;top:calc(50% - 200px);left: 750px; z-index:2;background-color: gray;transform: scale(0.7); transition: 0.3s;opacity: 0.7;background-image: url(./images/06.jpg);background-size: cover;"></li>
                <li id="li7" style="position: absolute;top:calc(50% - 200px);left: 900px; z-index:1;background-color: deeppink;transform: scale(0.5); transition: 0.3s;opacity: 0.5;background-image: url(./images/07.jpg);background-size: cover;"></li>
            </ul>
        </div>
        <div class="arrowRight">→</div>
    </div>
</div>
</本文>

CSSコード:

<スタイル>
        *{
            マージン: 0;
            パディング: 0;
            リストスタイル: なし;
        }
        .アルバムボックス{
            幅: 1200ピクセル;
            高さ: 400px;
            マージン: 0 自動;
            境界線: 1px実線 #000;
        }

        .smallBox{
            高さ: 400px;
            行の高さ: 400px;
            位置: 相対的;
        }
        .smallPicBox{
            幅: 1100ピクセル;
            高さ: 400px;
            フロート: 左;
            位置: 相対的;
        }
        .smallPicBox ul{
            幅: 100%;
            高さ: 400px;
        }
        .smallPicBox li{
            幅: 320ピクセル;
            高さ: 400px;
            フロート: 左;
            境界線: 1px実線 #000;
            ボックスのサイズ: 境界線ボックス;
        }
        .smallBox .current::after{
            内容: "\25b2";
            位置: 絶対;
            上: -31px;
            左: 70px;
            色: 赤;

        }
        .arrowLeft{
            幅: 50px;
            高さ: 400px;
            位置: 絶対;
            左: 0;
            境界線: 1px実線 #000;
            ボックスのサイズ: 境界線ボックス;
            背景色: グレー;
            zインデックス: 10;
        }
        .arrowRight{
            幅: 50px;
            高さ: 400px;
            位置: 絶対;
            右: 0;
            境界線: 1px実線 #000;
            ボックスのサイズ: 境界線ボックス;
            背景色: グレー;
            zインデックス: 10;
        }
    </スタイル>

JSコード:

<スクリプト>
        var arrowLeft = document.querySelector(".arrowLeft")
        var arrowRight = document.querySelector(".arrowRight")
        var ul = document.querySelector(".smallPicBox ul")
        var li = document.querySelectorAll(".smallPicBox li")
        var タイマー ID = 0
        arrowLeft.onclick=function(){ //左矢印クリックイベント li=document.getElementsByTagName('li')
                ul.appendChild(li[0]) // ul の 0 番目の子要素を末尾までカットしてシームレスなカルーセルを実現します。posi(li) // 各 li のプロパティを変更します。}
        arrowRight.onclick=function(){ //右矢印クリックイベント li=document.getElementsByTagName('li') //liを再度取得
                ul.insertBefore(li[6],li[0]) //シームレスなカルーセルを実現するために、ulの最後の子要素を前面にカットします。posi(li) //各liのプロパティを変更します。}
        
        function posi(li){ //li属性を変更する function var n1=0
                for(var x=0;x<li.length;x++){ //位置を変更 li[x].style.left=n1+'px'
                    n1=n1+150
                }
                for(var i=0;i<li.length/2;i++){ //レベルを変更する li[i].style.zIndex=i+1
                    li[li.length-1-i].style.zIndex=i+1
                }
                li[3].style.zIndex='4'
                変数n2=0.3
                for(var j=0;j<li.length/2;j++){ //スケーリング n2=parseFloat(n2+0.2)
                    li[j].style.transform='scale('+n2+')'
                    li[li.length-1-j].style.transform='scale('+n2+')'
                }
                li[3].style.transform = 'スケール(1)'
                変数n3=0.3
                for(var k=0;k<li.length/2;k++){ //透明度を変更 n3=parseFloat(n3+0.2)
                    li[k].style.opacity=n3
                    li[li.length-1-k].style.opacity=n3
                }
                li[3].style.opacity='1'
        }
        //マウスインとマウスアウト temerId=setInterval(function(){
             矢印左クリック()
        }, 1000);
        arrowLeft.onmouseover=関数(){
            クリア間隔(タイマーID)
        }
        arrowLeft.onmouseout=関数(){
           タイマーID = setInterval(関数(){
            矢印左クリック()
         }, 1000);
        }
        arrowRight.onmouseover=関数(){
            クリア間隔(タイマーID)
        }
        arrowRight.onmouseout=関数(){
           タイマーID = setInterval(関数(){
            矢印左クリック()
         }, 1000);
        }
    </スクリプト>

注: この例では、js は本文に直接記述されています。別の js ファイルを作成して、それを html インターフェースに導入することもできます。

効果画像:

ここに画像の説明を挿入

これで、HTML+CSS+JS でスタックカルーセル効果を実装するためのサンプルコードに関するこの記事は終了です。HTML+CSS+JS でカルーセルを実装する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  MySQL 実践演習 シンプルなライブラリ管理システム

>>:  フィルターを使用して画像に透明な CSS を書く方法

推薦する

JavaScriptでよく使われる配列重複排除実戦ソースコード

アレイの重複排除は、通常、就職面接中に遭遇し、アレイの重複排除方法のコードを手動で記述することが求め...

シンプルなカルーセルの最も完全なコード分析を実装するJavaScript(ES6オブジェクト指向)

この記事では、シンプルなカルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹...

W3C チュートリアル (8): W3C XML スキーマのアクティビティ

XML スキーマは、DTD に代わる XML ベースのものです。 XML スキーマは、DTD に代わ...

CSS で波の効果を作成するためのアイデア

以前、純粋な CSS を使用して波の効果を実現する方法をいくつか紹介しました。それらについては、次の...

Linux での MySQL のアンインストールとインストールのグラフィック チュートリアル

ブログを書くのは初めてです。開発に携わって2年になります。仕事の後に何か有意義なことを見つけたいと思...

Vue で pdfjs を使用して PDF ファイルをプレビューする方法

目次序文考えるライブラリディレクトリの解析とダウンロード使い方ファイルの場所実際の通話質問要約する序...

Nginx に lua-nginx-module モジュールをインストールする方法

ngx_lua_module は、lua パーサーを nginx に埋め込み、lua 言語で記述され...

JavaScript 構造化代入の詳細な説明

目次コンセプト配列の分割値を個別に宣言して割り当てるデフォルト値の構造化解除変数値の交換関数によって...

Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL 環境構築チュートリアル

準備1. 環境の説明:オペレーティング システム: Windows Server 2019 PHP ...

webpackでHMRを手動で実装するいくつかの方法

目次1. はじめに2. GitHub 3. 基本構成プロジェクトディレクトリパッケージ.json c...

Ubuntu で nginx を使用して WebDAV ファイル サーバーを構築する詳細なプロセス

nginxをインストールするnginx-fullをインストールする必要があることに注意してください。...

VMware 15 を使用して仮想マシンをインストールし、CentOS 8 を使用する詳細な手順

序文:現在、Linux と .Net Core を学習しており、クロスプラットフォームの知識を学んで...

Linuxで同一ファイルを見つける方法

コンピュータを使用すると、システム内に大量のゴミが生成されます。最も一般的なケースは、同じファイルが...

要素の$notifyポイントについての簡単な説明

当初の意図は、element-ui の $notify 通知をコンポーネントにカプセル化することでし...