Если Вам нужен качественный хостинг и Вы непротив сэкономить 10% на его покупке, то Вы можете воспользоваться моим специальным предложением по скидке на хостинг от компании Ютекс.

*


Система Orphus


Слайдер изображений с помощью CSS и jQuery

C выходом в продажу очередного классного гаджета в Apple - iPad выяснилось, что он не поддерживает Flash анимацию. Это породило массу споров насчет будущего этой технологии. Учитывая это, автор данного урока считает, что разумно создавать небольшие виджеты, такие как слайдеры изображений, используя только CSS\HTML\Javascript.

Подобные слайдеры более дружелюбны с точки зрения поисковой оптимизации и работают даже при отключенном JS.

 

Исходники по просьбе автора урока не предоставляются! Но собрать их самому легче простого из демо версии.

HTML

Начнем с оберточного контейнера main_view и 2-мя встроенными секциями image_reel и paging. Первая будет содержать меняющиеся изображения, вторая - управление переключением. Взгляните на изображение ниже для наглядности:

<div class="main_view">
<div class="window">
<div class="image_reel">
<a href="#"><img src="reel_1.jpg" alt="" /></a>
<a href="#"><img src="reel_2.jpg" alt="" /></a>
<a href="#"><img src="reel_3.jpg" alt="" /></a>
<a href="#"><img src="reel_4.jpg" alt="" /></a>
</div>
</div>
<div class="paging">
<a href="#" rel="1">1</a>
<a href="#" rel="2">2</a>
<a href="#" rel="3">3</a>
<a href="#" rel="4">4</a>
</div>
</div>

CSS

В коде присутствуют комментарии:

/*--Главный контейнер--*/
.main_view {
	float: left;
	position: relative;
}
/*--Window/Masking Стили--*/
.window {
	height:286px;	width: 790px;
	overflow: hidden; /*--Прячет все за пределами width/height--*/
	position: relative;
}
.image_reel {
	position: absolute;
	top: 0; left: 0;
}
.image_reel img {float: left;}
/*--Paging Стили--*/
.paging {
	position: absolute;
	bottom: 40px; right: -7px;
	width: 178px; height:47px;
	z-index: 100; /*--кнопки смены слайдов поверх изображения--*/
	text-align: center;
	line-height: 40px;
	background: url(paging_bg2.png) no-repeat;
	display: none; /*--Спрятано по умолчанию, потом будет показано с помощью jQuery--*/
}
.paging a {
	padding: 5px;
	text-decoration: none;
	color: #fff;
}
.paging a.active {
	font-weight: bold;
	background: #920000;
	border: 1px solid #610000;
	-moz-border-radius: 3px;
	-khtml-border-radius: 3px;
	-webkit-border-radius: 3px;
}
.paging a:hover {font-weight: bold;}

jQuery - начало

Прежде всего подключаем:

<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>

Сразу под этой строкой откройте новый тег <script> и введите событие $(document).ready. Это позволит выполнять скрипт только при полной загрузке страницы.

$(document).ready(function() {
//Сюда пишем код
});

jQuery - продолжение

Настраиваем слайдер изображений

Начните с показа управления страницами и активации первого изображения (ссылки). Далее мы посчитаем и подстроим ширину image_reel в зависимости от количества слайдов:

//Показать управление страницами и активировать первую ссылку
$(".paging").show();
$(".paging a:first").addClass("active");
//Взять размер изображения, кол-во изображений, и далее определить размер "холста".
var imageWidth = $(".window").width();
var imageSum = $(".image_reel img").size();
var imageReelWidth = imageWidth * imageSum;
//Подстроить размер "холста" под новый размер
$(".image_reel").css({'width' : imageReelWidth});

Настройка функции слайдера и таймера

Вначале мы создаем функцию для события прокрутки (rotate). Далее создаем еще функцию (rotateswitch), которая будет повторять событие прокрутки.

//Функции
rotate = function(){
    var triggerID = $active.attr("rel") - 1; //Взять количество раз для прокрутки
    var image_reelPosition = triggerID * imageWidth; //Определить дистанцию для прокрутки

    $(".paging a").removeClass('active'); //Убрать все классы active
    $active.addClass('active'); //Добавить класс active

    //Анимация слайдера
    $(".image_reel").animate({
        left: -image_reelPosition
    }, 500 );

}; 
//Вращение и заддержка
rotateSwitch = function(){
    play = setInterval(function(){ //Задать таймер
        $active = $('.paging a.active').next(); 
        if ( $active.length === 0) {
            $active = $('.paging a:first'); //после последней - обратно на первую
        }
        rotate(); 
    }, 7000); //Время для прокрутки (7 секунд)
};

rotateSwitch(); 

Наведение мышкой + события при нажатии

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

//При наведении
$(".image_reel a").hover(function() {
    clearInterval(play); //прекратить смену слайдов
}, function() {
    rotateSwitch(); //продолжить
});	
//При нажатии
$(".paging a").click(function() {
    $active = $(this); 
//Сброс таймера
    clearInterval(play); //Прекратить смену слайдов
    rotateSwitch(); // Продожить
    rotate(); //Вызвать немедленно смену
    return false;
});

Вот и все готово!

И в конце немного примеров с других сайтов для вдохновения:

