カルーセルカルーセルケースのJS実装

カルーセルカルーセルケースのJS実装

この記事の例では、カルーセルカルーセルを実装するためのJSの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

効果:

各絵の配置は中央を基準に左右対称になっています。画像のサイズと透明度は異なりますが、対称画像のスタイルは同じで、3 次元のカルーセル効果を表現します。

カルーセルダイナミックエフェクト画像:

まずはコードを見てみましょう:

<!DOCTYPE html>
<html>
<head lang="ja">
    <メタ文字セット="UTF-8">
    <title>カルーセル スライドショー</title>
    <link rel="スタイルシート" href="css/css.css" />
</head>
<本文>
<div class="wrap" id="wrap">
    <div class="スライド" id="スライド">
        <ul>
            <li><a href="#" ><img src="images/slidepic1.jpg" alt=""/></a></li>
            <li><a href="#" ><img src="images/slidepic2.jpg" alt=""/></a></li>
            <li><a href="#" ><img src="images/slidepic3.jpg" alt=""/></a></li>
            <li><a href="#" ><img src="images/slidepic4.jpg" alt=""/></a></li>
            <li><a href="#" ><img src="images/slidepic5.jpg" alt=""/></a></li>
        </ul>
        <div class="arrow" id="arrow">
            <a href="javascript:void(0);" class="prev" id="arrLeft"></a>
            <a href="javascript:void(0);" class="next" id="arrRight"></a>
        </div>
    </div>
</div>
</本文>
<スクリプト>
    //配列を定義し、絶対位置を使用して5つのliの位置を設定します。var config = [
        {
            幅: 400,
            トップ: 20,
            残り: 50,
            不透明度: 0.2、
            zインデックス: 2
        },
        {
            幅: 600,
            トップ: 70,
            左: 0,
            不透明度: 0.8、
            zインデックス: 3
        },
        {
            幅: 800,
            上: 100,
            残り: 200,
            不透明度: 1,
            zインデックス: 4
        },
        {
            幅: 600,
            トップ: 70,
            残り: 600、
            不透明度: 0.8、
            zインデックス: 3
        },
        {
            幅: 400,
            トップ: 20,
            残り: 750,
            不透明度: 0.2、
            zインデックス: 2
        }
    ];
    //ページ読み込みイベント window.onload = function () {
        var flag = true; //すべてのアニメーションが終了したと想定します //画像が展開されます var list = my$("slide").getElementsByTagName("li");
        関数assgin() {
            (var i=0;i<list.length;i++) の場合 {
                //各liを設定して、ワイドレベルの透明度の左上が指定されたターゲット位置に到達するようにします。animate(list[i],config[i],function () {
                    フラグ = true;
                });
            }
        }
        アサーション();
 
        // ボタンのクリック イベントを設定します // 右側のボタン イメージが時計回りに回転し、配列の最初の要素が末尾に配置されます/*
             pop() は最後の要素を削除します。push() は末尾に要素を追加します。shift() は最初の要素を削除します。unshift() は配列の先頭に要素を追加します*/
        my$("arrRight").onclick = 関数(){
            if (フラグ){
                フラグ = false;
                config.shift() をプッシュします。
                assgin(); // 再割り当て }
        };
        //左ボタンの画像が反時計回りに回転し、配列の最後の要素が先頭に配置されます my$("arrLeft").onclick = function(){
            if (フラグ){
                フラグ = false;
                config.unshift(config.pop());
                assgin(); // 再割り当て }
        };
 
        //マウスが左右のフォーカスdivに入ると、my$("wrap")が表示されます。onmouseover = function () {
            アニメーション化(my$("arrow"),{"opacity":1});
        };
        //マウスが左または右のフォーカスdivから離れると、非表示になります。my$("wrap").onmouseout = function () {
            アニメーション化(my$("arrow"),{"opacity":0});
        };
    };
 
    //IDで要素を取得する function my$(id) {
        document.getElementById(id) を返します。
    }
 
    //任意の要素の任意のスタイル属性の値を取得する function getAttrValue(element,attr) {
        element.currentStyle?element.currentStyle[attr] を返します: window.getComputedStyle(element,null)[attr]||0;
    }
 
    // アニメーション関数 animate(element,json,fn) {
        要素のtimeIdをクリアします。
        要素.timeId=setInterval(関数() {
            var flag = true; // 目標が達成されたと仮定します for (var attr in json) {
                if(attr=="opacity"){//属性が不透明かどうかを判定する
                    var current = getAttrValue(要素、attr)*100;
                    // 毎回何ステップ移動するかvar target=json[attr]*100;// 変数に直接値を割り当てるため、次のコードは変更する必要はありませんvar step=(target-current)/10;//(target-current)/10
                    ステップ=step>0?Math.ceil(step):Math.floor(step);
                    現在の値=現在の値+ステップ;
                    要素.style[attr]=現在の/100;
                }else if(attr=="zIndex"){//属性がzIndexかどうかを判定する
                    要素.style[attr]=json[attr];
                }else{//通常の属性//現在の位置を取得します----getAttrValue(element,attr) は文字列型を取得します var current= parseInt(getAttrValue(element,attr))||0;
                    // 毎回何ステップ移動するかvar target=json[attr];// 変数に直接割り当てます。次のコードを変更する必要はありませんvar step=(target-current)/10;//(target-current)/10
                    ステップ=step>0?Math.ceil(step):Math.floor(step);
                    現在の値=現在の値+ステップ;
                    element.style[attr]=現在の値+"px";
                }
                if(現在値!=ターゲット値){
                    flag=false; //目標結果に達しない場合はfalseになります
                }
            }
            if(flag){//結果は真です
                要素のtimeIdをクリアします。
                if(fn){//ユーザーがコールバック関数fn()を渡した場合; //直接呼び出します。
                }
            }
            console.log("ターゲット:"+ターゲット+"現在:"+現在+"ステップ:"+ステップ);
        },10);
    }
 
