jquery_jquery に基づいてカルーセル効果を実装する
カルーセルは、jquery を学習するときに実装される 2 番目の動的エフェクトであり、学習に最も時間がかかるエフェクトでもあります。カルーセルを導入する過程では、常にさまざまな問題に遭遇し、多くの人に相談し、何度も質問してきました。今日は、カルーセルをすぐに作成できるとは大胆に言いません。
エッセイを通していくつかの思考プロセスを記録したいと思っています。
1 つ目は HTML 構造、単純なカルーセル、単一画像のシームレスなカルーセルで、主に 3 つの層に分かれています: div>ul>li、および li 内の img 画像。
次に、css スタイル: div 固定幅と高さ、オーバーフロー: 非表示; ul の幅は動的に取得することをお勧めします (次のステップは li の取得方法についてです)。 、ul 上で順番に配置できるように、float をクリアすることを忘れないでください (クリア: 両方)。
重要なのは jquery メソッドで、主に使用されるメソッドは animate()、setInterval()、hover() です。メソッドを記述する前に、動的な効果のロジックを明確にしましょう。画像はループ内で右から左にスライドし、最後の画像がスライドすると最初の画像が表示されます。
1. 長さと幅の li の数を取得します
var len=$('li').length,
liWidth=$('li').width,
シームレスなカルーセルなので、画像が最後の画像にスライドしたときに、最初の画像に自然に移行するにはどうすればよいでしょうか。したがって、最初の部分を複製して li
の最後に追加する必要があります。$('li:first').clone().appendTo('ul')
2. ul の幅を取得します。ul の幅は、すべての li の幅に複製された li の幅を加えたものに等しくなります。
ulWidth=liWidth*(len+1)
準備は完了したようですので、次のステップは彼を動かしてみることです。最初に思い浮かぶのは animate() メソッドです。
animate(properties [, period ] [, easing ] [, complete ] ),
最初のパラメータのプロパティ: CSS 属性と値オブジェクト。上下または左右のアニメーションの効果を決定します。
2 番目のパラメーターの継続時間: アニメーションが完了するまでの時間、デフォルトは 400、単位はミリ秒です。
3 番目のパラメータ イージング: アニメーションの遷移に使用されるイージング関数。デフォルトはスイング (リニア、スイング) です。このパラメータは通常は使用されません。4 番目のパラメーター complete: アニメーションの完了後に実行される操作を指します。
私たちのアニメーションは右から左なので、ul のマージン左の値を変更することで実現できます
$('ul').animate({ 'marign-left': -liWidth*index },3000,function(){ if(index==len){ index=0; $('ul').css({'margin-left':'0px'}) } })
これには別の隠れた危険がありますが、それについては今は触れません。
次のステップでは、マウスが div から離れると、画像が自動的に再生されます。これは、hover() と setInterval() を使用するためです
setInterval() は、W3C によって次のように説明されています。指定された期間 (ミリ秒単位) に従って関数を呼び出すか、式を計算します。この関数は、clearInterval() が呼び出されるかウィンドウが閉じるまで継続的に呼び出されます。
var autoPlay; $('div').hover(function(){ clearInterval(autoPlay); },function(){ autoPlay=setInterval(function(){ $('ul').animate({ 'marign-left': -liWidth*index },3000,function(){ if(index==len){ index=0; $('ul').css({'margin-left':'0px'}); index++; } }); },3000) }).trigger('mouseleave');
この問題は昨日解決しましたが、最後のピクチャを実行するとすぐにインデックスが0になり、その後2回実行されることになるため、この判定ではインデックスが0のときに1を加える必要があります。 、index++を判定条件に入れます。
昨日発見した別の問題があります。このカルーセルには 2 つの時間があり、1 つはアニメーションの実行時間であり、もう 1 つは再生時間です。その理由は、前者の時間が後者の時間よりも小さい必要があるためです。実行順序が上から下にある場合、時間が一致している場合、または後者の時間が前者よりも小さい場合、この時間差内ではアニメーションは判定条件に入ることができずに再生が継続されるため、カルーセルは失敗します。今日はここまでです。次回共有するときは、左右の矢印とホバー ドットのカルーセル効果を追加します。
完全なコードを添付します:
<html"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>轮播</title> <style> body,p,form,input,button,dl,dt,dd,ul,ol,li,h1,h2,h3,h4{margin:0;padding:0;list-style:none;} body,button,input,select,textarea{font:12px Arial, Helvetica, sans-serif;color:#333;} input,select,textarea{font-size:100%;} .clearfix:after{display:block;content:".";height:0;visibility:hidden;clear:both;font-size:0;line-height:0;} .clearfix{*zoom:1;} .big-screen{width: 100%; height: 400px; overflow: hidden; margin: 40px 0;} .pic-list{height: 400px;} .pic-list li{float: left; width: 1920px; height: 400px;} </style> </head> <body> <div class="big-screen"> <ul class="pic-list clearfix"> <li> <a href="javascript:;"> <img src="http://fed.yhd.cn:9000/1920x400/27ae60xfff" alt="picture" width="1920" height="400"/> </a> </li> <li> <a href="javascript:;"> <img src="http://fed.yhd.cn:9000/1920x400/ae273axfff" alt="picture" width="1920" height="400"/> </a> </li> <li> <a href="javascript:;"> <img src="http://fed.yhd.cn:9000/1920x400/2757aexfff" alt="picture" width="1920" height="400"/> </a> </li> <li> <a href="javascript:;"> <img src="http://fed.yhd.cn:9000/1920x400/ae7d27xfff" alt="picture" width="1920" height="400"/> </a> </li> </ul> </div> </body> <script type="text/javascript" src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ var ul=$('.pic-list'), li=ul.find('li'), liW=li.outerWidth(true), liLen=li.length, index=0, autoPlay; li.first().clone().appendTo(ul); ul.css({'width':liW*(liLen+1),'margin-left':-liW*index}); function play(){ if(!ul.is('animated')){ ul.stop().animate({ 'margin-left':-liW*index },480,function(){ if(index>liLen){ index=0; ul.css({'margin-left':-liW*index}); index++; } }); } } $('.big-screen').hover(function(){ clearInterval(autoPlay); },function(){ autoPlay=setInterval(function(){ play(); index++; },500) }).trigger('mouseleave'); }) </script> </html>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

