ホームページ ウェブフロントエンド jsチュートリアル jquery_jqueryに基づく画像カルーセルタブ切り替えコンポーネント

jquery_jqueryに基づく画像カルーセルタブ切り替えコンポーネント

May 16, 2016 pm 05:51 PM
画像カルーセル

現在、スクロール効果となしのみがスライド効果として追加されており、x 方向と y 方向のスライドをサポートします。なしは効果がなく、後で他の効果を追加および展開する必要があります。文章は少し乱暴ですが、紛失しないようにここにメモを残します。
デモアドレス: http://demo.jb51.net/js/2012/sinaapp/

コードをコピーコードは次のとおりです:

/**
* ビッグマック カルーセル
*/
$.fn.loopSlider = function(option) {
var settings = {
//デフォルトの表示順序
initIndex: 1 ,
// タイトル ノードにスタイルを追加します
className: "current",
// カルーセルの方向、デフォルトは x 軸カルーセルです
direct: "x",
// 前へbutton
prevBtn: "",
// 次へボタン
nextBtn: "",
// ページ上下ボタンのスタイルを無効にしました
btnDisable: "disable ",
/ /ボタン押下スタイル
btnTouchClass: "",
// 自動カルーセル
auto: false,
// 自動カルーセル時間間隔
timeFlag: 4000,
// カルーセル効果時間
scrollTime: 350,
// カルーセル効果
effect: "scroll",
// カルーセル要素が 1 つしかない場合に非表示にするかどうか スライディング ボタン
hideBtn: true,
// カルーセルを循環するかどうか
cycle: true,
// カルーセル コンテンツ領域のコンテナ パス
contentContainer: "#imgScroll",
//カルーセル コンテンツ領域のノード
contentChildTag: "li",
// タイトルカルーセル領域のコンテナパス
titleContainer: "#titleScroll",
// タイトルカルーセル領域 Node
titleChildTag: "li",
/ / カルーセル コンテンツ領域の配列
cont: [],
// カルーセル タイトル領域の配列
tabs: [] ,
// 現在のカルーセル番号
current: 0,
// タイマー
ptr: "",
// カルーセル コールバック関数。カルーセルが呼び出されるたびに呼び出されます。パラメーターは次のとおりです。 現在のカルーセルのシリアル番号
callback: function() {
return true;
}
}
if (option) {
$.extend(setting, option);
}
// 現在の呼び出し型の関数を初期化します
setting.currentMethod = function() {
return true;
}
var Boss = $(this)
// 最初の要素でない場合は、最初に回転します
if (setting.initIndex != 1) {
setting.current = settings.initIndex - 1;
}
// 回転ノードのリストを取得します
var childList = Boss.find(setting.contentContainer " " settings.contentChildTag);
// カルーセル タイトル ノード リストを取得します
var titleList = Boss.find(setting.titleContainer " " settings.titleChildTag)
// コンテンツ内の各カルーセル ノードを保存しますarea
setting.cont = childList;
// タイトルのカルーセル ノードを保存します
setting.tabs = titleList;
// 回転する必要があるコンテンツの場合は、直接
if (setting.cont.length == 0) {
return;
}
// コンテンツ領域とタイトル領域のインデックス属性
childList を設定します。
$(this).attr("インデックス", インデックス);
titleList.eq(index).attr("インデックス", インデックス);
// 上下arrows
var nextBtn = Boss.find(setting.nextBtn);
var prevBtn = Boss.find(setting.prevBtn);
// Length
var counts = childList
// カルーセルコンテナの親ノード
var childParent = childList.parent();
if (childList.length < settings.initIndex) {
setting.current = 0;
}
//初期化
doInit();
if (childList.length return; /**
* ハンドル切り替えは効果なし
*/
var doScrollNone = {
process: function(i) {
childList.eq(i).css("display", "block") .siblings(). css("display", "none");
titleList.eq(i).addClass(setting.className).siblings().removeClass(setting.className);
// 現在表示されているノード
setting.current = i;
// コールバック関数を呼び出します
setting.callback(setting.current);
init: function() {
settings.currentMethod = doScrollNone ;
bindEvent();
// 自動カルーセル
if (setting.auto) {
processAuto();
// 初期化中にコールバック関数も呼び出します>setting.callback(setting.current);
}
};
var doScrollXY = {
c_width: 0,
c_height: 0,
init : function() {
//カルーセル要素の幅
this.c_width = childList.width();
//カルーセル要素の高さ
this.c_height = childList.height() ; // x 軸方向カルーセル
if (setting.direct == "x") {
childParent.width(this.c_width * (childList.length > 1 ? counts 1 : counts)
; >childParent.css("left", -this.c_width * (setting.current));
} else {
childParent.height(this.c_height * (childList.length > 1 ? counts 1 : counts) ));
childParent.css("top", -this.c_height * (setting.current));
}
titleList.eq(setting.className).siblings ().removeClass(setting.className);
setting.currentMethod = doScrollXY;
// バインディング イベント
bindEvent(); // コールバック関数は初期化中にも呼び出されます。 .callback(setting.current);
//自動カルーセル
if (setting.auto) {
processAuto();
},
process : function(i, needFast) {
setting.current = i;
//alert(i)
if (setting.direct == "x") {
//エフェクトアニメーションを実行
childParent.animate ({
left: "-" (this.c_width * i)
},
(needFast ? 50 : settings.scrollTime),
function() {
if (setting.current) == カウント) {
doScrollXY.processMove("left", $(this))
}
if (setting.auto) {
}
});
} else {
childParent.animate({
top: "-" (this.c_height * i)
},
(needFast ? 50 : settings.scrollTime),
function() {
if (setting.current == counts) {
doScrollXY.processMove("top", $(this)) ;
}
if (setting.auto) {
processAuto();
}
});
}
if (i == counts) {
i = 0;
}
// 调用回调関数
setting.callback(setting.current);
titleList.eq(i).addClass(setting.className).siblings().removeClass(setting.className);
},
processMove: function(direct, node) {
var childs = node.children();
for (var i = 1; i var RemoveNode = childs.eq(i).remove();
node.append(removeNode);
}
var first = childs.eq(0).remove();
node.append(first);
node.css(direct, "0");
}
};
switch (setting.effect) {
case "none":
doScrollNone.init();
休憩;
ケース "スクロール":
doScrollXY.init();
休憩;
}
// いくつかの初期化操作
function doInit() {
childParent.css("position", "relative");
if (!setting.cycle) {
prevBtn.removeClass(setting.btnDisable);
nextBtn.removeClass(setting.btnDisable);
if (setting.current == 0) {
prevBtn.addClass(setting.btnDisable);
}
if (setting.current == counts - 1) {
nextBtn.addClass(setting.btnDisable);
}
}
// ただ一つの要素があり、必要な隐藏按钮
if (childList.length prevBtn.hide();
nextBtn.hide();
}
// 克第一元素から最後まで
if (childList.length > 1) {
var cloneNode = childList.eq(0).clone();
cloneNode.attr("インデックス", カウント);
cloneNode.appendTo(childParent);
}
}
/**
* バインドカルーセルイベント
*/
function bindingEvent() {
nextBtn && nextBtn.bind("click",
function(event) {
// 如果按钮已被禁止
if ($(this).hasClass(setting.btnDisable)) {
return;
}
var cur = settings.current; cur >= 0) {
prevBtn.removeClass(setting.btnDisable);
}
if (cur == counts - 2 && !setting.cycle) {
$(this).addClass (setting.btnDisable);
}
if (cur == counts) {
setting.current = 1;
} else if (cur == counts - 1) {
//轮播到最後一
setting.current = counts;
} else {
setting.current = cur 1;
}
if (setting.ptr) {
clearInterval(setting) .ptr);
setting.ptr = null;
$(this).addClass(setting.btnTouchClass);
setting.currentMethod.process(setting.current); );
prevBtn && prevBtn.bind("click",
function() {
if ($(this).hasClass(setting.btnDisable)) {
return;
}
var cur = settings.current;
if (cur nextBtn.removeClass(setting.btnDisable);
}
if (cur == 1 && !setting.サイクル) {
$(this).addClass(setting.btnDisable);
setting.current = cur == 0 ? counts - 1 : cur - 1; ) {
clearInterval(setting.ptr);
setting.ptr = null;
$(this).addClass(setting.btnTouchClass);
var fast = false; >if (cur == 0) {
fast = true
}
setting.currentMethod.process(setting.current, fast);
titleParent && titleParent.bind("click",
function(e) {
var element = $(e.target);
// 轮播节点
while (element[ 0].tagName != titleList[0].tagName) {
element = element.parent();
}
if (setting.ptr) {
clearInterval(setting.ptr); 🎜>setting.ptr = null;
}
varindex = parseInt(element.attr("index"), 10);
if (index != 0) {
prevBtn.removeClass( settings.btnDisable);
} else if (!setting.cycle) {
prevBtn.addClass(setting.btnDisable);
if (index != counts - 1) {
nextBtn.removeClass(setting.btnDisable);
} else if (!setting.cycle) {
nextBtn.addClass(setting.btnDisable);
setting.currentMethod.process(index);
});
childParent[0].ontouchstart = handleTouchStart;
// 触摸画面イベント
function handleTouchStart(event) {
var element = $(event.target);
// 到達点
while (element[0].tagName != childList[0].tagName) {
element = element.parent();
}
if (event.targetTouches.length == 0) {
return;
}
var touch =event.targetTouches[0];
var startX = touch.pageX;
var startY = touch.pageY;
var moveDirect = "";
var currentPosition = settings.direct == "x" ? childParent.css("left") : childParent.css("top");
if (setting.ptr) {
clearInterval(setting.ptr);
setting.ptr = null;
}
// 指スライドイベント
childParent[0].ontouchmove = handleTouchMove;
function handleTouchMove(moveEvent) {
var movetouch = moveEvent.targetTouches[0]; == 'x') {
var moveX = movetouch.pageX;
var x = moveX - startX;
// ここでの目的は、画像を左右にスライドさせるときにブラウザのデフォルト イベントを防ぐことです。ただし、画像が上下にスライドしている場合は、通常、ブラウザのデフォルト イベントを直接防ぐことはできません。ページが停止すると、ユーザーが上下にスライドするようになります。ここでの設定では、Y 軸方向よりも X 軸方向に少なくとも 10 ピクセル多くスライドします。これにより、上記の状況が発生するのを効果的に回避できます
if (Math.abs(x) - Math.abs (y) > 10) {
// デフォルトのイベントを阻止します
moveEvent.preventDefault();
childParent.css("left", parseFloat(currentPosition) x);
moveDirect = x > 0 ? "sub": "add";
}
} else {
/Y 軸方向にスクロール
moveEvent.preventDefault() ;
var moveY = touch.pageY;
childParent.css("top", parseFloat(currentPosition) ) y);
moveDirect = y > 0 ? " sub": "add";
childParent[0].ontouchend = handleTouchEnd;画面
function handleTouchEnd() {
//指の移動方向に応じて、次に表示するノード番号を決定
var fast = false
if (moveDirect == "add; ") {
if (setting.current == counts) {
setting.current = 1;
} else {
setting.current = settings.current 1;
}
} else {
if (setting.current == 0) {
setting.current = counts - 1;
fast = true;
} else {
setting.current = settings.current - 1;
}
}
// 対応する処理関数を呼び出します
setting.currentMethod.process(setting.current, fast);
childParent[0].ontouchend = null; 🎜>childParent[0].ontouchmove = null;
}
}
}
/**
* 自動カルーセル
*/
function processAuto() {
if (setting.ptr) ) {
clearInterval(setting.ptr);
setting.ptr = null ;
}
//カルーセル タイマーを設定します
setting.ptr = setInterval(function() {
if (setting.current == counts) {
setting.current = 1;
} else if (setting.current == counts - 1) {
// 最後のカルーセル
setting .current = カウント;
} else {
setting.current = 設定 .current 1;
var インデックス = settings.current;
if (index != 0) >prevBtn.removeClass(setting.btnDisable);
} else if (!setting .cycle) {
prevBtn.addClass(setting.btnDisable);
if (index != counts - 1) ) {
nextBtn.removeClass(setting.btnDisable);
} else if (!setting.cycle) {
nextBtn.addClass(setting.btnDisable);
setting.currentMethod. process(setting.current);
},
setting.timeFlag) ;
}
// return 関数を呼び出して、必要な画像のシリアル番号を指定できます。これは通常、小さな画像をクリックしてから大きな画像を表示する必要がある場合に使用されます。その場合は、小さな画像をクリックしたときにカルーセル イベントをバインドするだけで済みます。この関数を呼び出して、対応するシリアル番号を渡します。
if (index index = 0; else if (index >=) counts) {
index = counts - 1;
setting.currentMethod.process(index);

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

CSS を使用してレスポンシブ画像の自動カルーセル効果を実装するためのチュートリアル CSS を使用してレスポンシブ画像の自動カルーセル効果を実装するためのチュートリアル Nov 21, 2023 am 08:37 AM

モバイル デバイスの普及に伴い、Web デザインでは、優れたユーザー エクスペリエンスを実現するために、デバイスの解像度やさまざまな端末の画面サイズなどの要素を考慮する必要があります。 Web サイトのレスポンシブ デザインを実装する場合、画像カルーセル効果を使用して限られた視覚ウィンドウに複数の画像のコンテンツを表示することが必要になることがよくありますが、同時に Web サイトの視覚効果も高めることができます。この記事では、CSS を使用してレスポンシブ画像の自動カルーセル効果を実現する方法を紹介し、コード例と分析を示します。実装のアイデア レスポンシブ画像カルーセルの実装は、CSS フレックス レイアウトを通じて実装できます。存在する

PHP を使用して画像カルーセルとスライドショー機能を実装する方法 PHP を使用して画像カルーセルとスライドショー機能を実装する方法 Sep 05, 2023 am 09:57 AM

PHP を使用して画像カルーセルおよびスライドショー機能を実装する方法 最新の Web デザインでは、画像カルーセルおよびスライドショー機能が非常に一般的になっています。これらの機能は、Web ページにダイナミクスを加えてアピールし、ユーザー エクスペリエンスを向上させることができます。この記事では、読者がこのテクノロジーを習得できるように、PHP を使用して画像カルーセルとスライドショー機能を実装する方法を紹介します。 HTML でのインフラストラクチャの作成 まず、HTML ファイルでインフラストラクチャを作成します。画像カルーセルにコンテナといくつかの画像要素があるとします。 HTMLコードは次のとおりです

JavaScript で画像カルーセル切り替え効果を実装し、フェードインおよびフェードアウト アニメーションを追加するにはどうすればよいですか? JavaScript で画像カルーセル切り替え効果を実装し、フェードインおよびフェードアウト アニメーションを追加するにはどうすればよいですか? Oct 18, 2023 pm 12:12 PM

JavaScript で画像カルーセル切り替え効果を実装し、フェードインおよびフェードアウト アニメーションを追加するにはどうすればよいですか?画像カルーセルは、Web デザインにおける一般的な効果の 1 つで、画像を切り替えて異なるコンテンツを表示することで、ユーザーに優れた視覚体験を提供します。この記事では、JavaScript を使用して画像のカルーセル切り替え効果を実現し、フェードインおよびフェードアウトのアニメーション効果を追加する方法を紹介します。以下に具体的なコード例を示します。まず、HTML ページにカルーセルを含むコンテナを作成し、追加する必要があります。

PHP を使用して単純な画像カルーセル関数を開発する方法 PHP を使用して単純な画像カルーセル関数を開発する方法 Sep 25, 2023 am 11:21 AM

PHP を使用して単純な画像カルーセル関数を開発する方法 画像カルーセル関数は Web デザインで非常に一般的であり、より優れた視覚効果をユーザーに提供し、ユーザー エクスペリエンスを向上させることができます。この記事では、PHP を使用して簡単な画像カルーセル関数を開発する方法と具体的なコード例を紹介します。まず、いくつかの画像リソースをカルーセル画像として準備する必要があります。これらの画像をフォルダーに配置し、「slider」という名前を付けます。フォルダーのパスが正しいことを確認してください。次に、これらのグラフを取得するための PHP スクリプトを記述する必要があります。

HTML、CSS、jQuery を使用して動的な画像カルーセルを作成する方法 HTML、CSS、jQuery を使用して動的な画像カルーセルを作成する方法 Oct 25, 2023 am 10:09 AM

HTML、CSS、jQuery を使用して動的な画像カルーセルを作成する方法 Web サイトのデザインや開発において、画像カルーセルは複数の画像や広告バナーを表示するために頻繁に使用される機能です。 HTML、CSS、jQuery を組み合わせることで、動的な画像カルーセル効果を実現し、Web サイトに活気と魅力を加えることができます。この記事では、HTML、CSS、jQuery を使用して簡単な動的画像カルーセルを作成する方法と、具体的なコード例を紹介します。ステップ 1: HTML ジャンクションを設定する

WordPressプラグインによる画像カルーセル機能の実装方法 WordPressプラグインによる画像カルーセル機能の実装方法 Sep 06, 2023 pm 12:36 PM

WordPressプラグインによる画像カルーセル機能の実装方法 今日のWebサイトデザインにおいて、画像カルーセル機能は一般的な要件となっています。ウェブサイトをより魅力的にし、複数の写真を表示してより良い宣伝効果を実現できます。 WordPressではプラグインを導入することで画像カルーセル機能を実現することができますが、この記事では一般的なプラグインの紹介とコードサンプルを参考にさせていただきます。 1. プラグインの紹介 WordPress プラグイン ライブラリには、選択できる画像カルーセル プラグインが数多くあります。

vue と Element-plus を使用して画像カルーセルとスライドショーを実装する方法 vue と Element-plus を使用して画像カルーセルとスライドショーを実装する方法 Jul 18, 2023 am 10:32 AM

Vue と ElementPlus を使用して画像カルーセルとスライドショーを実装する方法 Web デザインでは、画像カルーセルとスライドショーは一般的な機能要件です。これらの機能は、Vue および ElementPlus フレームワークを使用して簡単に実装できます。この記事では、Vue と ElementPlus を使用して、シンプルで美しい画像カルーセルとスライドショー コンポーネントを作成する方法を紹介します。まず、Vue と ElementPlus をインストールする必要があります。コマンドラインで次のコマンドを実行します。

JavaScriptで画像カルーセル機能を実装するにはどうすればよいですか? JavaScriptで画像カルーセル機能を実装するにはどうすればよいですか? Oct 18, 2023 am 11:27 AM

JavaScriptで画像カルーセル機能を実装するにはどうすればよいですか?画像カルーセルは、Web デザインでよく使用される機能の 1 つで、複数の画像を表示し、一定時間間隔で自動的に切り替わり、ユーザーの視覚体験を向上させることができます。 JavaScriptでの画像カルーセル機能の実装はそれほど複雑ではありませんので、本記事では具体的なコード例を交えて実装方法を説明します。まず、カルーセルを制御するための画像とボタンを表示するコンテナを HTML で作成する必要があります。基本的なカルーセル コンテナは、次のコードを使用して作成できます: &lt

See all articles