TransWikia.com

Divs do slider slick.js sendo mostrada no carregamento

Stack Overflow em Português Asked by Christiano Bourguignon on January 31, 2021

Quando tento colocar slick.js no meu site, o carregamento das divs dentro aparece uma embaixo da outra e depois oculta, coisa de 1 segundo, como faço para resolver?


Aqui o código:
<div class="carousel">
<div>
<a href="" alt="Body de bebê com manga longa e curta"> 
<picture>
<source srcset="imagem/imagem-1" media="(max-width: 768px)">
<img srcset="imagem/imagem-1" alt="Body de bebê com manga longa e curta">
</picture></a>
</div>
<div>
 <a href="" alt="Kit banho para bebê"> 
<picture>
<source srcset="imagem/imagem-2" media="(max-width: 768px)">
<img srcset="imagem/imagem-2" alt="Kit banho para bebê">
</picture></a>
</div>
<div>
<a href="" alt="Frete Gratis MakoBaby"> 
<picture>
<source srcset="imagem/imagem-3" media="(max-width: 768px)">
<img srcset="imagem/imagem-3" alt="Frete Gratis Regularmento">
</picture></a>
</div>
<div>
<a href="" alt="Body Macacão Promoção"> 
<picture>
<source srcset="imagem/imagem-4" media="(max-width: 768px)">
<img srcset="imagem/imagem-4" alt="Body macacão para bebê">
</picture></a>
</div>
<div>
<a href="" alt="Mijão para bebê malha sem pé"> 
<picture>
<source srcset="imagem/imagem-5" media="(max-width: 768px)">
<img srcset="imagem/imagem-5" alt="Promoção de Mijão para bebê malha sem pé">
</picture></a>
</div>
<div>
<a href="" alt="Pano de boca para bebê/babete"> 
<picture>
<source srcset="imagem/imagem-6" media="(max-width: 768px)">
<img srcset="imagem/imagem-6" alt="Pano de boca para bebê/babete">
</picture></a>
</div>
<div>
<a href="" alt="Mijões para bebê/culote para bebê"> 
<picture>
<source srcset="imagem/imagem-7" media="(max-width: 768px)">
<img srcset="imagem/imagem-7" alt="Promoção Mijões para bebê/culote para bebê">
</picture></a>
</div>
<div>
<a href=""> <picture>
<source srcset="imagem/imagem-8" media="(max-width: 768px)">
<img srcset="imagem/imagem-8" alt="Macacão de bebê promoção"> </picture> </a>
</div>
</div>

Aqui meu JS e Requisições

<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.7.1/slick-theme.css" />
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.7.1/slick.css" />
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.7.1/slick.js"></script>
<script>
$(document).ready(function(){
$('.carousel').slick({
  dots: true,
  infinite: true,
  autoplay:true,
  arrows:true,
  speed: 500,
  slidesToShow: 1,
  slidesToScroll: 1,
    responsive: [
    {
      breakpoint: 768,
      settings: {
        slidesToShow: 1,
        slidesToScroll: 1,
       }
      }
     ]
    });
});
</script>

Meu site já tem Jquery, por isso não coloquei!

Como eu faria para resolver esse "flash das divs do slick"?

One Answer

Como ninguém soube me ajudar, eu conseguir achar uma solução.

Usei os seguintes requisições do JS e CSS

//CSS
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.7.1/slick-theme.css" />

<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/[email protected]/slick/slick.css"/>

//JS
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>

<script type="text/javascript" src="//cdn.jsdelivr.net/npm/[email protected]/slick/slick.min.js"></script>

E fiz as seguintes configurações de JS(no meu caso era banner, então 1 slide para todos)

<script>
$(document).ready(function() {
    $('.carousel').slick({
        infinite: true,
        dots: true,
        arrows:false,
        autoplay: true,
        autoplaySpeed: 6000,
        arrows:false,
  });
}); 
</script>

Agora, para não ter o "flash dos sliders" eu coloquei o seguinte CSS.

Observação: Adicionei a classe slick-slider para todos os sliders, menos o primeiro!

.carousel.slick-initialized{
    visibility:visible;
    opacity:1;
}

.carousel .slick-slider{
    display:none ;
}

.carousel .slick-slider:first-child{
    display:block; visibility:hidden;
} 

.carousel.slick-initialized .slick-slider{
    display:block;visibility:visible!important;
}

Assim, durante o carregamento o primeiro slide estará visível, e os outros ocultos, logo quando eles se tornarem ativo eles fica em display:block;, assim eu resolvi meu problema e espero que ajude mais gente também!

Atenciosamento, Christiano.

Answered by Christiano Bourguignon on January 31, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP