|
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