карусель отображать только видимые предметы

0

Я хотел бы настроить только видимые элементы в карусели caroufredsel и отобразить невидимые элементы: none; чтобы минимизировать время загрузки страницы.

Я видел несколько сообщений об этом, но ничего не нашел. Кто-нибудь может мне помочь?

Примечание. Я использую Drupal, поэтому я использую jQuery вместо $.

HTML:

<div class="homepageHeroCarousel"><!-- class of slide for animation -->
  <div class="carousel-inner">
    <ul>
      <li>
        <div class="item">
          <img class="img-responsive" src="sites/all/themes/visit_mendocino/assets/images/hero01.jpg" width="2000" height="900" alt="" />
          <div class="container">
            <div class="caption">
              <h2><a href="#">Scenic Drive on Highway 1</a></h2>
              <p>Getting here is only part<br/>of the experience.</p>
              <a href="#" class="btn btn-primary" tabindex="7">Learn More</a>
            </div>
          </div><!-- end caption -->
        </div>
      </li>
      <li>
        <div class="item">
          <img class="img-responsive" src="sites/all/themes/visit_mendocino/assets/images/hero02.jpg" width="2000" height="900" alt="" />
          <div class="container">
            <div class="caption">
              <h2><a href="#">Fern Canyon Waterfall</a></h2>
              <p>Meander through lush ground and connect with the sounds of the forest.</p>
              <a href="#" class="btn btn-primary" tabindex="8">Learn More</a>
            </div>
          </div><!-- end caption -->
        </div>
      </li>
    </ul>
  </div>
  <a class="prev" id="home_prev" href="#"><i class="fa fa-angle-left fa-3x">&#8203;</i></a>
  <a class="next" id="home_next" href="#"><i class="fa fa-angle-right fa-3x">&#8203;</i></a>
  <!-- <div class="controls"></div> -->
</div>

JQuery:

jQuery(window).load(function(){
  var carousel = jQuery(".homepageHeroCarousel .carousel-inner ul");
  carousel.carouFredSel({
    circular: true,
    infinite: false,
    responsive: true,
    items: {
      visible: 1,
      minimum: 1,
      width: 1170
    },
    scroll: {
      fx: "scroll",
      easing: "linear",
      duration: 1000,
      onAfter: function() {
        var vis = jQuery(".homepageHeroCarousel .carousel-inner ul").triggerHandler("currentVisible");       //get all visible items
        jQuery(".homepageHeroCarousel .carousel-inner ul").children().removeClass("active");                 // remove all .active classes
        vis.filter(":eq(1)").addClass("active");
      }
    },
    auto: false,
    prev : "#home_prev",
    next : "#home_next",
    //pagination: ".homepageHeroCarousel  .controls",
    onCreate: function () {
      jQuery(window).on('resize', function () {
        carousel.parent().add(carousel).height(carousel.children().first().height());
      }).trigger('resize');
      var vis = jQuery(".homepageHeroCarousel .carousel-inner ul").triggerHandler("currentVisible");       //get all visible items
      jQuery(".homepageHeroCarousel .carousel-inner ul").children().removeClass("active");                 // remove all .active classes
      vis.filter(":eq(1)").addClass("active");
    }
  });
});
jQuery(document).ready(function() {  
     jQuery(".homepageHeroCarousel .carousel-inner ul").swiperight(function() {  
        jQuery('#home_prev').click();  
        });  
     jQuery(".homepageHeroCarousel .carousel-inner ul").swipeleft(function() {  
        jQuery('#home_next').click();
   });  
});
  • 1
    Настройка display: none; элементов display: none; не уменьшит время загрузки страницы.
  • 0
    Учитывая, что (как указано @DrCord установки элементов для display:none; не уменьшит время загрузки, что вы пытаетесь достичь?
Теги:
drupal
caroufredsel

1 ответ

0

Я думаю, что вы пытаетесь сделать это Lazy Загрузите изображения правильно? Или изображения не занимают столько места или времени загрузки? Если это так, я пытаюсь выполнить одно и то же. Я нашел много методов для Lazy Load следующего изображения.

http://coolcarousels.frebsite.nl/c/14/

Я попробовал этот пример, но он не работает, если вы нажмете предыдущую кнопку. Это также просто отвратительно. Даже на одном слайдере он не работает на следующей кнопке все время. 1/10 вероятность того, что ленивая загрузка завершится неудачно, и изображение заполнителя все еще отображается. Может, меньше. Но иногда это терпит неудачу. Предыдущее почти всегда терпит неудачу. Для нескольких слайдеров требуется изменение функции или кратность одной и той же функции с переменными именами. Кроме того, работает только на одном слайдере. Я считаю, что он не работает, когда отображается несколько элементов. У меня есть отзывчивый сайт с макс. 3 видимыми и минимум 1 видимыми, поэтому он изменяется от 3 до 2 до 1 элемента, в зависимости от размера экрана. У меня есть свиток, установленный на 1 элемент, поэтому 3 видимы, и он прокручивает круговое, по одному за раз. Предварительная загрузка никогда не работает, скорее, она пытается работать над вторым щелчком прокрутки и захватывает неправильные изображения, потому что переменная для функции ленивого загрузки остается старым значением.

Календарь событий caroFredSel slideTo/slideToPage

Это была попытка добавить активный класс для поиска правильных индексов для ленивой загрузки правильных изображений и получения правильных источников изображения на слайд и т.д. Это не работает для меня для нескольких видимых элементов.

carouFredSel добавить класс к активному слайду

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

Затем каждый раз, когда слайдер переходит на следующий или предыдущий слайды, вам нужно использовать javascript (во время onAfter или onBefore событий для CarouFredsel), чтобы еще раз ленить загрузку следующего и предыдущего слайдов, соответствующих новому текущему слайду. Я не уверен на 100%, как это можно сделать, и я сам работаю над этим, но вероятный "активный" класс должен быть добавлен ко всем видимым элементам (даже в случае переменных видимых элементов (мин. И макс)), а затем JS должен использоваться для проверки индексов элементов с активным классом и ленивой загрузки элемента с 1 более высоким индексом, а затем с последним элементом с активным и ленивой загрузкой элемента с 1 нижним индексом, а затем первым элементом с активным.

Я напишу, когда у меня будет ответ, но если кто-нибудь прочитает это сегодня или завтра и получит ответ, пожалуйста, дайте нам войти. ТАКЖЕ, пожалуйста, не забудьте включить корректировки hieght из оригинального вопроса samhdir. Похоже, что высота контейнера слайдера равна первому слайду (надеюсь, он также свяжет это со сценарием, который делает все слайды равными самому высокому слайду). Мне это тоже понадобится. Мой сайт разработки: uo-new.unaomnia.com и мой основной сайт: unaomnia.com

Ещё вопросы

Сообщество Overcoder
Наверх
Меню