|
42 | 42 | } |
43 | 43 | }, |
44 | 44 | visibleSlides: 1, // how many slides to fit within visible area (0: calculate based on initial width) |
45 | | - $syncedCarousels: null // jQuery collection of carousel elements to sync with |
| 45 | + $syncedCarousels: null, // jQuery collection of carousel elements to sync with |
| 46 | + resetInitialStylesOnDestroy: false // you get the idea |
46 | 47 | }, |
47 | 48 |
|
48 | 49 | utils = { |
|
185 | 186 | this.settings = $.extend(true, {}, defaults, this.settings); |
186 | 187 |
|
187 | 188 | // Save initial styles to data attribute |
188 | | - sliderStyles = this._getStyles($dom.slider); |
| 189 | + if (this.settings.resetInitialStylesOnDestroy) { |
| 190 | + sliderStyles = this._getStyles($dom.slider); |
189 | 191 |
|
190 | | - $dom.slider.data(namespace + '-css', sliderStyles); |
191 | | - $dom.slides.each(function(){ |
192 | | - var $this = $(this), |
193 | | - styles = self._getStyles($this); |
| 192 | + $dom.slider.data(namespace + '-css', sliderStyles); |
194 | 193 |
|
195 | | - $this.data(namespace + '-css', styles); |
196 | | - }); |
| 194 | + $dom.slides.each(function(){ |
| 195 | + var $this = $(this), |
| 196 | + styles = self._getStyles($this); |
| 197 | + |
| 198 | + $this.data(namespace + '-css', styles); |
| 199 | + }); |
| 200 | + } |
197 | 201 |
|
198 | 202 | // Wrap slider with containers |
199 | 203 | $dom.container.insertBefore($dom.slider); |
|
287 | 291 | resize: function(){ |
288 | 292 | var containerWidth = this.$dom.frame.width(), |
289 | 293 | containerHeight, |
290 | | - slidesWidth = this.settings.behavior.horizontal ? containerWidth / this.props.visible : containerWidth, |
| 294 | + slidesWidth = this.settings.behavior.horizontal ? Math.floor(containerWidth / this.props.visible) : containerWidth, |
291 | 295 | slidesHeight, |
292 | 296 | sliderWidth = this.settings.behavior.horizontal ? this.props.total * slidesWidth : slidesWidth; |
293 | 297 |
|
294 | 298 | // Set new dimensions of items and slider |
295 | | - this.$dom.slides.width(slidesWidth); |
| 299 | + this.$dom.slides.outerWidth(slidesWidth); |
296 | 300 | this.$dom.slider.width(sliderWidth).height('auto'); |
297 | 301 |
|
298 | 302 | if (this.settings.behavior.fixedHeight) { |
|
526 | 530 |
|
527 | 531 | destroy: function(){ |
528 | 532 | var $dom = this.$dom, |
529 | | - sliderStyles = $dom.slider.data(namespace + '-css'); |
| 533 | + sliderStyles; |
530 | 534 |
|
531 | 535 | $dom.slider |
532 | 536 | .removeClass(namespace + '-slider') |
533 | 537 | .removeData(namespace) |
534 | | - .removeData(namespace + '-css') |
535 | | - .insertAfter($dom.container) |
536 | | - .css(sliderStyles); |
| 538 | + .insertAfter($dom.container); |
537 | 539 |
|
538 | 540 | $dom.slides |
539 | 541 | .removeClass(namespace + '-slide') |
540 | | - .removeData(namespace + '-index') |
541 | | - .each(function(){ |
| 542 | + .removeData(namespace + '-index'); |
| 543 | + |
| 544 | + if (this.settings.resetInitialStylesOnDestroy) { |
| 545 | + sliderStyles = $dom.slider.data(namespace + '-css'); |
| 546 | + |
| 547 | + $dom.slider |
| 548 | + .css(sliderStyles) |
| 549 | + .removeData(namespace + '-css'); |
| 550 | + |
| 551 | + $dom.slides.each(function(){ |
542 | 552 | var $this = $(this), |
543 | 553 | styles = $this.data(namespace + '-css'); |
544 | 554 |
|
545 | | - $this.css(styles); |
546 | | - }) |
547 | | - .removeData(namespace + '-css'); |
| 555 | + $this |
| 556 | + .css(styles) |
| 557 | + .removeData(namespace + '-css'); |
| 558 | + }); |
| 559 | + } else { |
| 560 | + $dom.slider.removeAttr('style'); |
| 561 | + $dom.slides.removeAttr('style'); |
| 562 | + } |
548 | 563 |
|
549 | 564 | $dom.container.remove(); |
550 | 565 |
|
|
674 | 689 | } |
675 | 690 |
|
676 | 691 | $slides.each(function(){ |
677 | | - var slideHeight = $(this).css('min-height', 0).height(); |
| 692 | + var slideHeight = $(this).css('min-height', 0).outerHeight(); |
678 | 693 |
|
679 | 694 | if (slideHeight > height) { |
680 | 695 | height = slideHeight; |
|
735 | 750 |
|
736 | 751 | // Return slide position |
737 | 752 | _getTargetPosition: function(index){ |
738 | | - var slidesSize = this.settings.behavior.horizontal ? this.$dom.slides.width() : this.$dom.slides.height(), |
| 753 | + var slidesSize = this.settings.behavior.horizontal ? this.$dom.slides.outerWidth() : this.$dom.slides.outerHeight(), |
739 | 754 | prop = this.settings.behavior.horizontal ? 'left' : 'top', |
740 | 755 | css = {}; |
741 | 756 |
|
|
785 | 800 | containerSize = this.settings.behavior.horizontal ? this.$dom.frame.width() : this.$dom.frame.height(); |
786 | 801 |
|
787 | 802 | this.$dom.slides.each(function(){ |
788 | | - var size = self.settings.behavior.horizontal ? $(this).width() : $(this).height(); |
| 803 | + var size = self.settings.behavior.horizontal ? $(this).outerWidth() : $(this).outerHeight(); |
789 | 804 |
|
790 | 805 | if (size > minSize) { |
791 | 806 | minSize = size; |
|
803 | 818 |
|
804 | 819 | if ($slides.length > 0) { |
805 | 820 | var axis = this.settings.behavior.horizontal ? 'left' : 'top', |
806 | | - slideDimension = this.settings.behavior.horizontal ? this.$dom.slides.width() : this.$dom.slides.height(), |
| 821 | + slideDimension = this.settings.behavior.horizontal ? this.$dom.slides.outerWidth() : this.$dom.slides.outerHeight(), |
807 | 822 | currentPosition = this.$dom.slider.position(), |
808 | 823 | newPosition = {}; |
809 | 824 |
|
|
921 | 936 |
|
922 | 937 | // Check if either swipe distance or speed was sufficient |
923 | 938 | if (Math.abs(distance.x) > thresholds.distance || speed > thresholds.speed) { |
924 | | - var refDimension = self.settings.behavior.horizontal ? self.$dom.slides.width() : self.$dom.slides.height(), |
| 939 | + var refDimension = self.settings.behavior.horizontal ? self.$dom.slides.outerWidth() : self.$dom.slides.outerHeight(), |
925 | 940 | swipeDir = (distance.x > 0) ? -1 : 1, |
926 | 941 | slidesSwiped = Math.abs(Math.round(distance.x / refDimension)); |
927 | 942 |
|
|
1024 | 1039 | this.$dom.frame.animate({ |
1025 | 1040 | height: height |
1026 | 1041 | }, this.settings.animation.duration); |
| 1042 | + |
| 1043 | + this.$dom.slides.css('min-height', height); |
1027 | 1044 | } |
1028 | 1045 | }; |
1029 | 1046 |
|
|
0 commit comments