• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Открыть меню    

    Слайд-шоу на jQuery

    Слайд-шоу очень часто используют на веб-сайтах, например, на фотостоках, или в интернет-магазинах, главным образом для того, чтобы акцентировать внимание пользователя на новых продуктах. В этом посте я хочу показать, как моно сделать просто слайд-шоу при помощи jQuery.

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

    слайд-шоу на jQuery

    HTML

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

    
    <div id="container">
    	  <div id="navigate">
       <a href="/" id="linkfirst">« first</a>
       <span id="spanfirst">« first</span>
       <a href="/" id="linkprev">‹ prev</a>
       <span id="spanprev">‹ prev</span>
       <a href="/" id="linknext">next ›</a>
       <span id="spannext">next ›</span>
       <a href="/" id="linklast">last »</a>
       <span id="spanlast">last »</span>
    	  </div>
    	  <div id="img_container">
       <div id="img_box">
           <img id="img1" src="img/original/01.jpg"/>
           <img id="img2" src="img/original/02.jpg"/>
           <img id="img3" src="img/original/03.jpg"/>
           <img id="img4" src="img/original/04.jpg"/>
           <img id="img5" src="img/original/05.jpg"/>
           <img id="img6" src="img/original/06.jpg"/>
           <div style="clear:both;"></div>
       </div>
    	  </div>
    	  <div id="imgthumb_box">
       <a href="/" class="thumblink" id="imglink1">
       <img src="img/thumb/01.jpg"/></a>
       <a href="/" class="thumblink" id="imglink2">
       <img src="img/thumb/02.jpg"/></a>
       <a href="/" class="thumblink" id="imglink3">
       <img src="img/thumb/03.jpg"/></a>
       <a href="/" class="thumblink" id="imglink4">
       <img src="img/thumb/04.jpg"/></a>
       <a href="/" class="thumblink" id="imglink5">
       <img src="img/thumb/05.jpg"/></a>
       <a href="/" class="thumblink" id="imglink6">
       <img src="img/thumb/06.jpg"/></a>
    	  </div>
    </div>

    CSS

    Блок под изображения (img_container) обязательно должен иметь свойство overflow со значением hidden, так как этот блок содержит все изображения, которые расположены горизонтально друг за другом.

    
    	#container {
     margin-top: 40px;
    	}
    	#navigate {
     text-align: center;
    	}
    	#navigate a, span {
    	   position: relative;
     top: 3px;
     background: #0099cc;
     text-decoration: none;
     color: #fff;
     padding: 4px 8px 0 8px;
     font-size: 20px;
     font-weight: bold;
     -webkit-border-radius: .3em .3em 0 0;
     -moz-border-radius: .3em .3em 0 0;
     border-radius: .3em .3em 0 0;
    	}
    	#navigate a:hover {
     color: #d3d3d3;
    	}
    	#navigate span {
     display: none;
     color: #999;
    	}
    	#img_container {
     overflow: hidden;
     width: 500px;
     margin: 0 auto;
     border: 8px solid #0099cc;
     -webkit-border-radius: .5em;
     -moz-border-radius: .5em;
     border-radius: .5em;
    	}
    	#img_box {
     position: relative;
     width: 3000px;
     margin: 0;
    	}
    	#img_box img {
     float: left;
    	}
    	#imgthumb_box {
     text-align: center;
    	}
    	#imgthumb_box a {
    	   margin-left: 4px;
    	}
    	#imgthumb_box a img {
     border: 6px solid #e3e3e3;
     position: relative;
     top: 10px;
     -webkit-border-radius: .3em;
     -moz-border-radius: .3em;
     border-radius: .3em;
    	}
    	#imgthumb_box a img:hover {
     border-color: #666;
    	}

    JQuery

    Ниже приведен код jQuery, все построено на свойстве css left блока #img_box, по умолчанию свойство left = 0px (в firefox), или left = ‘auto’ (в Chrome, Opera, IE).

    Если выбрано последнее изображение, то при нажатии кнопки next возвращаемся к первому изображению; если выбрано первое изображение, то при нажатии кнопки prev возвращаемся к последнему; также меняем стили миниатюр в зависимости от выбранного изображения.

    
    	$(document).ready(function() {
        // подсчитываем количество изображений
     var total = $("#img_box img").length;
    	 
     $("#imglink1 img").css({
         "border-color": "#0099cc",
         "top": "-5px"
     });
       // кликаем по минюатюрам   
     $(".thumblink").click(function() {
       // получаем номер img, по кот. кликнули
    var imgnumber = parseInt($(this).attr('id').replace("imglink", ""));
       // сдвигаем #img_box на величину move, со скоростью 500мс
         var move = -($("#img"+imgnumber).width() * (imgnumber - 1));
    	 
         $("#img_box").animate({
             left: move
         }, 500);
       // удаляем атрибут style 
         $("#imgthumb_box").find("img").removeAttr("style");
       // добавляем стили, чтобы прицепиит миниатюрку к изображению  
         $(this).find("img").css({
             "border-color": "#0099cc",
             "top": "-5px",
             "border-top-width": "-5px"
         });
         return false;
     });
       // кликаем по верхней навигации  
     $("#navigate a").click(function() {
       // ширина изображений #img1 
         var imgwidth = $("#img1").width();
       // получаем значение свойства left   
         var box_left = $("#img_box").css("left");
       // получаем значение атрибута id 
         var el_id = $(this).attr("id");
         var move, imgnumber;
    	 
         if (box_left == 'auto') {
             box_left = 0;
         } else {
       // если left не auto, огругляем до целого и заменям px 
             box_left = parseInt(box_left.replace("px", ""));
         }
    	 
       // если кликаем по prev 
         if (el_id == 'linkprev') {
             if ((box_left - imgwidth) == -(imgwidth)) {
                 move = -(imgwidth * (total - 1));
             } else {
       // величина для св-ва left     
                 move = box_left + imgwidth;
             }
    	 
             imgnumber = -(box_left / imgwidth);
             if (imgnumber == 0) {
                 imgnumber = total;
             }
         } 
       // если кликаем по next 
           else if (el_id == 'linknext') {
       // для последнего изображения перемещаем к первому 
             if (-(box_left) == (imgwidth * (total - 1))) {
                 move = 0;
             } else {
                 move = box_left - imgwidth;
             }
    	 
             imgnumber = Math.abs((box_left / imgwidth)) + 2;
             if (imgnumber == (total + 1)) {
                 imgnumber = 1;
             }
         } else if (el_id == 'linkfirst') {
             move = 0;
             imgnumber = 1;
         } else if (el_id == 'linklast') {
             move = -(imgwidth * (total - 1));
             imgnumber = total;
         }
    	 
       // стилизуем миниатюры 
         $("#imgthumb_box").find("img").removeAttr("style");
         $("#imglink"+imgnumber).find("img").css({
             "border-color": "#0099cc",
             "top": "-5px",
             "border-top-width": "-5px"
         });
    	 
         $("#navigate a").hide();
         $("#navigate span").show();
    	 
         $("#img_box").animate({
             left: move+'px'
         }, 400, function() {
             $("#navigate a").show();
             $("#navigate span").hide();
         });
    	 
         return false;
     });
    	});

    Источник

    Комментарии к статье

    Добавить комментарий