Проблема с заключение картинки в ссылку.
Не знаю, верно ли я сформулировал тему. Проблема такая: беру готовый скрипт для создания хедера-"гармошки" вот код:
<!DOCTYPE html> <html> <head> <title>Стек для слайдшоу JQuery</title> <meta charset="utf-8" /> <script type="text/javascript" src="jquery-1.6.min.js"></script> <script type="text/javascript"> $(document).ready(function() { var cwidth = parseInt($("#container").css("width").replace("px", "")); // Получаем ширину контейнера с изображениями var img_count = $("#img_container").children().length; // Количество изображений var img_width = $("#img1").width(); // Ширина одного изображения var divider = cwidth / img_count; // Ширина полоски, выделяемой для изобржаения в отсутствии курсора мыши над контейнером var small_space = (cwidth - img_width) / (img_count - 1); // Ширина полоски, выделяемой для изобржаения при наличии курсора мыши над контейнером var timer = null; // Таймер // Устанавливаем позиции изображений var cssleft = Array(); $("#img_container img").each(function(index) { // Координаты хранятся в массиве cssleft[index] = new Array(); // Вычисляем и устанавливаем позицию изображения при отсутстсвии курсора мыши над контейнером cssleft[index][0] = (index * divider) - (index * img_width); $(this).css("left", cssleft[index][0] + "px"); // Вычисляем позицию изображения при наведенном на него курсоре мыши cssleft[index][1] = (index * small_space) - (index * img_width); // Вычисляем координату правого угла изобржаения var index2 = index; if (index2 == 0) { index2++; } cssleft[index][2] = cssleft[index2 - 1][1]; }); // Курсор мыши над изображением $("#img_container img").mouseenter(function() { if (timer) { clearTimeout(timer); timer = null; } var self = this; // Таймер используется для предотвращения "дергания" при быстром перемещении куросра мыши // над контейнером с изображениями timer = setTimeout(function() { var img_id = parseInt($(self).attr("id").replace("img", "")) - 1; if ($(self).attr("id") != "img1") { $(self).animate({ left: cssleft[img_id][1] }, 300); } loopNext(self); loopPrev(self); }, 200) }); // Когда курсор мыши покидает контейнер изображений, возвращаем все в исходное состояние $("#img_container").mouseleave(function() { if (timer){ clearTimeout(timer); timer = null; } $("#img_container img").each(function(index) { $(this).animate({ left: cssleft[index][0] }, 300); }); }); function loopPrev(el) { if ($(el).prev().is("img")) { var imgprev_id = parseInt($(el).attr("id").replace("img", "")); if ($(el).prev().attr("id") != "img1") { $(el).prev().animate({ left: cssleft[imgprev_id - 2][1] }, 300); } loopPrev($(el).prev()); } } function loopNext(el) { if ($(el).next().is("img")) { var imgnext_id = parseInt($(el).attr("id").replace("img", "")); $(el).next().animate({ left: cssleft[imgnext_id][2] }, 300); loopNext($(el).next()); } } }); </script> <style type="text/css"> body { margin: 0; padding: 0; font-family: Arial, "Free Sans"; } #container { margin: 0 auto; margin-top: 50px; width: 800px; height: 350px; overflow: hidden; border: 10px solid #000; -webkit-border-radius: .5em; -moz-border-radius: .5em; border-radius: .5em; } #img_container { width: 4000px; } #img_container img { position: relative; -moz-box-shadow: -5px 0 10px #000; -webkit-box-shadow: -5px 0 10px #000; box-shadow: -5px 0 10px #000; width: 600px; float: left; margin: 0; } #img1 { z-index: 0; } #img2 { z-index: 1; } #img3 { z-index: 2; } #img4 { z-index: 3; } #img5 { z-index: 4; } </style> </head> <body> <div id="container"> <div id="img_container"> <img id="img1" src="img/01.jpg"/> <img id="img2" src="img/02.jpg"/> <img id="img3" src="img/03.jpg"/> <img id="img4" src="img/04.jpg"/> <img id="img5" src="img/05.jpg"/> </div> </div> </body> </html> Собственно все классно работает. Вроде более-мение разобрался как. Стал перепиливать, как мне нужно. Столкнулся с проблемой: я не могу сделать эти картинки ссылками ни одним из известных мне способов. Заключаю картинку в тег <a> - и она перестает "раскрываться", при том другие работают. Пробовал сделать её ссылкой с помощью <map> - та же ерунда. Подскажите, пожалуйста, как сделать картинки ссылками? Помогите пожалуйста, я только начинаю js изучать. |
Цитата:
<!DOCTYPE html> <html> <head> <title>Стек для слайдшоу JQuery</title> <meta charset="utf-8" /> <script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { var cwidth = parseInt($("#container").css("width").replace("px", "")); // Получаем ширину контейнера с изображениями var img_count = $("#img_container").children().length; // Количество изображений var img_width = $("#img1").width(); // Ширина одного изображения var divider = cwidth / img_count; // Ширина полоски, выделяемой для изобржаения в отсутствии курсора мыши над контейнером var small_space = (cwidth - img_width) / (img_count - 1); // Ширина полоски, выделяемой для изобржаения при наличии курсора мыши над контейнером var timer = null; // Таймер // Устанавливаем позиции изображений var cssleft = Array(); $("#img_container img").each(function(index) { // Координаты хранятся в массиве cssleft[index] = new Array(); // Вычисляем и устанавливаем позицию изображения при отсутстсвии курсора мыши над контейнером cssleft[index][0] = (index * divider) - (index * img_width); $(this).css("left", cssleft[index][0] + "px"); // Вычисляем позицию изображения при наведенном на него курсоре мыши cssleft[index][1] = (index * small_space) - (index * img_width); // Вычисляем координату правого угла изобржаения var index2 = index; if (index2 == 0) { index2++; } cssleft[index][2] = cssleft[index2 - 1][1]; }); // Курсор мыши над изображением $("#img_container img").mouseenter(function() { if (timer) { clearTimeout(timer); timer = null; } var self = this; // Таймер используется для предотвращения "дергания" при быстром перемещении куросра мыши // над контейнером с изображениями timer = setTimeout(function() { var img_id = parseInt($(self).attr("id").replace("img", "")) - 1; if ($(self).attr("id") != "img1") { $(self).animate({ left: cssleft[img_id][1] }, 300); } loopNext(self); loopPrev(self); }, 200) }); // Когда курсор мыши покидает контейнер изображений, возвращаем все в исходное состояние $("#img_container").mouseleave(function() { if (timer){ clearTimeout(timer); timer = null; } $("#img_container img").each(function(index) { $(this).animate({ left: cssleft[index][0] }, 300); }); }); function loopPrev(el) { if ($(el).prev().is("img")) { var imgprev_id = parseInt($(el).attr("id").replace("img", "")); if ($(el).prev().attr("id") != "img1") { $(el).prev().animate({ left: cssleft[imgprev_id - 2][1] }, 300); } loopPrev($(el).prev()); } } function loopNext(el) { if ($(el).next().is("img")) { var imgnext_id = parseInt($(el).attr("id").replace("img", "")); $(el).next().animate({ left: cssleft[imgnext_id][2] }, 300); loopNext($(el).next()); } } }); </script> <style type="text/css"> body { margin: 0; padding: 0; font-family: Arial, "Free Sans"; } #container { margin: 0 auto; margin-top: 50px; width: 800px; height: 350px; overflow: hidden; border: 10px solid #000; -webkit-border-radius: .5em; -moz-border-radius: .5em; border-radius: .5em; } #img_container { width: 4000px; } #img_container img { position: relative; -moz-box-shadow: -5px 0 10px #000; -webkit-box-shadow: -5px 0 10px #000; box-shadow: -5px 0 10px #000; width: 600px; float: left; margin: 0; } #img1 { z-index: 0; } #img2 { z-index: 1; } #img3 { z-index: 2; } #img4 { z-index: 3; } #img5 { z-index: 4; } </style> </head> <body> <div id="container"> <div id="img_container"> <img id="img1" src="img/01.jpg" data="http://javascript.ru/"/> <img id="img2" src="img/02.jpg" data="http://www.google.ru/"/> <img id="img3" src="img/03.jpg" data="http://www.google.ru/"/> <img id="img4" src="img/04.jpg" data="http://www.google.ru/"/> <img id="img5" src="img/05.jpg" data="http://www.google.ru/"/> </div></div> <script type="text/javascript"> $("#img_container img").click(function (){ window.open($(this).attr('data')); }); </script> </body> </html> |
Спасибо большое. А можно пояснить?
|
Цитата:
<script type="text/javascript"> $("#img_container img").click(function (){ window.open($(this).attr('data')); }); </script> Cтавим на клик по картинке функцию, при клике считываем атрибут data и переходим по указанному в нём url. |
Здравствуйте, столкнулся с той же проблемой. Только такое решение меня не устраивает, т.к. нужно чтоб при клике срабатывал другой скрипт на открывание картинки. Подскажите есть ли какие решения? Спасибо.
|
ubite, вы бы по точнее пояснили...код показали...
|
Скрипт аккордеона тот же.
Скрипт открывания картинки fancybox: <link rel="stylesheet" type="text/css" href="bloks/fancybox/jquery.fancybox.css"> <script type="text/javascript" src="../bloks/jquery/jquery-1.3.2.min.js"></script> <script type="text/javascript" src="../bloks/jquery/jquery.easing.1.3.js"></script> <script type="text/javascript" src="../bloks/fancybox/jquery.fancybox-1.2.1.pack.js"></script> <script type="text/javascript"> $(document).ready(function() { $("a.first").fancybox(); $("a.two").fancybox(); $("a.video").fancybox({"frameWidth":520,"frameHeig ht":400}); $("a.content").fancybox({"frameWidth":600,"frameHe ight":300}); }); </script> <div class="drop-shadow lifted"> <a id="img" class="first" title="картинко" href="photo/1.jpg"><img src="../photo/1(1).jpg"></a> </div> По сути мне нужно объеденить два скрипта. |
Часовой пояс GMT +3, время: 19:26. |