Измените слайдер jQuery для большего контроля: добавьте интерактивные миниатюры предварительного просмотра, которые переходят к соответствующему слайду - PullRequest
0 голосов
/ 12 января 2012

Я хотел бы изменить слайд-шоу jQuery, основанное на Ползунок Ennui Design , чтобы иметь список значков или миниатюр, которые дают небольшой предварительный просмотр следующего содержимого фреймов и возможность перехода к нему.конкретный слайд или список маркеров с предварительным просмотром, например это слайд-шоу

Я был бы очень признателен, если бы я мог ориентироваться в том, как этого добиться, либо посмотрев на плагин jQueryили что нужно изменить в скрипте jquery ниже.

Я попытался собрать его примеры, используя этот код

(function($){
$(function(){
    $('#nav>li>a').hover(
        function(){
            $(this).stop(1);
            $(this).animate({'background-position':'0px 0'});
        },
        function(){
            $(this).stop(1);
            $(this).animate({'background-position':'-140px 0'});
        }
    )

    $('.boxgrid').each(function(){
        var $caption = $(this).find('span.boxcaption');
        var pheight = $(this).height();
        $caption.css('top', pheight );

        $(this).hover(
            function(){
                $caption.stop(1);
                $caption.animate({ top: pheight - $caption.height() });
            },
            function(){
                $caption.stop(1);
                $caption.animate({ top: pheight })
            }
        )
    });
});
 })(jQuery);