Данный урок подготовлен для Вас командой сайта http://ruseller.com
Источник урока: www.sohtanaka.com

*
* Рейтинг: 5
Урок создан: 8.2.2010   Просмотров: 16105   Правила перепечатки

Оценивать уроки могут только зарегистрированные пользователи

Если хотите не упустить данный урок, добавьте его в закладки

Пять последних добавленных уроков в рубрике Для сайта:

*

»Делаем постоянные липкие заметки с использованием локального хранилища HTML5
Локальное хранилище HTML5 подобно куки, которое сидит на стероидах - это очень простой в использовании инструмент и, вместе с тем, очень мощный. В данном уроке мы создадим функционал "липких заметок", которые позволят посетителям использовать постоянные заметки при просмотре сайта.


*

»Простая система комментирования с использованием AJAX
В данном уроке мы создадим простую систему комментариев с использованием AJAX. Система имеет интеграцию с gravatar.com и демонстрирует, как устанавливать эффективное взаимодействие между jQuery и PHP/MySQL с помощью JSON.


*

»Временнная шкала (PHP, CSS и jQuery )
Сегодня мы будем создавать прелестную временную шкалу для событий, которая будет похожа на временную шкалу Google, созданную на десятилетие компании.


*

»Динамическая секция ЧАВО с использованием jQuery, YQL и Google Docs
В данном уроке мы сделаем динамическую секцию ЧАВО. Скрипт, при помощи jQuery и YQL (Yahoo! Query Language - язык запросов Yahoo!) , будет вытаскивать содержимое электронной таблицы на вашем аккаунте Google Docs и использовать данные для наполнения секции ЧАВО вопросами и ответами.


*

»Простой способ использовать на сайте такой шрифт, какой хочется.
В данном уроке будет продемонстрировано, как использовать любой шрифт, какой пожелаете, в ваших веб приложениях.


Зарегистрируйтесь, чтобы иметь возможность добавлять комментарии


Комментарии:

аватар
*

Автор: QSCI (2010-08-28 21:56:40)

Сильно тормозит в IE

аватар
*

Автор: SnAtVB (2010-03-31 21:58:21)

DLE советую)))

аватар
*

Автор: RUDO (2010-03-07 23:13:57)

IIIDimaIII Для большого сайта лучше Joomla! Возможностей больше...

аватар
*

Автор: IIIDimaIII (2010-02-12 18:21:19)

подскажите пожалуйста кто знает, какой движок желательно использовать для большого сайта. Начал делать в Wordpress но знаю может ли он тормозить, когда инфы будет больше.... За ранее Благодарен

аватар
*

Автор: demon (2010-02-09 20:05:58)

Ahisandra урок внимательно посмотрите.

аватар
*

Автор: macknoyer (2010-02-09 20:03:54)

А все разобрался, проблема была в значении width, увеличил и все заработало...

аватар
*

Автор: macknoyer (2010-02-09 20:00:53)

Возникла одна проблема: отображаются все фотографии, кроме последней...Что не так делаю?

аватар
*

Автор: Ahisandra (2010-02-09 15:57:00)

Хороший урок. Еще бы таймер автоматической прокрутки прилепить))))))

аватар
*

Автор: SergeyS (2010-02-09 04:49:54)

Как сделать прокрутку фоток мышью или пальцем, как в ipad? Сделайте урок, пожалуйста. Сергей

аватар
*

Автор: Kolian (2010-02-09 00:37:03)

Огромное спасибо, только подумал, что мне нужно подобное на сайт и вы предугадали мои мысли))


поиск

Ваш поисковый запрос:

Если Вы давно мечтаете о создании собственного блога на движке Wordpress, то советую Вам обратить внимание на мой новый видеокурс "Wordpress - Профессиональный блог за один день". Это более 100 видеоуроков по всем аспектам создания и ведения своего блога на самом популярном движке в мире.

*
timeline таймлайн временная шкала скрипт библиотека событие куки mvc массив xsl сервисы база данных cookie баннер тень mysql html5 центрирование joomla sql курсор css3 закладки oop wordpress часы пароль баги чат звезды ускорение twitter google maps html 5 прозрачность ie6 png seo gd library cookies rss рейтинг цитаты блог комментарии theme тема генератор captcha cycle z index позиционирование загрузка кеширование бегущая строка тест домен советы текст видео регистрация текстуры radikal.ru фото favicon слайдшоу карта лента загрузка файлов голосование опрос поля формы api чарты диаграммы mod rewrite календарь спрайты текстовое поле константа include защита multiple select htaccess выпадающие списки миниатюры сообщения чекбоксы новостной блок вкладки выезжающая панель форма шпаргалка обзоры таблица анимация верстка wysiwyg wysiwig cms faq уголок разное ссылки редакторы email mootools списки юзабилити модальные окна плагины web дизайн счетчик аудио flash ajax слайдер окна javascript html кодинг оптимизация шаблоны формы кнопка меню изображения фон подсказки css контактная форма php ротатор галерея jquery

Меня часто спрашивают, как я раскручивал данный сайт?

Мой ответ таков. Для раскрутки данного сайта использовалась методика "Мастер план по раскрутке сайта", которая была предложена Юсуфом Губайдуллиным в начале 2009-го года.

*


Copyright © 2008 Евгений Попов.| Все права защищены. | Служба поддержки