【发布时间】:2020-08-12 19:46:04
【问题描述】:
我似乎无法通过 Slick.js Carousel 进行延迟加载。当我检查 devtools 窗口中的 Network 选项卡时,我可以看到图像延迟加载,但它们没有出现在轮播的页面上。我正在使用 data-lazy 属性,并尝试将第一张幻灯片制作为“src”而不是“data-lazy”,但似乎没有什么对我有用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- Slick slider css -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" integrity="sha512-yHknP1/AwR+yx26cB1y0cjvQUMvEa2PFzt1c9LlS4pRQ5NOTZFWbhBig+X9G9eYW/8m0/4OXNx8pxJ6z57x0dw==" crossorigin="anonymous" />
</head>
<body>
<section class="slickshow carousel">
<!--slide-->
<div class="slide"><img data-lazy="https://via.placeholder.com/1440x500?text=Placeholder+Image">
<h2>SUMMERTIME SAVINGS</h2>
<p>100s of Items On Sale!</p>
<p><a href="#">Shop the Sale Now!</a></p>
</div>
<!--slide-->
<div class="slide"><img data-lazy="https://via.placeholder.com/1440x500?text=Another+One">
</div>
<!--slide-->
<div class="slide"><img data-lazy="https://via.placeholder.com/1440x500?text=Placeholder+Image">
<h2>MORE SAVINGS</h2>
<p>More Text Too!</p>
<p><a href="#">Shop Now</a></p>
</div>
</section>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js" type="text/javascript"></script>
<script>
jQuery(document).ready(function() {
jQuery(".slickshow").slick({
lazyLoad: 'ondemand',
slide: '.slide',
autoplay: true,
autoplaySpeed: 5000,
dots: true,
// string (html|jQuery selector) | object (DOM node|jQuery object)
prevArrow: '<button type="button" class="slick-next">❮</button>',
nextArrow: '<button type="button" class="slick-next">❯</button>',
speed: 1000,
fade: true,
cssEase: 'linear',
slidesToShow: 1,
adaptiveHeight: true,
swipe: true,
swipeToSlide: true,
infinite: true
});
});
// On swipe event
jQuery('.slickshow').on('swipe', function(event, slick, direction) {
console.log(direction);
// left
});
// On edge hit
jQuery('.slickshow').on('edge', function(event, slick, direction) {
console.log('edge was hit')
});
// On before slide change
jQuery('.slickshow').on('beforeChange', function(event, slick, currentSlide, nextSlide) {
console.log(nextSlide);
});
</script>
</body>
</html>
【问题讨论】:
标签: javascript html slideshow slick.js