, и я сталкиваюсь с несколькими ошибками, еслиЯ переключаюсь между кнопками prev / next и превью превью:

  1. регуляторы prev исчезают, если я использую превью превью,

  2. на последнем слайде следующий элемент управления предлагает пустой слайд,

  3. URL-адрес страницы показывает хэш в конце страницы (пример - testing.com/example.cfm#s1), а затемкнопки назад / впередневозможно получить доступ к какому-либо слайду

  4. при просмотре превью, если нажать несколько раз, начнется показ текста одного элемента и слайда изображения другого (50/50 из двух слайдов)кадров.

Я включил основу HTML-кода ниже:

 <!---html page code --->     
 <div id="s">       
  <div class="bullets">
   <div> 
      <a href="#s0" title=" "><img src="images/1/tooltips/0.jpg" alt=" "/>1</a>
      <a href="#s1" title=" "><img src="images/1/tooltips/1.jpg" alt=" "/>2</a>
      <a href="#s2" title=" "><img src="images/1/tooltips/2.jpg" alt=" "/>3</a>
           <div class="bullet-frame" style="display: none; left: 24px; opacity: 0; top:20px;">
            <div> <!--- blank div --->
              <div style="width: 900px; left: 0px;">
                 <img alt=" " src="images/1/tooltips/0.jpg">
                 <img alt=" " src="images/1/tooltips/1.jpg">
                 <img alt=" " src="images/1/tooltips/2.jpg">
              </div> <!--- div style width 1100% --->
            </div> <!--- blank div END --->
<span></span>
           </div> <!--- bullet-frame --->
    <div class="ws_shadow"></div>
 </div> 
</div> 
</div>  <!--- end preview thumbs  --->

<!--- start slideshow  --->

 <div id="one" class="contentslider">
    <div class="cs_wrapper">
       <div class="cs_slider">
 <!--- s0  --->
          <div class="cs_article" id="s0">
           <h2>s0 slide</h2>
            <div id="main_view10">
              <a href="#"> <img src="images/images/0010.png" alt=" "/></a>
             </div>
              <p>sample text</p>
                 <div class="container">
                        <ul class="thumb10">
                            <li><a href="images/images/0010_a.png"><img src="images/images/thumb00101.jpg" alt="" /></a></li>
                            <li><a href="images/images/0010_b.jpg"><img src="images/images/thumb00102.jpg" alt="" /></a></li>

                      </ul>
                    </div>
                    <p>  <a href=" " class="readmore" target="_blank">Visit site</a></p>
                </div>
                <!--- End s0 --->
 <!--- s1  --->
          <div class="cs_article" id="s1">
           <h2>s1 slide</h2>
            <div id="main_view10">
              <a href="#"> <img src="images/images/0010.png" alt=" "/></a>
             </div>
              <p>sample text</p>
                 <div class="container">
                        <ul class="thumb10">
                            <li><a href="images/images/0010_a.png"><img src="images/images/thumb00101.jpg" alt="" /></a></li>
                            <li><a href="images/images/0010_b.jpg"><img src="images/images/thumb00102.jpg" alt="" /></a></li>

                      </ul>
                    </div>
                    <p>  <a href=" " class="readmore" target="_blank">Visit site</a></p>
                </div>
                <!--- End s1 --->

                 <!--- s2  --->
          <div class="cs_article" id="s2">
           <h2>s2 slide</h2>
            <div id="main_view10">
              <a href="#"> <img src="images/images/0010.png" alt=" "/></a>
             </div>
              <p>sample text</p>
                 <div class="container">
                        <ul class="thumb10">
                            <li><a href="images/images/0010_a.png"><img src="images/images/thumb00101.jpg" alt="" /></a></li>
                            <li><a href="images/images/0010_b.jpg"><img src="images/images/thumb00102.jpg" alt="" /></a></li>

                      </ul>
                    </div>
                    <p>  <a href=" " class="readmore" target="_blank">Visit site</a></p>
                </div>
                <!--- End s2 --->

 <!--- Article Ends  --->
 </div><!-- End cs_slider -->
</div><!-- End cs_wrapper -->
</div><!-- End contentslider -->


<script type="text/javascript">
 $(function() {
 $('#one').ContentSlider({
   width : '900px',
   height : '400px',
   speed : 800,
   easing : 'easeInOutBack'
 });
});
 </script>

Ниже приведен JQuery слайдера

(function($) {
 $.fn.ContentSlider = function(options)
  {
var defaults = {
  leftBtn : 'images/cs_leftImg.jpg',
  rightBtn : 'images/cs_rightImg.jpg',
  width : '900px',
  height : '400px',
  speed : 400,
  easing : 'easeOutQuad',
  textResize : false,
  IE_h2 : '26px',
  IE_p : '11px'
}
var defaultWidth = defaults.width;
var o = $.extend(defaults, options);
var w = parseInt(o.width);
var n = this.children('.cs_wrapper').children('.cs_slider').children('.cs_article').length;
var x = -1*w*n+w; // Minimum left value
var p = parseInt(o.width)/parseInt(defaultWidth);
var thisInstance = this.attr('id');
var inuse = false; // Prevents colliding animations

function moveSlider(d, b)
{
  var l = parseInt(b.siblings('.cs_wrapper').children('.cs_slider').css('left'));
  if(isNaN(l)) {
    var l = 0;
  }
  var m = (d=='left') ? l-w : l+w;
  if(m<=0&&m>=x) {
    b
      .siblings('.cs_wrapper')
        .children('.cs_slider')
          .animate({ 'left':m+'px' }, o.speed, o.easing, function() {
            inuse=false;
          });

    if(b.attr('class')=='cs_leftBtn') {
      var thisBtn = $('#'+thisInstance+' .cs_leftBtn');
      var otherBtn = $('#'+thisInstance+' .cs_rightBtn');
    } else {
      var thisBtn = $('#'+thisInstance+' .cs_rightBtn');
      var otherBtn = $('#'+thisInstance+' .cs_leftBtn');
    }
    if(m==0||m==x) {
      thisBtn.animate({ 'opacity':'0' }, o.speed, o.easing, function() { thisBtn.hide(); });
    }
    if(otherBtn.css('opacity')=='0') {
      otherBtn.show().animate({ 'opacity':'1' }, { duration:o.speed, easing:o.easing });
    }
  }
}

function vCenterBtns(b)
{
  // Safari and IE don't seem to like the CSS used to vertically center
  // the buttons, so we'll force it with this function
  var mid = parseInt(o.height)/2;
  b
    .find('.cs_leftBtn img').css({ 'top':mid+'px', 'padding':0 }).end()
    .find('.cs_rightBtn img').css({ 'top':mid+'px', 'padding':0 });
}

return this.each(function() {
  $(this)
    // Set the width and height of the div to the defined size
    .css({
      width:o.width,
      height:o.height
    })
    // Add the buttons to move left and right
    .prepend('<a href="#" class="cs_leftBtn"><img src="'+o.leftBtn+'" /></a>')
    .append('<a href="#" class="cs_rightBtn"><img src="'+o.rightBtn+'" /></a>')
    // Dig down to the article div elements
    .find('.cs_article')
      // Set the width and height of the div to the defined size
      .css({
        width:o.width,
        height:o.height
      })
      .end()
    // Animate the entrance of the buttons
    .find('.cs_leftBtn')
      .css('opacity','0')
      .hide()
      .end()
    .find('.cs_rightBtn')
      .hide()
      .animate({ 'width':'show' });

  // Resize the font to match the bounding box
  if(o.textResize===true) {
    var h2FontSize = $(this).find('h2').css('font-size');
    var pFontSize = $(this).find('p').css('font-size');
    $.each(jQuery.browser, function(i) {
      if($.browser.msie) {
         h2FontSize = o.IE_h2;
         pFontSize = o.IE_p;
      }
    });
    $(this).find('h2').css({ 'font-size' : parseFloat(h2FontSize)*p+'px', 'margin-left' : '66%' });
    $(this).find('p').css({ 'font-size' : parseFloat(pFontSize)*p+'px', 'margin-left' : '66%' });
    $(this).find('.readmore').css({ 'font-size' : parseFloat(pFontSize)*p+'px', 'margin-left' : '66%' });
  }

  // Store a copy of the button in a variable to pass to moveSlider()
  var leftBtn = $(this).children('.cs_leftBtn');
  leftBtn.bind('click', function() {
    if(inuse===false) {
      inuse = true;
      moveSlider('right', leftBtn);
    }
    return false; // Keep the link from firing
  });

  // Store a copy of the button in a variable to pass to moveSlider()
  var rightBtn = $(this).children('.cs_rightBtn');
  rightBtn.bind('click', function() {
    if(inuse===false) {
      inuse=true;
      moveSlider('left', rightBtn);
    }
    return false; // Keep the link from firing
  });

  vCenterBtns($(this)); // This is a CSS fix function.
});
  }
})(jQuery)

Заранее спасибо!

1 Ответ

0 голосов
/ 12 января 2012

Попробуйте этот слайдер: http://tympanus.net/codrops/2011/01/19/sweet-thumbnails-gallery/ Это довольно круто, и имеет функции, которые вы хотели.

...