В разработку слайд-шоу на JavaScript Разработка веб-сайтов


return this.each(function


Download 90.57 Kb.
bet7/9
Sana07.02.2023
Hajmi90.57 Kb.
#1175608
1   2   3   4   5   6   7   8   9
Bog'liq
Введение в JavaScript

return this.each(function() {
var $element = $( this ),
total = $( options.slides ).length;
//...
$( options.slides, $element ).width( $( window ).width() );
$( options.wrapper, $element ).width( $( window ).width() * total );
//...
});

Берём ширину окна и задаём ширину каждого слайда. Общая ширина внутреннего враппера получается перемножением ширины окна и количества слайдов.





// Слайд-шоу фиксированной ширины


return this.each(function() {
var $element = $( this ),
total = $( options.slides ).length;
//...

$( options.wrapper, $element ).width( $( options.slides ).eq( 0 ).width() * total );
//...
});

Здесь начальная ширина задана шириной каждого слайда. Нужно только задать общую ширину враппера.



Теперь внутренний контейнер достаточно широк. На чистом JS это делается примерно так же:



// Слайд-шоу на всю ширину


Slideshow.prototype = {
init: function() {
this.wrapper = this.el.querySelector( ".slider-wrapper" );
this.slides = this.el.querySelectorAll( ".slide" );
//...
this.total = this.slides.length;

this.setDimensions();
this.actions();
},
setDimensions: function() {
var self = this;
// Viewport's width
var winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var wrapperWidth = winWidth * self.total;
for( var i = 0; i < self.total; ++i ) {
var slide = self.slides[i];
slide.style.width = winWidth + "px";
}
self.wrapper.style.width = wrapperWidth + "px";
},
//...
};


// Слайд-шоу фиксированной ширины


Slideshow.prototype = {
init: function() {
this.wrapper = this.el.querySelector( ".slider-wrapper" );
this.slides = this.el.querySelectorAll( ".slide" );
//...
this.total = this.slides.length;

this.setDimensions();
this.actions();
},
setDimensions: function() {
var self = this;
var slideWidth = self.slides[0].offsetWidth; // Single slide's width
var wrapperWidth = slideWidth * self.total;
self.wrapper.style.width = wrapperWidth + "px";
},
//...


};




Эффекты исчезновения

Эффекты исчезновения (fade) часто используются в слайд-шоу. Текущий слайд исчезает, и появляется следующий. У jQuery есть методы fadeIn() и fadeOut(), которые работают как со свойством opacity, так и с display, поэтому элемент удаляется из страницы по завершению анимации (display:none).

В чистом JS лучше всего работать со свойством opacity и использовать стек позиционирования CSS. Тогда изначально слайд будет видимым (opacity: 1), а другие - спрятаны (opacity:0).

Следующий набор стилей демонстрирует такой способ:



.slider {
width: 100%;
overflow: hidden;
position: relative;
height: 400px;
}


.slider-wrapper {
width: 100%;
height: 100%;
position: relative;
}


.slide {
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
}


.slider-wrapper > .slide:first-child {
opacity: 1;
}

В чистом JS необходимо зарегистрировать переход CSS каждого слайда:





.slide {
float: left;
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
transition: opacity 500ms linear;
}

С jQuery для использования методов fadeIn() и fadeOut() надо менять opacity и display:





.slide {
float: left;
position: absolute;
width: 100%;
height: 100%;
display: none;
}


.slider-wrapper > .slide:first-child {
display: block;
}


В jQuery код следующий:



(function( $ ) {
$.fn.slideshow = function( options ) {

options = $.extend({
wrapper: ".slider-wrapper",
previous: ".slider-previous",
next: ".slider-next",
slides: ".slide",
nav: ".slider-nav",
speed: 500,
easing: "linear"

}, options);

var slideTo = function( slide, element ) {
var $currentSlide = $( options.slides, element ).eq( slide );

$currentSlide.
animate({
opacity: 1
}, options.speed, options.easing ).
siblings( options.slides ).
css( "opacity", 0 );

};

//...
};


})( jQuery );

При анимации opacity нужно также поменять значения этого свойства для остальных слайдов.



В JavaScript это будет:



Slideshow.prototype = {
//...
_slideTo: function( slide ) {
var currentSlide = this.slides[slide];
currentSlide.style.opacity = 1;

for( var i = 0; i < this.slides.length; i++ ) {
var slide = this.slides[i];
if( slide !== currentSlide ) {
slide.style.opacity = 0;
}
}
},
//...
};




Примеры

jQuery: слайд-шоу с эффектом исчезновения
JavaScript: слайд-шоу с эффектом исчезновения



Медийные элементы: видео

Мы можем включать видео в слайд-шоу. Вот пример слайд-шоу с видео от Vimeo:



<
Download 90.57 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling