автоматическая настройка фиксированной ширины кода-слайдера в гибком макете

#jquery #css #coda-slider #fluid-layout

#jquery #css #кода-слайдер #плавный макет

Вопрос:

Я изучал возможность использования coda-slider на веб-странице с гибким макетом. Проблема в том, что coda-slider, похоже, хочет фиксированную ширину. Попытка использовать проценты приводит к тому, что копия исчезает за краем панели.

Я нашел образец javascript, который был написан для выбора jpg на основе фактической ширины контейнера, и попытался модифицировать его, чтобы изменить значения ширины css для панели слайдера, но безуспешно. …. хорошо, теперь я заставил его работать с шириной.

Часть css coda-slider, которая управляет шириной панели:

 .coda-slider, .coda-slider .panel { width: 650px; }
  

Скрипт, который я нашел и модифицировал:

  $(document).ready(function() { 

 function imageresize() {  
   var availwidth = $("#leftside").width(); 
   var codawidth = availwidth - 50; 
      $(".coda-slider .panel").css({"width": codawidth   "px"});
      $(".coda-slider").css({"width":codawidth   "px"});
}    

imageresize(); //Triggers when document first loads      

$(window).bind("resize", function(){ //Adjusts image when browser resized
    imageresize();  
 });  
 }); 
  

Я устранил проблему с размером, используя размер контейнера, а не размер страницы… НО … coda-slider использует исходную фиксированную ширину для расстояния между слайдами, поэтому, как только вы начинаете сдвигать, каждая панель заканчивается смещением, которое увеличивается с каждым слайдом.

Есть предложения по изменению расстояния между слайдами в зависимости от ширины?

ХОРОШО, разбираемся….

Пришлось модифицировать js-файл coda-slider, заменив:

 var panelWidth = slider.find(".panel").width();
  

С той же формулой для ширины панели css:

 var panelWidth = $("#leftside").width() - 50;
  

Это позаботилось о расстоянии слайда.

Теперь мне просто нужно выяснить, как заставить coda-slider сбрасываться при изменении размера окна браузера. Это изменяет размер окна css, но не сбрасывает значение слайда. В долгосрочной перспективе изменение размера окна браузера не является большим требованием, но это было бы удобно, если бы пользователи меняли ориентацию своего планшета во время просмотра веб-сайта.

Ответ №1:

Это старое, но у меня была такая же проблема, и оказалось, что разработчик создал новый coda-slider, который может динамически подстраиваться под ширину.

это здесь: LiquidSlider

Ответ №2:

Я столкнулся с аналогичной проблемой при попытке настроить слайд-шоу coda с помощью Flowplayer Tools ‘scrollable’ — слайдера на основе пикселей — на моем сайте fluid layout.

Я решил эту проблему, изменив значения ползунка coda на%, а затем используя дополнительную строку jQuery, чтобы заставить панели элементов слайдера оставаться той же ширины, что и контейнер слайдера.

Вот настройка, которую я использую — % вместо пикселей для ширины. Я не устанавливаю никакой ширины на панелях слайдера; вместо этого им присваиваются значения с помощью jQuery:

 <style type="text/css">

    .slider  { width:100%; height:200px; overflow:hidden; position:relative }
    .items   { width:2000em; position:absolute }
    .item    { /* do not set any width */ height:200px; overflow:hidden;
             float:left; display:inline-block }

</style>


<div class="slider equal">
    <div class="items">

        <div class="item equal"></div>
        <div class="item equal"></div>
        <div class="item equal"></div>

    </div>
</div>
  

Этот jQuery предназначен для CSS-класса ‘equal’:

 // Set slider children to width of parent

if($("div.equal").length){
    $.fn.setAllToMaxWidth = function(){
        return this.width( Math.min.apply(this, $.map( this , function(e){ return $(e).width() }) ) );
    };

    $("div.equal").setAllToMaxWidth();
};
  

Этот обходной путь jQuery является адаптацией jQuery Equal Column Heights, разработанной Джейной Юэн.

Это означает, что макет слайдера отображается точно так, как я хочу, в pageload и соответствует моему макету сетки, независимо от ширины браузера.

Однако есть небольшая загвоздка — если вы измените размер окна вашего браузера после его загрузки, ваш макет может быть растянут за пределы ширины элементов слайдера и выглядит немного странно.