jQuery炫酷全屏3D焦點圖動畫
本文由碼農網 – 小峰原創,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
這又是一款很不錯的jQuery焦點圖動畫,它的特點是整個焦點圖基本是全屏顯示的,非常大氣,而且圖片的傾斜也給整個焦點圖3D立體的視覺效果,而且焦點圖的圖片切換非常流暢,相當實用。
HTML程式碼:
<div class="wrapper"> </div> <div id="pxs_container" class="pxs_container"> <div class="pxs_bg"> <div class="pxs_bg1"></div> <div class="pxs_bg2"></div> <div class="pxs_bg3"></div> </div> <div class="pxs_loading">Loading images...</div> <div class="pxs_slider_wrapper"> <ul class="pxs_slider"> <li><img src="images/1.jpg" alt="First Image" /></li> <li><img src="images/2.jpg" alt="Second Image" /></li> <li><img src="images/3.jpg" alt="Third Image" /></li> <li><img src="images/4.jpg" alt="Forth Image" /></li> <li><img src="images/5.jpg" alt="Fifth Image" /></li> <li><img src="images/6.jpg" alt="Sixth Image" /></li> </ul> <div class="pxs_navigation"> <span class="pxs_next"></span> <span class="pxs_prev"></span> </div> <ul class="pxs_thumbnails"> <li><img src="images/thumbs/1.jpg" alt="First Image" /></li> <li><img src="images/thumbs/2.jpg" alt="Second Image" /></li> <li><img src="images/thumbs/3.jpg" alt="Third Image" /></li> <li><img src="images/thumbs/4.jpg" alt="Forth Image" /></li> <li><img src="images/thumbs/5.jpg" alt="Fifth Image" /></li> <li><img src="images/thumbs/6.jpg" alt="Sixth Image" /></li> </ul> </div> </div>
JavaScript程式碼
(function($) { $.fn.parallaxSlider = function(options) { var opts = $.extend({}, $.fn.parallaxSlider.defaults, options); return this.each(function() { var $pxs_container = $(this), o = $.meta ? $.extend({}, opts, $pxs_container.data()) : opts; //the main slider var $pxs_slider = $('.pxs_slider',$pxs_container), //the elements in the slider $elems = $pxs_slider.children(), //total number of elements total_elems = $elems.length, //the navigation buttons $pxs_next = $('.pxs_next',$pxs_container), $pxs_prev = $('.pxs_prev',$pxs_container), //the bg images $pxs_bg1 = $('.pxs_bg1',$pxs_container), $pxs_bg2 = $('.pxs_bg2',$pxs_container), $pxs_bg3 = $('.pxs_bg3',$pxs_container), //current image current = 0, //the thumbs container $pxs_thumbnails = $('.pxs_thumbnails',$pxs_container), //the thumbs $thumbs = $pxs_thumbnails.children(), //the interval for the autoplay mode slideshow, //the loading image $pxs_loading = $('.pxs_loading',$pxs_container), $pxs_slider_wrapper = $('.pxs_slider_wrapper',$pxs_container); //first preload all the images var loaded = 0, $images = $pxs_slider_wrapper.find('img'); $images.each(function(){ var $img = $(this); $('<img/>').load(function(){ ++loaded; if(loaded == total_elems*2){ $pxs_loading.hide(); $pxs_slider_wrapper.show(); //one images width (assuming all images have the same sizes) var one_image_w = $pxs_slider.find('img:first').width(); /* need to set width of the slider, of each one of its elements, and of the navigation buttons */ setWidths($pxs_slider, $elems, total_elems, $pxs_bg1, $pxs_bg2, $pxs_bg3, one_image_w, $pxs_next, $pxs_prev); /* set the width of the thumbs and spread them evenly */ $pxs_thumbnails.css({ 'width' : one_image_w + 'px', 'margin-left' : -one_image_w/2 + 'px' }); var spaces = one_image_w/(total_elems+1); $thumbs.each(function(i){ var $this = $(this); var left = spaces*(i+1) - $this.width()/2; $this.css('left',left+'px'); if(o.thumbRotation){ var angle = Math.floor(Math.random()*41)-20; $this.css({ '-moz-transform' : 'rotate('+ angle +'deg)', '-webkit-transform' : 'rotate('+ angle +'deg)', 'transform' : 'rotate('+ angle +'deg)' }); } //hovering the thumbs animates them up and down $this.bind('mouseenter',function(){ $(this).stop().animate({top:'-10px'},100); }).bind('mouseleave',function(){ $(this).stop().animate({top:'0px'},100); }); }); //make the first thumb be selected highlight($thumbs.eq(0)); //slide when clicking the navigation buttons $pxs_next.bind('click',function(){ ++current; if(current >= total_elems) if(o.circular) current = 0; else{ --current; return false; } highlight($thumbs.eq(current)); slide(current, $pxs_slider, $pxs_bg3, $pxs_bg2, $pxs_bg1, o.speed, o.easing, o.easingBg); }); $pxs_prev.bind('click',function(){ --current; if(current < 0) if(o.circular) current = total_elems - 1; else{ ++current; return false; } highlight($thumbs.eq(current)); slide(current, $pxs_slider, $pxs_bg3, $pxs_bg2, $pxs_bg1, o.speed, o.easing, o.easingBg); }); /* clicking a thumb will slide to the respective image */ $thumbs.bind('click',function(){ var $thumb = $(this); highlight($thumb); //if autoplay interrupt when user clicks if(o.auto) clearInterval(slideshow); current = $thumb.index(); slide(current, $pxs_slider, $pxs_bg3, $pxs_bg2, $pxs_bg1, o.speed, o.easing, o.easingBg); }); /* activate the autoplay mode if that option was specified */ if(o.auto != 0){ o.circular = true; slideshow = setInterval(function(){ $pxs_next.trigger('click'); },o.auto); } /* when resizing the window, we need to recalculate the widths of the slider elements, based on the new windows width. we need to slide again to the current one, since the left of the slider is no longer correct */ $(window).resize(function(){ w_w = $(window).width(); setWidths($pxs_slider,$elems,total_elems,$pxs_bg1,$pxs_bg2,$pxs_bg3,one_image_w,$pxs_next,$pxs_prev); slide(current, $pxs_slider, $pxs_bg3, $pxs_bg2, $pxs_bg1, 1, o.easing, o.easingBg); }); } }).error(function(){ alert('here') }).attr('src',$img.attr('src')); }); }); }; //the current windows width var w_w = $(window).width(); var slide = function(current, $pxs_slider, $pxs_bg3, $pxs_bg2, $pxs_bg1, speed, easing, easingBg){ var slide_to = parseInt(-w_w * current); $pxs_slider.stop().animate({ left : slide_to + 'px' },speed, easing); $pxs_bg3.stop().animate({ left : slide_to/2 + 'px' },speed, easingBg); $pxs_bg2.stop().animate({ left : slide_to/4 + 'px' },speed, easingBg); $pxs_bg1.stop().animate({ left : slide_to/8 + 'px' },speed, easingBg); } var highlight = function($elem){ $elem.siblings().removeClass('selected'); $elem.addClass('selected'); } var setWidths = function($pxs_slider, $elems, total_elems, $pxs_bg1, $pxs_bg2, $pxs_bg3, one_image_w, $pxs_next, $pxs_prev){ /* the width of the slider is the windows width times the total number of elements in the slider */ var pxs_slider_w = w_w * total_elems; $pxs_slider.width(pxs_slider_w + 'px'); //each element will have a width = windows width $elems.width(w_w + 'px'); /* we also set the width of each bg image div. The value is the same calculated for the pxs_slider */ $pxs_bg1.width(pxs_slider_w + 'px'); $pxs_bg2.width(pxs_slider_w + 'px'); $pxs_bg3.width(pxs_slider_w + 'px'); /* both the right and left of the navigation next and previous buttons will be: windowWidth/2 - imgWidth/2 + some margin (not to touch the image borders) */ var position_nav = w_w/2 - one_image_w/2 + 3; $pxs_next.css('right', position_nav + 'px'); $pxs_prev.css('left', position_nav + 'px'); } $.fn.parallaxSlider.defaults = { auto : 0, //how many seconds to periodically slide the content. //If set to 0 then autoplay is turned off. speed : 1000,//speed of each slide animation easing : 'jswing',//easing effect for the slide animation easingBg : 'jswing',//easing effect for the background animation circular : true,//circular slider thumbRotation : true//the thumbs will be randomly rotated }; //easeInOutExpo,easeInBack })(jQuery);
呼叫外掛的JavaScript程式碼
$(function() { var $pxs_container = $('#pxs_container'); $pxs_container.parallaxSlider(); });
以上就是jQuery炫酷全屏3D焦點圖動畫,希望可以在你的Web專案中派上用場。
本文連結:http://www.codeceo.com/article/jquery-3d-fullscreen-silder.html
本文作者:碼農網 – 小峰
[ 原創作品,轉載必須在正文中標註並保留原文連結和作者等資訊。]
相關文章
- 8 款超絢麗的 jQuery 焦點圖動畫jQuery動畫
- 10個非常炫酷的jQuery相簿動畫賞析jQuery動畫
- 14款華麗的最新jQuery焦點圖動畫外掛jQuery動畫
- 帶水平滑桿的jQuery焦點圖動畫外掛jQuery動畫
- 超實用的jQuery百葉窗焦點圖動畫jQuery動畫
- 7個炫酷的jQuery動畫外掛及原始碼jQuery動畫原始碼
- HTML5實現的震撼3D焦點圖動畫HTML3D動畫
- SVG動畫應用-酷炫的圖片展示效果SVG動畫
- jquery焦點圖效果視訊jQuery
- CSS 炫酷文字過渡動畫CSS動畫
- jquery實現在滑鼠點選處的炫酷效果jQuery
- 3D酷炫立體圖現已加入pyecharts豪華晚餐3DEcharts
- 2.24 炫酷支配點對
- 使用動畫曲線編輯器打造炫酷的3D視覺化ACE動畫3D視覺化
- 炫酷實用 7款jQuery/HTML5圖片應用jQueryHTML
- Flutter 實現酷炫的3D效果Flutter3D
- jQuery|focus焦點家族jQuery
- android 自定義酷炫進度條動畫Android動畫
- Android——Activity切換炫酷動畫實現Android動畫
- HTML5自定義元素播放焦點圖動畫HTML動畫
- jQuery文字框獲取焦點和失去焦點jQuery
- 9款jQuery帶縮圖焦點圖外掛賞析jQuery
- 高階UI特效仿直播點贊效果—一個優美炫酷的點贊動畫UI特效動畫
- 使用BindingX開發客戶端炫酷動畫客戶端動畫
- 寫一個酷炫的iOS進度條動畫iOS動畫
- 7款炫酷的HTML5 Canvas動畫特效HTMLCanvas動畫特效
- C# Winform實現炫酷的透明動畫介面C#ORM動畫
- 炫酷實用的jQuery外掛 涵蓋選單、按鈕、圖片jQuery
- three.js實現炫酷的3d影院JS3D
- 給你的網站新增炫酷的動畫註釋網站動畫
- 如何在網頁中做出炫酷的動畫(使用Spine)網頁動畫
- CSS動畫篇之炫酷時鐘之時鐘牆CSS動畫
- 高仿京東到家APP引導頁炫酷動畫效果APP動畫
- 8個最新炫酷的HTML5動畫應用HTML動畫
- 非常漂亮的CSS3百葉窗焦點圖動畫CSSS3動畫
- 炫酷的jQuery手風琴圖片和選單外掛及原始碼jQuery原始碼
- PHP建立一個炫酷的圖表PHP
- jQuery頂部帶有選項卡的焦點圖效果jQuery