layui轮播图根据图片自适应(layui.carousel)

layui轮播图根据图片自适应(layui.carousel)

轮播图如果固定大小,而图片大小不相同就会导致图片失帧,所以需要根据图片动态调整高度和宽度。

文档

layui文档入口
layui轮播图根据图片自适应(layui.carousel)_第1张图片
layui轮播图根据图片自适应(layui.carousel)_第2张图片

实现原理

监听图片大小,根据图片大小重置轮播图。

html

	<div class="carousel">
        <div class="layui-carousel" id="carousel" lay-filter="carofilter">
            <div carousel-item>
                <img src="0.jpg" class="img" style="width: 100%;height: auto"/> // width调整图片宽度在轮播图组件中的占比
                <img src="1.jpg" class="img" style="width: 100%;height: auto"/>
            </div>
        </div>
    </div>

js

function re(ins, i){
        // var width = $(".img")[i].width
        var height = $(".img")[i].height
        ins.reload({
            elem: '#carousel',
            width: '100%', //设置轮播图宽度
            height: height, //轮播图高度为图片高度
            arrow: 'hover', //始终显示箭头
            anim: 'default', //切换动画方式
            autoplay: false
        });
    }
    
layui.use(['carousel'], function () {
            var carousel = layui.carousel;
            var i = 0
            var ins
            // var width = $(".img")[i].width //获取图片宽度
            var height = $(".img")[i].height //获取图片高度
            ins = carousel.render({
                elem: '#carousel',
                width: '100%', //设置容器宽度
                height: height, //轮播图高度为图片高度
                arrow: 'hover', //始终显示箭头
                anim: 'default', //切换动画方式
                autoplay: false
            });
            re(ins, i)
            carousel.on('change(carofilter)', function(obj){
                i = obj.index
                re(ins, i)
            });
        });

效果

下面两张图高度不一致,可自动调整。保证图片不被压缩,因此导致不够清晰。

layui轮播图根据图片自适应(layui.carousel)_第3张图片

layui轮播图根据图片自适应(layui.carousel)_第4张图片

你可能感兴趣的:(layui,html,javascript,css,前端)