このチュートリアルでは、カスタムGoogle検索APIをブログまたはWebサイトに統合する方法を示し、標準のWordPressテーマ検索関数よりも洗練された検索エクスペリエンスを提供します。 驚くほど簡単です!検索をyに制限することができます

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

この記事シリーズは、2017年半ばに最新の情報と新鮮な例で書き直されました。 このJSONの例では、JSON形式を使用してファイルに単純な値を保存する方法について説明します。 キー価値ペア表記を使用して、あらゆる種類を保存できます

楽なWebページレイアウトのためにjQueryを活用する:8本質的なプラグイン jQueryは、Webページのレイアウトを大幅に簡素化します。 この記事では、プロセスを合理化する8つの強力なjQueryプラグイン、特に手動のウェブサイトの作成に役立ちます

コアポイント これは通常、メソッドを「所有」するオブジェクトを指しますが、関数がどのように呼び出されるかに依存します。 現在のオブジェクトがない場合、これはグローバルオブジェクトを指します。 Webブラウザでは、ウィンドウで表されます。 関数を呼び出すと、これはグローバルオブジェクトを維持しますが、オブジェクトコンストラクターまたはそのメソッドを呼び出すとき、これはオブジェクトのインスタンスを指します。 call()、apply()、bind()などのメソッドを使用して、このコンテキストを変更できます。これらのメソッドは、与えられたこの値とパラメーターを使用して関数を呼び出します。 JavaScriptは優れたプログラミング言語です。数年前、この文はそうでした

jQueryは素晴らしいJavaScriptフレームワークです。ただし、他のライブラリと同様に、何が起こっているのかを発見するためにフードの下に入る必要がある場合があります。おそらく、バグをトレースしているか、jQueryが特定のUIをどのように達成するかに興味があるからです

この投稿は、Android、BlackBerry、およびiPhoneアプリ開発用の有用なチートシート、リファレンスガイド、クイックレシピ、コードスニペットをコンパイルします。 開発者がいないべきではありません! タッチジェスチャーリファレンスガイド(PDF) Desigの貴重なリソース
