layui轮播图根据设备宽度图片等比例,高度自适应

如图

html代码(注意:lay-filter="carofilter")

javascript 复制代码
<div class="layui-carousel" id="test10" lay-filter="carofilter">
  <div carousel-item="">
    <div><img src="http://layui.apixx.net/res/static/images/layui/demo/1.png"></div>
    <div><img src="http://layui.apixx.net/res/static/images/layui/demo/2.png"></div>
    <div><img src="http://layui.apixx.net/res/static/images/layui/demo/3.png"></div>
    <div><img src="http://layui.apixx.net/res/static/images/layui/demo/4.png"></div>
    <div><img src="http://layui.apixx.net/res/static/images/layui/demo/5.png"></div>
    <div><img src="http://layui.apixx.net/res/static/images/layui/demo/6.png"></div>
    <div><img src="http://layui.apixx.net/res/static/images/layui/demo/7.png"></div>
  </div>
</div>

js代码

javascript 复制代码
<script>
layui.use(['carousel', 'form'], function(){
  var carousel = layui.carousel
  ,form = layui.form;
  
  //图片轮播
  carousel.render({
    elem: '#test10'
    ,width: '100%'
    ,height: "150px"
    ,interval: 3000
  });

  // 计算图片等比例高度
  function calculateImageHeight() {
    var imgObj = $("#test10").find(".layui-this img");
    if (imgObj.length > 0) {
      var img = new Image();
      img.src = imgObj.attr('src');
      img.onload = function() {
        var originalWidth = this.width;
        var originalHeight = this.height;
        var currentWidth = imgObj.width();
        var ratio = currentWidth / originalWidth;
        var newHeight = originalHeight * ratio;
        // 设置高度
        $("#test10").css('height', newHeight);
      }
    }
  }

  // 初始计算
  calculateImageHeight();

  // 轮播每页都重新计算
  carousel.on('change(carofilter)', function(obj){
    calculateImageHeight();
  });
});
  
//窗口变化是重新加载
$(window).resize(function () {
  window.location.reload()
})
</script>
相关推荐
lijun_xiao200919 小时前
前端最新Vue2+Vue3基础入门到实战项目全套教程
前端
90后的晨仔20 小时前
Pinia 状态管理原理与实战全解析
前端·vue.js
杰克尼20 小时前
JavaWeb_p165部门管理
java·开发语言·前端
EndingCoder20 小时前
WebSocket实时通信:Socket.io
服务器·javascript·网络·websocket·网络协议·node.js
90后的晨仔20 小时前
Vue3 状态管理完全指南:从响应式 API 到 Pinia
前端·vue.js
90后的晨仔20 小时前
Vue 内置组件全解析:提升开发效率的五大神器
前端·vue.js
我胡为喜呀20 小时前
Vue3 中的 watch 和 watchEffect:如何优雅地监听数据变化
前端·javascript·vue.js
我登哥MVP20 小时前
Ajax 详解
java·前端·ajax·javaweb
非凡ghost21 小时前
Typora(跨平台MarkDown编辑器) v1.12.2 中文绿色版
前端·windows·智能手机·编辑器·软件需求
馨谙21 小时前
/dev/null 是什么,有什么用途?
前端·chrome