</スクリプト>
</html>

css.css スタイル:

@charset "UTF-8";
/*初期化リセット*/
blockquote、body、button、dd、dl、dt、fieldset、form、h1、h2、h3、h4、h5、h6、hr、input、legend、li、ol、p、pre、td、textarea、th、ul{margin:0;padding:0}
本文、ボタン、入力、選択、テキストエリア{font:12px/1.5 "Microsoft YaHei", "微软雅黑", SimSun, "宋体", sans-serif;color: #666;}
ol,ul{リストスタイル:なし}
a{テキスト装飾:なし}
フィールドセット、画像{ボーダー:0;垂直配置:上;}
a、入力、ボタン、選択、テキストエリア{アウトライン:なし;}
a,ボタン{カーソル:ポインター;}
 
。包む{
    幅:1200ピクセル;
    マージン:100px 自動;
}
.スライド{
    高さ:500px;
    位置: 相対的;
}
.スライド li{
    位置: 絶対;
    左:200px;
    トップ:0;
}
.スライド li 画像{
    幅:100%;
}
.矢印{
    不透明度: 0;
}
.前へ,.次へ{
    幅:76px;
    高さ:112px;
    位置: 絶対;
    上位:50%;
    上マージン:-56px;
    背景: url(../images/prev.png) 繰り返しなし;
    zインデックス: 99;
}
。次{
    右:0;
    背景画像: url(../images/next.png);
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • js カルーセル効果
  • カルーセルスライドショーを実装するためのJavaScript
  • カルーセルカルーセルの効果を実現するためのjs
  • JS はカルーセルスライドショーを実装します
  • カルーセル効果を実現する js
  • カルーセルカルーセル効果を実現するネイティブ js
  • JSはカルーセルスタイルの画像回転効果を実現します
  • カルーセルスタイルの画像回転プラグインを実装するネイティブJS
  • カルーセル効果を実現するネイティブ js

<<:  XHTML 入門チュートリアル: フレーム タグの使用

>>:  DockerイントラネットはDNSを構築し、ip:port操作の代わりにドメイン名アクセスを使用します

推薦する

バックアップ データをインポートするときに innodb_index_stats がエラーを報告する場合の主キー競合の解決方法

障害の説明percona5.6、mysqldump フルバックアップ、バックアップデータのインポート...

Tomcat+Mysql の高同時実行構成の最適化の説明

1.Tomcatの最適化構成(1)Tomcatのcatalina.batを変更するJavaをサーバー...

MySQLのインデックスシステムがB+ツリーを使用する理由の分析

目次1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 3. インデック...

パフォーマンスの最適化を教える 52 個の SQL 文

1. クエリを最適化するには、テーブル全体のスキャンを避けてください。まず、where と orde...

Docker ロード後にイメージ名が none になる問題の解決方法

最近、docker load -i コマンドを使用してイメージ パッケージを圧縮した後、イメージ名と...

同期スクロールを実現するための複数のテーブル要素のサンプルコード

Element UIは、複数のテーブルを同時に水平および垂直にスクロールすることを実装します。 コー...

リンクAの意味論、書き方、ベストプラクティス

リンク A のセマンティクス、ライティング スタイル、およびベスト プラクティス。私は JavaEy...

シェルスクリプトによるDockerコンテナの起動順序の制御の詳細な説明

1. 遭遇した問題分散プロジェクトの展開プロセスでは、サーバーの再起動後にアプリケーション(データベ...

node.js グローバル変数の具体的な使用法

グローバルオブジェクトすべてのモジュールは呼び出すことができますglobal: ブラウザの wind...

CSS と HTML とフロントエンド テクノロジーのレイヤー図

JavascriptとDOMの関係は非常に曖昧で、CSSやHTMLのフロントエンド技術層も理解してい...

Select はダブルクリック dbclick イベントをサポートしていません

XML/HTML コードコンテンツをクリップボードにコピー< div クラス= "c...

Vueがsweetalert2プロンプトコンポーネントを統合する際の問題についてお話ししましょう

目次1. プロジェクト統合1. CDNインポート方法: 2. 箱の梱包を確認する3. 迅速な箱詰め4...

NodeとPythonの双方向通信実装コード

目次プロセスコミュニケーションプロセス間の双方向通信問題要約するサードパーティのデータ サプライヤー...

Faint: 「Web2.0 を使用して標準に準拠したページを作成する」

今日、ある人がウェブサイト開発プロジェクトについて話をしてくれました。具体的な要件について話すと、「...

コンテンツ領域の周囲を回転する CSS 動的グラデーション ボーダーの効果 (サンプル コード)

レンダリング ネットで関連情報を調べたところ、現在のダイナミックグラデーションボーダーの実装方法のほ...