Название не говорит, что девушкам здесь читать нечего. Вы можете заменить их любыми для Вас подходящими изображениями. Мы будем создавать в статье мини - презентацию, состоящую из трёх элементов списка с фоновым изображением, которое будет сменятся при наведении курсора на меню. Сменятся изображения будут с различным интервалом времени, для обеспечения определенного зрительного эффекта, что несомненно сделает Ваши страницы запоминающимися и привлекательными. Как ни странно, данный слайдер поддерживается Internet Explorer 6 и выше, конечно, все нормальные браузеры так же поддерживают его полностью.
Google Chrome 9+
Opera 10.5+
Firefox 4+
Safari 3.2+
Internet Explorer 6 +
Почему именно этот слайдер я решил разобрать и научить Вас его создавать? Потому что он больше всего подходит для создания быстрых страниц презентаций или сайтов визиток, что может облегчить работу начинающим разработчикам и сократить время на разработку более опытным. Начнём с HTML структуры.
Суть в HTML такова - у нас есть контейнер с id menuWrapper", внутри которого есть три элемента списка - контейнеры (это элементы с id "bg1"), внутри которых расположены списки и ссылки. Каждый контейнер отображают фоновое изображение. С наведением курсора на ссылку, изображение будет плавно перемещаться за счет изменения свойства background-position (для этого используется плагин jquery.bgpos.js).
Три элемента - контейнера располагаются внутри общего для всех элементов контейнера - с id "menuWrapper". Его высота должна и ширина должны соответствовать размерам фоновым изображений, у нас это 500 и 339 пикселей. В общем css код не представляет больших сложностей для понимания. Ниже вы можете видеть его полностью.
CSS
Код
Чистый код
1.
.menuWrapper{
2.
font-family: "Trebuchet MS", Arial, sans-serif;
3.
font-size: 15px;
4.
font-style: normal;
5.
font-weight: normal;
6.
text-transform:uppercase;
7.
letter-spacing: normal;
8.
line-height: 1.45em;
9.
position:relative;
10.
margin:20px auto;
11.
height:339px;
12.
width:497px;
13.
background-position:0 0;
14.
background-repeat:no-repeat;
15.
background-color:transparent;
16.
-moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
17.
border: 1px solid #B2B2B2;
18.
background-color: #B2B2B2;
19.
}
20.
ul.menu{
21.
list-style:none;
22.
width:497px;
23.
margin: 0;
24.
padding: 0;
25.
}
26.
ul.menu > li{
27.
float:left;
28.
width:165px;
29.
height:339px;
30.
border-right:1px solid #777;
31.
background-repeat:no-repeat;
32.
background-color:transparent;
33.
}
34.
ul.menu > li.last{
35.
border:none;
36.
}
37.
.bg1{
38.
background-image: url(../images/1.jpg);
39.
}
40.
.bg2{
41.
background-image: url(../images/2.jpg);
42.
}
43.
.bg3{
44.
background-image: url(../images/3.jpg);
45.
}
46.
ul.menu > li > a{
47.
float:left;
48.
width:165px;
49.
height:50px;
50.
margin-top:250px;
51.
text-align:center;
52.
line-height:50px;
53.
color:#ddd;
54.
background-color:#333;
55.
letter-spacing:1px;
56.
cursor:pointer;
57.
text-decoration:none;
58.
text-shadow:0px 0px 1px #fff;
59.
}
60.
ul.menu > li ul{
61.
list-style:none;
62.
float:left;
63.
margin-top:-161px;
64.
width:100%;
65.
height:111px;
66.
67.
background-repeat:no-repeat;
68.
background-color:transparent;
69.
margin-left: 0;
70.
padding-left: 0;
71.
72.
}
73.
ul.menu > li ul li{
74.
display:none;
75.
76.
}
77.
ul.menu > li ul.sub1{
78.
background-image:url(../images/bg1sub.png);
79.
80.
}
81.
ul.menu > li ul.sub2{
82.
background-image:url(../images/bg2sub.png);
83.
}
84.
ul.menu > li ul.sub3{
85.
background-image:url(../images/bg3sub.png);
86.
}
87.
ul.menu > li ul li a{
88.
color:#fff;
89.
text-decoration:none;
90.
line-height:30px;
91.
margin-left:20px;
92.
text-shadow:1px 1px 1px #444;
93.
font-size:11px;
94.
}
95.
ul.menu > li ul.sub1 li{
96.
display:block;
97.
}
98.
ul.menu > li ul li a:hover{
99.
border-bottom:1px dotted #fff;
100.
}
101.
Листинг 2.
jQuery
Давайте лучше разберём подробней jQuery, он очень хорошо написан. Сначала я приведу его полностью, а ниже – разберу подробней, - по каждой строчке.
Код
Чистый код
1.
$(function() {
2.
/* позиция активного <li> */
3.
var current = 0;
4.
5.
var loaded = 0;
6.
for(var i = 1; i <4; ++i)
7.
$('<img />').load(function(){
8.
++loaded;
9.
if(loaded == 3){
10.
$('#bg1,#bg2,#bg3').mouseover(function(e){
11.
12.
var $this = $(this);
13.
/* если текущий элемент выбран и мы снова навели курсор на него */
14.
if($this.parent().index() == current)
15.
return;
16.
17.
/* в ином случае мы сохраняем текущий id в item
18.
(он будет bg1 или bg2 или bg3, в зависимости от активного элемента */
19.
var item = e.target.id;
20.
21.
/*
22.
суб меню
23.
перемещаемся с лева на право если элемент суб меню первый или последний,
В первой строчке главный сниппет jQuery, я в предыдущей статье о jQuery сниппетах указывал его в полном варианте, здесь он в сокращенном. С его использованием нам станут доступны все элементы на странице для манипуляции, в том числе и элементы нашего меню - слайдера.
Код
Чистый код
1.
$(function() {
2.
3.
После мы объявляем две переменные - var current и var loaded. Первая содержит индекс активного элемента – элемента, по которому провели курсором, а вторая содержит количество загруженных изображений.
Код
Чистый код
1.
var current = 0;
2.
3.
var loaded = 0;
4.
Когда я начинал изучать jQuery для меня было страшным смотреть на эти строчки, сейчас я понимаю, что это такое и для чего нужно, мы здесь загружаем на страницу объекты изображений в количестве трёх штук (у нас три элемента списка). Зачем загружать? Это нужно для того чтобы при манипуляции с элементами изображения уже были подгружены на страницу, мы их возьмём из кэша, представьте, если бы они не были подгружены, то пользователь сперва при первых манипуляциях ждал бы их полной загрузки, а затем они бы брались из кэша, что для нас неприемлемо, нам нужно чтобы изображения были подгружены до того как пользователь начнёт манипуляции со слайдером.
Код
Чистый код
1.
for(var i = 1; i <3; ++i)
2.
$('<img />').load(function(){
3.
4.
.....
5.
6.
}).attr('src', 'images/'+i+'.jpg');
7.
После мы можем подсчитать количество загруженных изображений и привязать наш обработчик события mouseover.
Код
Чистый код
1.
++loaded;
2.
if(loaded == 3){
3.
$('#bg1,#bg2,#bg3').mouseover(function(e){
4.
В следующих строчках мы сверяем текущий объект со значением переменной, если индекс текущего элемента и значение переменной совпадают, то мы не производим ни каких манипуляций, а просто возвращаем return.
Код
Чистый код
1.
var $this = $(this);
2.
/* если текущий элемент выбран и мы снова навели курсор на него */
3.
if($this.parent().index() == current)
4.
return;
5.
В ином случае мы должны запустить наш код, чтобы фоновое изображение перемещалось, для этого передаём в переменную item текущий id, он нам пригодится для функции menu, о которой позже, так же он пригодится для установки класса для элемента li.
Код
Чистый код
1.
var item = e.target.id;
2.
Но до того как начнётся выполнение функции menu мы должны назначить всем 3 элементам li класс с тем фоновым изображением которое привязано к id ссылки, нужно это для того чтобы в функции menu каждый раз менять новое фоновое изображение с эффектами анимации:
Вкратце можно объяснить функцию menu следующим образом. C 82 по 84 строку мы смещаем фоновое изображение для каждого элемента с заданной скоростью и заданным значением смещения, то есть для первого li мы передвигаем фоновое изображение к «0», для второго к –«166px», для третьего к –«332px». В этом и заключается эффект анимации нашего слайдера. Помните, что эффекты создаются благодаря плагину jQuery Background Position( Alexander Farkas).
Вы сможете сами создавать свои слайдеры, однако, давайте расмотрим пример с увеличением изображения до 800px, который более реален для для сайта визитки, ничего сложного в этом нет просто изменим размеры фото, чтобы их ширина для всех трёх стала равной 800px, а высота 542px. Изменили в фотошопе, тепереь давайте внесём изменения в html, css и js.
Изменения, в основном коснутся увеличения ширины и высоты элементов li.
Подскажите сколько стоит встроить этот слайдер в ModX? Как с Вами связаться?
Комментарий добавлен: 28 Мая 2011 20:31:26
1.1
-6
Александр
1000 руб. моя почта eap1985@rambler.ru
Ответ добавлен: 29 Мая 2011 07:09:58
ответить
2
+2
Алексей
Подскажите, в Joomla 1.7 этот слайдер подключается также как и ваш slyshow? Или сложнее?
Комментарий добавлен: 25 Января 2012 00:17:37
2.1
+2
Александр
Здравствуйте Алексей, в Joomla 1.7 этот слайдер подключается не сложнее slyshow, нужно правильно подключить javascript и css! Возможны сложности если будете указывать ссылки из модулей joomla, а не в ручную прописывать.
Ответ добавлен: 25 Января 2012 06:14:33
2.2
+0
Алексей
Промучался довольно долгое время, но так ничего и не получилось: css подгружается, javascript вроде тоже (если верить firebug): загружается первоначальная картинка, но при наведении курсора на меню анимации не происходит. Если открывать html страницу, которая есть в архиве, то все работает. Если пытаться через Joomla, то увы, что ни делай, все без толку. Отключал mootools, добавлял noConflict, ну и кучу вариаций подключения скриптов или добавления кода в index.php шаблона. Привел скриншоты firebug и файлов (пути вроде правильные - проверял не раз).Благодарю за внимание.
1.1
Александр
1000 руб. моя почта eap1985@rambler.ru