3 608 Скрипты / Slider

Слайдшоу с предпросмотром


Слайдшоу с предварительным просмотром миниатюр изображений. Смена слайдов может происходить, как в ручном, так и в автоматическом режиме.

HTML

Создадим два неупорядоченных списка, один для основного слайдера и один для навигации по миниатюрам.
Список "основного слайдера" будет содержать изображения и заголовки в тегах H2 и H3:

Список для навигации из миниатюр предпросмотра будет содержать абсолютный элемент (первый элемент списка с классом "ei-slider-element" и элементы списка миниатюр, содержащие анкор (ссылку) и изображение)               

CSS

В начале определим стиль для главной оболочки - wrapper. Слайдер будет находиться внутри wrapper, имеющей ширину 100%, чтобы занять всю ширину окна. У самого слайдера, также будет ширина 100%. Но мы установим и максимальную ширину, чтобы изображения в нашем слайдере не стали слишком широкими на больших мониторах.

.ei-slider{
    position: relative;
    width: 100%;
    max-width: 1920px;
    height: 400px;
    margin: 0 auto;
}

В то время, как изображения загружаются мы будем видеть элемент отображающий процесс загрузки, который будет иметь следующий стиль:

.ei-slider-loading{
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0px;
    left: 0px;
    z-index:999;
    background: rgba(0,0,0,0.9);
    color: #fff;
    text-align: center;
    line-height: 400px;
}

Неупорядоченный список займет всё отведенное место и переполнения (выходы за пределы) показываться не будут:

.ei-slider-large{
    height: 100%;
    width: 100%;
    position:relative;
    overflow: hidden;
}

Элементы списка содержащие изображения, будут абсолютно с позиционированы. В зависимости от того, как мы перемещаемся, будем двигать слайды слева или справа

.ei-slider-large li{
    position: absolute;
    top: 0px;
    left: 0px;
    overflow: hidden;
    height: 100%;
    width: 100%;
}

Ширина изображения будет установлена в нашем jаvascript, но мы всё равно определим её, на случай выключенного JS:

.ei-slider-large li img{
    width: 100%;
}

Контейнер заголовка будет расположен в середине элемента списка с отступом справа, чтобы подогнать изображение в нашем примере (а не перекрывать лицо фотографии):

.ei-title{
    position: absolute;
    right: 50%;
    margin-right: 13%;
    top: 30%;
}

Стиль для заголовков следующий:

.ei-title h2, .ei-title h3{
    text-align: right;
}
.ei-title h2{
    font-size: 40px;
    line-height: 50px;
    font-family: 'Playfair Display', serif;
    font-style: italic;
    color: #b5b5b5;
}
.ei-title h3{
    font-size: 70px;
    line-height: 70px;
    font-family: 'Open Sans Condensed', sans-serif;
    text-transform: uppercase;
    color: #000;
}

У списка навигации будет маленькая высота в 13 пикселей. Значение ширины по умолчанию для миниатюр установим при инициализации нашего плагина. От той ширины установим максимальную ширину для неупорядоченного списка, что сделает навигацию эластичной при изменении размеров окна браузера, но и не займет всю ширину:

.ei-slider-thumbs{
    height: 13px;
    margin: 0 auto;
    position: relative;
}

Элементы списка навигации будут относительно с позиционированы:

.ei-slider-thumbs li{
    position: relative;
    float: left;
    height: 100%;
}

Специальный элемент слайдера, который указывает на текущее изображение, будет расположен абсолютно вверху элемента текущей миниатюры:

.ei-slider-thumbs li.ei-slider-element{
    top: 0px;
    left: 0px;
    position: absolute;
    height: 100%;
    z-index: 10;
    text-indent: -9000px;
    background: #000;
    background: rgba(0,0,0,0.9);
}

У элементов навигации ссылка будет иметь белую тень, чтобы немного разделить их и более темную тень под ними. Также добавим плавный переход для изменения цвета фона при наведении:

Изображение миниатюры будет расположено абсолютно с плавным переходом и отражением. Добавлением максимальной ширины у нему позволит быть уверенным в том, что миниатюра будет подогнана под размер элемента списка, когда окно браузера станет меньше, чем ширина неупорядоченного списка:

При наведении у нас будет анимироваться прозрачность и значение отступа снизу, так что будет казаться, что миниатюра выплывает сверху:

.ei-slider-thumbs li:hover img{
    opacity: 1;
    bottom: 13px;
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
}

Наконец, что не менее важно, мы хотим быть уверенными в том, что от определенной ширины, заголовок слайда не будет перекрывать наше изображение. Мы сделаем так, что  заголовок появится у основания изображения  с полупрозрачным белым фоном:

Для случаев, когда jаvascript выключен, мы добавим этот кусочек CSS, для гарантии того, что слайды будут показаны. Навигация с миниатюрами будет скрыта:

.ei-slider{
    height: auto;
}
.ei-slider-thumbs{
    display: none;
}
.ei-slider-large li{
    position: relative;
}

Вот и  всё со стилями, перейдем к jаvascript.

JS

В начале подключаем, как обычно, jQuery, наш плагин (о нём подробнее речь пойдет ниже), плагин easing эффектов и инициализация нашего плагина с настройками:

<script type="text/jаvascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/jаvascript" src="js/jquery.eislideshow.js"></script>
<script type="text/jаvascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/jаvascript">
    $(function() {
        $('#ei-slider').eislideshow({
            easing        : 'easeOutExpo',
            titleeasing    : 'easeOutExpo',
            titlespeed    : 1200
        });
    });
</script>

Так как мы будем делать плагин, то определим сначала его опции:

В функции _init устанавливаем прозрачность заголовка элементов и изображений равной 0. Также предварительно загрузим изображения и после загрузки, установим их размер и положение согласно ширине и высоте слайдера. Затем сконфигурируем навигацию миниатюр, устанавливая ширину неупорядоченного списка и элементов списка.
Также покажем первый слайд и если у нас включен в опция автопоказ, то запускаем авто воспроизведение слайдшоу. Инициализируем события, которые являются событиями для изменения размеров окна и кликов по миниатюрам:   

А тут функции о которых мы только что говорили:

Функция _slideTo отвечает за переходы между слайдами. В зависимости от того, что мы указали в опциях, слайды будут появляться с какой-либо стороны или постепенно проявляться в центре. Также функция позаботится и о заголовках, которые слегка подвинем, установив для них отступы справа. Элемент миниатюры слайдера будем двигать в новую позицию соответствующую миниатюре:
Функция _initEvents пересчитает размеры изображений, когда мы изменим размеры окна браузера и пере позиционирует элемент миниатюры:

Вот и всё.

Скачать 1394Загрузок 413,85 Kb
Демо

Комментарии

  • Facebook
  • Вконтакте

Похожие статьи