jQuery實(shí)現(xiàn)百葉窗焦點(diǎn)圖動(dòng)畫(huà)效果代碼分享(附源碼下載)
來(lái)源:易賢網(wǎng) 閱讀:739 次 日期:2016-07-20 15:26:11
溫馨提示:易賢網(wǎng)小編為您整理了“jQuery實(shí)現(xiàn)百葉窗焦點(diǎn)圖動(dòng)畫(huà)效果代碼分享(附源碼下載)”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了jQuery實(shí)現(xiàn)百葉窗焦點(diǎn)圖動(dòng)畫(huà)效果代碼分享(附源碼下載)的相關(guān)資料,需要的朋友可以參考下

這是一款基于jQuery的百葉窗焦點(diǎn)圖動(dòng)畫(huà),和之前介紹的CSS3百葉窗焦點(diǎn)圖動(dòng)畫(huà)不同的是,它的兼容性更好,實(shí)用性更強(qiáng),因?yàn)樗腔诩僯Query的,基本上所有瀏覽器都能夠支持。焦點(diǎn)圖的圖片切換動(dòng)畫(huà)是百葉窗的動(dòng)畫(huà)方式,但也有幾種不同的百葉窗動(dòng)畫(huà),因此也不會(huì)覺(jué)得單調(diào)。

名單

HTML代碼

<div id="slider">

<img src="images/1.jpg" alt="腳本之家1" title="腳本之家大全" />

<img src="images/2.jpg" alt="腳本之家2" title="腳本之家大全" />

<img src="images/3.jpg" alt="腳本之家3" title="腳本之家大全" />

</div>

CSS代碼

#slider {

position: relative;

width: 600px;

overflow: hidden;

margin: 10px auto 30px auto;

}

#slider li {

position: absolute;

top: 0;

left: 0;

}

.caption {

opacity: 0.8;

background: #000;

height: 33px;

padding: 5px 0 0 0;

color: #fff;

text-align: center;

font: 25px/1 '微軟雅黑';

z-index: 200;

}

.prev-link, .next-link {

display: block;

width: 24px;

height: 24px;

background-repeat: no-repeat;

background-position: left top;

position: absolute;

bottom: 10px;

z-index: 300;

}

.prev-link {

left: 10px;

background-image: url(prev.png );

}

.next-link {

left: 40px;

background-image: url(next.png );

}

.circle {

display: block;

width: 16px;

height: 16px;

background: url(circle-empty.png ) no-repeat left top;

position: absolute;

bottom: 10px;

z-index: 300;

}

.circle-current {

background-image: url(circle-full.png );

}

JavaScript代碼

(function(a) { (function() {

var b = false;

var c = (/xyz/.test(function() {

xyz

})) ? (/\b_super\b/) : (/.*/);

this.Class = function() {};

Class.extend = function(h) {

var g = this.prototype;

b = true;

var f = new this();

b = false;

for (var e in h) {

if (typeof h[e] == "function" && typeof g[e] == "function" && c.test(h[e])) {

f[e] = (function(i, j) {

return function() {

var l = this._super;

this._super = g[i];

var k = j.apply(this, arguments);

this._super = l;

return k

}

})(e, h[e])

} else {

f[e] = h[e]

}

}

function d() {

if (!b && this.init) {

this.init.apply(this, arguments)

}

}

d.prototype = f;

d.constructor = d;

d.extend = arguments.callee;

return d

}

})();

a.fn.lateralSlider = function(b) {

var d = {

displayDuration: 2000,

animateDuration: 1500,

numColumns: 10,

transitions: "fade,slideUp,slideDown,slideLeft,slideRight,slideUpAndDown,slideLeftAndRight,fadeAndSlideUp,fadeAndSlideDown,fadeAndSlideLeft,fadeAndSlideRight,fadeSlideUpAndRight,fadeSlideDownAndLeft",

random: false,

hidePrevAndNextArrows: false,

hideSlideChooser: false,

captionOpacity: 0.8

};

var c = a.extend({},

d, b);

this.each(function() {

var j = a(this);

var t = Class.extend({

$imgs: null,

size: null,

displayImg: null,

nextImg: null,

numDivs: null,

divWidth: null,

baseCSS: null,

$divs: null,

transitions: [],

transition: null,

transitionCount: null,

interval: null,

width: null,

init: function() {

this.$imgs = a("img", j);

this.size = this.$imgs.size();

this.$imgs.hide();

this.nextImg = 0;

this.width = j.width();

this.numDivs = c.numColumns;

this.divWidth = this.width / this.numDivs;

this.baseCSS = {

width: this.divWidth,

position: "absolute",

top: 0,

backgroundRepeat: "no-repeat"

};

this.createDivs();

this.$divs = a("div", j);

this.transitionCount = -1

},

createDivs: function() {

for (var A = 0; A < this.numDivs; A++) {

var B = a("<div></div>");

B.css(this.baseCSS);

B.css("left", this.divWidth * A);

B.appendTo(j)

}

}

});

var y = new t();

var g = Class.extend({

baseDuration: null,

originalOffset: null,

offset: null,

init: function() {

this.baseDuration = c.animateDuration / 8;

this.originalOffset = 7 * c.animateDuration / (8 * y.numDivs);

this.offset = 7 * c.animateDuration / (8 * y.numDivs)

},

duration: function() {

return this.baseDuration + this.offset

},

increment: function() {

this.offset += this.originalOffset

},

reset: function() {

this.offset = this.originalOffset

},

getCSS: function(A) {

return {}

},

eachDiv: function() {

return {}

},

applyTransition: function() {

y.$divs.each(this.eachDiv);

this.reset()

}

});

var v = g.extend({

applyTransition: function() {

var A = this;

y.$divs.each(function() {

var B = A.eachDiv;

if (typeof(A.eachDiv) == "function") {

B = B()

}

a(this).animate(B, A.duration());

A.increment()

});

this.reset()

}

});

var m = v.extend({

getCSSIndex: null,

eachDivIndex: null,

getCSSGroup: null,

eachDivGroup: null,

init: function() {

this._super();

this.getCSSGroup = new Array();

this.eachDivGroup = new Array();

this.getCSSIndex = 0;

this.eachDivIndex = 0

},

getCSS: function(B) {

var A = this.getCSSGroup[this.getCSSIndex];

this.getCSSIndex = (this.getCSSIndex + 1) % this.getCSSGroup.length;

return A(B)

},

addTransition: function(A) {

this.getCSSGroup.push(A.getCSS);

this.eachDivGroup.push(A.eachDiv)

},

applyTransition: function() {

var A = this;

y.$divs.each(function() {

var B = A.eachDivGroup[A.eachDivIndex];

if (typeof(B) == "function") {

B = B()

}

a(this).animate(B, A.duration());

A.eachDivIndex = (A.eachDivIndex + 1) % A.eachDivGroup.length;

A.increment()

});

this.reset()

}

});

var u = v.extend({

getCSS: function(A) {

return {

opacity: 0

}

},

eachDiv: {

opacity: 1

}

});

var f = v.extend({

getCSS: function(A) {

return {

top: y.$imgs.eq(y.nextImg).height()

}

},

eachDiv: {

top: 0

}

});

var h = v.extend({

getCSS: function(A) {

return {

height: 0

}

},

eachDiv: function() {

return {

height: y.$imgs.eq(y.nextImg).height()

}

}

});

var r = v.extend({

getCSS: function(B) {

var A = B.css("left");

A = parseInt(A.substring(0, A.length - 2), 10);

return {

left: A + y.divWidth,

width: 0

}

},

eachDiv: {

left: "-=" + y.divWidth,

width: y.divWidth

}

});

var q = v.extend({

getCSS: function(A) {

return {

width: 0

}

},

eachDiv: {

width: y.divWidth

}

});

var o = m.extend({

addTransitions: function(A, B) {

this.addTransition(A);

this.addTransition(B)

}

});

var w = m.extend({

addTransitions: function(B, A) {

this.addTransition(B);

this.addTransition(A)

}

});

var k = m.extend({

addTransitions: function(A, B) {

this.addTransition(A);

this.addTransition(B)

}

});

var n = m.extend({

addTransitions: function(A, B) {

this.addTransition(A);

this.addTransition(B)

}

});

var p = m.extend({

addTransitions: function(A, B) {

this.addTransition(A);

this.addTransition(B)

}

});

var e = m.extend({

addTransitions: function(A, B) {

this.addTransition(A);

this.addTransition(B)

}

});

var x = m.extend({

addTransitions: function(A, C, B) {

this.addTransition(A);

this.addTransition(C);

this.addTransition(B)

}

});

var s = m.extend({

addTransitions: function(C, A, B) {

this.addTransition(C);

this.addTransition(A);

this.addTransition(B)

}

});

var z = {

fade: new u(),

slideUp: new f(),

slideDown: new h(),

slideLeft: new r(),

slideRight: new q(),

slideUpAndDown: new o(),

slideLeftAndRight: new w(),

fadeAndSlideUp: new k(),

fadeAndSlideDown: new n(),

fadeAndSlideLeft: new p(),

fadeAndSlideRight: new e(),

fadeSlideUpAndRight: new x(),

fadeSlideDownAndLeft: new s()

};

z.slideUpAndDown.addTransitions(z.slideUp, z.slideDown);

z.slideLeftAndRight.addTransitions(z.slideLeft, z.slideRight);

z.fadeAndSlideUp.addTransitions(z.slideUp, z.fade);

z.fadeAndSlideDown.addTransitions(z.fade, z.slideDown);

z.fadeAndSlideLeft.addTransitions(z.fade, z.slideLeft);

z.fadeAndSlideRight.addTransitions(z.slideRight, z.fade);

z.fadeSlideUpAndRight.addTransitions(z.slideUp, z.fade, z.slideRight);

z.fadeSlideDownAndLeft.addTransitions(z.slideDown, z.fade, z.slideLeft);

t.prototype.populateTransitions = function() {

var B = c.transitions.split(/,\s*/g);

for (var A in B) {

this.transitions.push(z[B[A]])

}

};

t.prototype.getTransition = function() {

if (c.random) {

var A = Math.floor(Math.random() * this.transitions.length);

return this.transitions[A]

} else {

this.transitionCount = (this.transitionCount + 1) % this.transitions.length;

return this.transitions[this.transitionCount]

}

};

t.prototype.addDivCSS = function() {

var B = this;

var C = B.$imgs.eq(B.nextImg);

var D = "url(" + C.attr("src") + ")";

var A = C.height();

this.$divs.each(function() {

var E = a(this);

E.css({

backgroundImage: D,

backgroundPosition: "-" + E.css("left") + " 0px",

height: A

});

E.css(B.transition.getCSS(E))

})

};

t.prototype.process = function() {

j.css({

backgroundImage: "url(" + this.$imgs.eq(this.displayImg).attr("src") + ")",

backgroundRepeat: "no-repeat"

});

this.transition = this.getTransition();

this.addDivCSS();

this.transition.applyTransition();

j.animate({

height: this.$imgs.eq(this.nextImg).height()

},

c.animateDuration);

this.advanceShow()

};

t.prototype.updateCurrent = function() {

a('.circle[rel="' + this.displayImg + '"]').removeClass("circle-current");

a('.circle[rel="' + this.nextImg + '"]').addClass("circle-current")

};

t.prototype.advanceShow = function() {

this.updateCurrent();

this.displayImg = this.nextImg;

if (this.nextImg == this.size - 1) {

this.nextImg = 0

} else {

this.nextImg++

}

};

t.prototype.startShow = function() {

this.interval = window.setInterval(a.proxy(this.runner, this), c.displayDuration + c.animateDuration)

};

t.prototype.stopShow = function() {

window.clearInterval(this.interval)

};

t.prototype.goToSlide = function(A) {

if (this.$divs.filter(":animated").size() > 0) {

return

}

this.stopShow();

this.nextImg = A;

this.updateCurrent();

this.runner();

if (this.nextImg == 0) {

this.displayImg = this.size - 1

} else {

this.displayImg = this.nextImg - 1

}

this.startShow()

};

t.prototype.applyLink = function() {

var C = this.$imgs.eq(this.displayImg);

var B = C.parent();

if (B.is("a")) {

B.removeAttr("style")

}

var A = this.$imgs.eq(this.nextImg);

var D = A.parent();

if (D.is("a")) {

D.css({

display: "block",

textDecoration: "none",

border: "0",

width: j.width(),

height: A.height(),

position: "absolute",

top: 0,

left: 0,

zIndex: 100

})

}

};

t.prototype.applyCaption = function() {

var A = this.$imgs.eq(this.nextImg);

var C = A.attr("title");

var D = a(".caption", j);

D.slideUp(function() {

a(this).html(C)

});

if (C != "") {

if (D.size() > 0) {

if (!D.is(":visible")) {

D.html(C)

}

D.slideDown()

} else {

var B = a('<div class="caption"><span>' + C + "</span></div>");

B.css({

opacity: c.captionOpacity,

width: j.width(),

position: "absolute",

top: 0,

left: 0,

display: "none"

});

B.appendTo(j);

B.slideDown()

}

}

};

t.prototype.runner = function() {

this.applyLink();

this.applyCaption();

this.process()

};

t.prototype.begin = function() {

var A = this.$imgs.eq(this.nextImg);

j.css({

backgroundImage: "url(" + A.attr("src") + ")",

height: A.height()

});

this.runner();

this.transitionCount--;

this.startShow()

};

var i = Class.extend({

circleCount: null,

init: function() {

this.circleCount = 0

},

addAll: function() {

this.addCircles();

this.addPrevAndNextLinks();

a("a.circle").click(this.circleClickHandler);

a(".prev-link").click(this.prevLinkHandler);

a(".next-link").click(this.nextLinkHandler);

if (c.hideSlideChooser) {

a("a.circle").hide()

}

if (c.hidePrevAndNextArrows) {

a(".prev-link, .next-link").hide()

}

},

addCircles: function() {

var A = this;

y.$imgs.each(function() {

var B = a('<a href="#" rel="' + A.circleCount + '" class="circle"></a>');

B.css({

right: (y.size - A.circleCount - 1) * 20 + 10

});

B.appendTo(j);

A.circleCount++

})

},

addPrevAndNextLinks: function() {

a('<a href="#" class="prev-link"></a>').appendTo(j);

a('<a href="#" class="next-link"></a>').appendTo(j)

},

circleClickHandler: function(B) {

var A = parseInt(a(this).attr("rel"), 10);

y.goToSlide(A);

B.preventDefault()

},

prevLinkHandler: function(B) {

var A = y.displayImg - 1;

if (A < 0) {

A = y.size - 1

}

y.goToSlide(A);

B.preventDefault()

},

nextLinkHandler: function(B) {

var A = y.displayImg + 1;

if (A >= y.size) {

A = 0

}

y.goToSlide(A);

B.preventDefault()

}

});

var l = new i();

l.addAll();

y.populateTransitions();

y.begin()

});

return this

}

})(jQuery);

當(dāng)然不要忘記在網(wǎng)頁(yè)中引用jQuery的相關(guān)庫(kù)文件。

關(guān)于jQuery實(shí)現(xiàn)百葉窗焦點(diǎn)圖動(dòng)畫(huà)效果代碼分享(附源碼下載)就給大家介紹到這里,希望對(duì)大家有所幫助!

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話(huà):0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
咨詢(xún)QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)