Element-ui的Carousel走马灯组件动态渲染高度

这篇具有很好参考价值的文章主要介绍了Element-ui的Carousel走马灯组件动态渲染高度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在前端vue项目开发中经常会用到走马灯的场景,然而在采用Element-ui的情况下,el-carousel走马灯组件有一个默认的固定高度300px。如下所示:

.el-carousel__container {
    position: relative;
    height: 300px; // element-ui 默认高度
}

这样会导致网页的全屏的banner被压缩或拉伸,变形十分难看,在一个认真的切图仔眼里是无法容忍的。然而业务方在使用的时候没有按照相关图片规范来上传符合规格的图片大小。所以我们需要在程序中开发根据业务后台上传的图片大小来动态渲染走马灯的高度。
下面我们来看看具体的代码实现:

<template>
 <!--banner 组件-->
	<el-carousel
        :height="imgHeight"
        style="width:100%;"
        indicator-position="none"
        :arrow="bannerList.length>1 ? 'hover' : 'never'"
        :loop="true"
        :autoplay="true"
      >
        <el-carousel-item v-for="(item,index) in bannerList" :key="index">
          <template v-if="item.jumpType">
            <el-image ref="image"
              style="width:100%;"
              :src="item.image"
              fit="fit"
              class="banner-img" />
          </template>
        </el-carousel-item>
      </el-carousel>
</template>
<script>
export default {
  props:{
    bannerList:{
      type: Array,
      require: false,
      default: () => []
    }
  },
  data(){
    return {
      imgHeight: ''
    }
  },
  mounted(){
    this.imgLoad();
    // 监听窗口变动大小计算banner高度
    window.addEventListener("resize", () => {
      this.imgLoad()
    });
  },
  methods:{
    // 获取图片的实际长度和宽度
    getImgAttr (url, callback) {
        let img = new Image()
        img.src = url
        if (img.complete) {
            callback(img.width, img.height);
            // console.log(img.width, img.height, 'img.width, img.height')
        } else {
            img.onload = function () {
                callback(img.width, img.height)
                img.onload = null
            }
        }
    },
    imgLoad() {
      this.$nextTick(function() {
        // 定义页面初始的走马灯高度, 默认以第一张图片高度
        if (this.bannerList.length) {
            this.getImgAttr(this.bannerList[0].image, (width, height) => {
                // 获取屏宽计算图片容器高度
                let screenWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth
                this.imgHeight = height / width * screenWidth + 'px'
                // console.log(this.imgHeight, 'this.imgHeight')
            })
        }
      });
    },
  }
}
</script>

写到这儿基本上解决了图片变形问题。注意:组件的mounted钩子中监听屏幕大小改变,在组件销毁时监听尽可能的要移除事件监听,这里程序与文章相关不大省略掉了。文章来源地址https://www.toymoban.com/news/detail-436433.html

到了这里,关于Element-ui的Carousel走马灯组件动态渲染高度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自定义element-ui走马灯(轮播)样式

    自定义el-carousel-item指示器样式 把指示器变成圆点 效果图:  

    2024年02月13日
    浏览(40)
  • Element UI 走马灯的使用

    目录 走马灯是什么 原生js实现 Element UI的走马灯使用 el-carousel Carousel Events el-carousel-item 在有限空间内,循环播放同一类型的图片、文字等内容,走马灯也叫轮播图。 比如   JS实现轮播图效果(同时播放音频)_trigger333的博客-CSDN博客 Element - The world\\\'s most popular Vue UI framework 代

    2024年02月02日
    浏览(51)
  • elementUI 轮播图 ----Carousel 走马灯笔记

    2024年02月05日
    浏览(134)
  • ElementUI浅尝辄止14:Carousel 走马灯

    在有限空间内,循环播放同一类型的图片、文字等内容 结合使用 el-carousel 和 el-carousel-item 标签就得到了一个走马灯。幻灯片的内容是任意的,需要放在 el-carousel-item 标签中。默认情况下,在鼠标 hover 时底部的指示器时就会触发切换。通过设置 trigger 属性为 click ,可以达到点

    2024年02月10日
    浏览(50)
  • 制作轮播图经验分享——element ui走马灯的使用(附源码,效果截图)

    先附上效果图:   element ui链接地址:Carousel 走马灯 | Element Plus (gitee.io) 源码: 这里我使用的是静态图片(本地) 经验分享: 在制作轮播图的时候经常会发现图片大小不一,这时候可以在img标签里加上width:100%;height:100%即可实现图片铺满。 当然,这只是轮播图的一种,还

    2024年02月11日
    浏览(41)
  • element-plus走马灯不显示

    依赖正确,代码用法正确,但是element-plu走马灯就是不显示!! 并且盒子的宽度总是0 在现有的布局中插入官方的案例,也不能显示 但是把整个页面都使用官方案例就可以正常显示 所以,怀疑时自己的样式冲突了 就content一个盒子,看到 display: flex; 就知道不对劲,去掉flex布

    2024年02月07日
    浏览(39)
  • 简单实现微信小程序实现文字从右往左无缝滚动(走马灯)的组件(类似公告)

    文章目录 目录 文章目录 概要 代码部分 wxss部分 wxss部分 js部分 小结   最近做一个微信小程序项目突发奇想,想到做一个文字无缝滚动的公告,然后查了好多资料发现没看懂他们的想法然后自己想了好久如何才能实现无缝滚动,我发现好多博主发出来的都是不是无缝滚动的

    2024年02月08日
    浏览(58)
  • 用 React+ts 实现无缝滚动的走马灯

    走马灯是一种常见的网页交互组件,可以展示多张图片或者内容,通过自动播放或者手动切换的方式,让用户能够方便地浏览多张图片或者内容。 本次实现的不是轮播图而是像传送带一样的无限滚动的形式。 走马灯可设置一下属性: 滚动速度 滚动方向 一屏要显示项的个数

    2024年02月13日
    浏览(38)
  • 实现NoticeBar 通知栏。走马灯公告栏

    微信小程序封装公共组件——实现NoticeBar 通知栏。走马灯公告栏 代码如下(示例): index.wxml代码如下(示例): index.ts 公告通知栏父组件传notice数组,组件设置了timer可以多条进行轮播

    2024年02月10日
    浏览(46)
  • Proteus仿真--基于51单片机的走马灯实现(仿真文件+程序)

    本文主要介绍基于51单片机的走马灯仿真(完整仿真源文件及代码见文末链接) 本设计中有16个LED灯用于流水走马演示,一位数码管用于显示当前模式状态,3个按键分别用于选择模式及加减速度控制 仿真图如下 其中 K1:用于模式切换选择,有多种模式可切换 K2:加速流水/走

    2024年02月06日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包