elementui Carousel 走马灯实现点击切换数据

前言

实际开发中常见的用到Carousel 走马灯的场景都是在实现轮播图时,而使用该组件实现文本数据内容的切换好像并不多见。下面介绍一下第二种情况的实现方式。

效果图

默认展示
点击右边按钮切换后
列表默认展示两个,左右提供按钮可切换数据。

具体实现

html代码:

   <div id="warp">
       <i class="el-icon-d-arrow-left" id="left" @click="handel('prev')"></i>
       <i class="el-icon-d-arrow-right" id="right" @click="handel('next')"></i>
          <el-carousel :height="dataHeight" indicator-position="outside" ref="carousel" arrow="always" :autoplay="false">
              <el-carousel-item id="box" v-for="item in tableData" :key="item.id">
                <!-- 使用嵌套的 v-for 循环渲染每个属性的值 -->
                <div v-for="(value, key) in item" :key="key">
                      <el-row>
                        <el-col style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="7">{{value.name}}</el-col>
                        <el-col style="min-height: 1px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="7"></el-col>
                        <el-col style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="8">总发电量:{{value.zfdl}}</el-col>
                      </el-row>
                      <el-row>
                        <el-col style="margin:-10px 1px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="7">A相电流:{{value.dla}}</el-col>
                        <el-col style="margin:-10px 1px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="7">A相电压:{{value.dya}}</el-col>
                        <el-col style="margin:-10px 1px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="7">瞬时功率:{{value.yggl}}</el-col>
                      </el-row>
                      <el-row>
                        <el-col style="margin:-10px 1px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="7">B相电流:{{value.dlb}}</el-col>
                        <el-col style="margin:-10px 1px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="7">B相电压:{{value.dyb}}</el-col>
                        <el-col style="margin:-10px 1px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="7">无功功率:{{value.wggl}}</el-col>
                      </el-row>
                      <el-row>
                        <el-col style="margin:-10px 1px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="7">C相电流:{{value.dlc}}</el-col>
                        <el-col style="margin:-10px 1px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="7">C相电压:{{value.dyc}}</el-col>
                        <el-col style="margin:-10px 1px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" :span="7">视在功率:{{value.szgl}}</el-col>
                      </el-row>
                </div>
              </el-carousel-item>
          </el-carousel>
   </div>

JS代码:

// js

  props: {
    dataHeight: {
      type: String,
      default: '235px'
    }
  },
  data() {
    return {
        tableData: [{
            id: '1',
            name: '第一页(1)',
            dla: '1',
            dlb: '1',
            dlc: '1',
            dya: '1',
            dyb: '1',
            dyc: '1',
            yggl: '1',
            wggl: '1',
            szgl: '1',
            zfdl: '1',
        }, {
            id: '2',
            name: '第二页(2)',
            dla: '2',
            dlb: '2',
            dlc: '2',
            dya: '2',
            dyb: '2',
            dyc: '2',
            yggl: '2',
            wggl: '2',
            szgl: '2',
            zfdl: '2',
        }, {
            id: '3',
            name: '第一页(3)',
            dla: '3',
            dlb: '3',
            dlc: '3',
            dya: '3',
            dyb: '3',
            dyc: '3',
            yggl: '3',
            wggl: '3',
            szgl: '3',
            zfdl: '3',
        }, {
            id: '4',
            name: '第二页(4)',
            dla: '4',
            dlb: '4',
            dlc: '4',
            dya: '4',
            dyb: '4',
            dyc: '4',
            yggl: '4',
            wggl: '4',
            szgl: '4',
            zfdl: '4',
        }, {
            id: '5',
            name: '第一页(5)',
            dla: '5',
            dlb: '5',
            dlc: '5',
            dya: '5',
            dyb: '5',
            dyc: '5',
            yggl: '5',
            wggl: '5',
            szgl: '5',
            zfdl: '5',
        }], 
    };
  },
created() {
		//控制列表显示几个
    var result = [];
    for (var i = 0, len = this.tableData.length; i < len; i += 3) {
        result.push(this.tableData.slice(i, i + 3));
    }
    this.tableData = result;
},
methods: {
     handel(row) {
         if (row == 'next') {
             this.$refs.carousel.next()
         } else {
             this.$refs.carousel.prev()
         }
     }
 } 

css代码:


#warp {
     width: 600px;
     height: 200px;
     border: 1px solid #000;
     margin: 80px auto;
     position: relative;
 }
 #left,
 #right {
     width: 40px;
     height: 40px;
     border: 1px solid #060F30;
     text-align: center;
     line-height: 40px;
     position: absolute;
     top: 50%;
     margin-top: -20px;
     border-radius: 50px;
 }
 #left,
 #right:hover{
     cursor: pointer;
 }
 #left {
     left: -50px;
 }
 #right {
     right: -50px;
 }
 .el-carousel__container {
     height: 200px;
 }
 #box {
     display: flex;
     justify-content: space-between;
 }
 #box>div {
     width: 808px;
     height: 285px;
     background: #051D3F;
     color: rgb(255, 255, 255);
     font-weight: bold;
     text-align: center;
     line-height: 70px;
 }
 .el-carousel__indicators--outside {
     display: none;
     /* 去掉指示器 */
 }
 .el-carousel__arrow{
     display: none;
 }

 ::v-deep .el-carousel__arrow--left{
  left: 5px;
  background-color: #1A5396;
  color: #fff;
}


::v-deep .el-carousel__arrow--right{
  right: 5px;
  background-color: #1A5396;
  color: #fff;
}

参考

emement ui Carousel 走马灯
elementu 自定义走马灯点击切换数据
vue 设置el-carousel的高度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ElementUI Carousel走马灯)是一种常用的轮播组件,可以在网页中展示多张图片或内容,支持自动播放、手动切换、循环播放等功能。它是基于Vue.js框架开发的,使用简单方便,可以快速实现网页轮播效果。 ### 回答2: elementui是一种基于Vue.js的组件库,提供了许多实用的组件,其中包括走马灯carousel走马灯是一种常见的网页交互组件,可以展示多张图片或者内容,通过自动播放或者手动切换的方式,让用户能够方便地浏览多张图片或者内容。 elementui走马灯carousel组件功能非常强大,可以满足不同场景下的需求。首先,可以通过设置autoplay属性来实现自动轮播功能,可以控制轮播的时间间隔和是否开启循环播放。其次,可以通过设置indicator-position属性来控制指示器的位置,可以将指示器放在左边、右边、上方、下方或者不显示。此外,elementui走马灯还支持手动切换功能,可以通过设置arrow属性来控制左右箭头是否显示。 针对不同的需求,elementui走马灯还提供了多种展示效果。比如,默认展示效果为普通模式,可以通过设置type属性为card来使图片和文字居中展示,而且还可以设置card-style属性来自定义卡片的样式。同时,elementui走马灯还支持分页显示,可以通过设置pager属性来显示分页器。 最后,elementui走马灯还提供了许多其他的属性和事件,可以通过这些属性和事件来实现更复杂的交互。总的来说,elementui走马灯carousel组件是一款非常实用的组件,可以简单快速地实现网页中的轮播展示功能。 ### 回答3: ElementUI是一种基于Vue.js的开源UI框架,提供了多种组件,使web应用程序的开发变得更加轻松快捷。其中,carousel 走马灯ElementUI中的一个组件,用于实现轮播图的效果。 使用ElementUIcarousel组件,只需在Vue.js项目中引入ElementUI并使用它的carousel组件即可。在使用carousel组件时,需要先在html模板中定义一个元素(div),用于包含轮播图的内容。然后,在Vue.js的script标签中设置轮播图的选项(options),包括轮播图的图片以及切换间隔等。 一个ElementUI carousel的例子如下: ``` <template> <div id="carousel-example"> <el-carousel :interval="3000"> <el-carousel-item v-for="(item, index) in items" :key="index"> <img :src="item.src" class="carousel-image"> </el-carousel-item> </el-carousel> </div> </template> <script> export default { data() { return { items: [ { src: "https://picsum.photos/800/300?image=0" }, { src: "https://picsum.photos/800/300?image=1" }, { src: "https://picsum.photos/800/300?image=2" }, { src: "https://picsum.photos/800/300?image=3" }, ], }; }, }; </script> <style> .carousel-image { width: 100%; } </style> ``` 在这个例子中,我们先给轮播图的容器定义了一个id为“carousel-example”的div标签。然后,在Vue.js的script标签中,我们使用了carousel组件,并设置了切换间隔为3000毫秒。 carousel内部使用了el-carousel-items子组件,我们使用v-for循环绑定了轮播图的图片地址。图片的宽度被设置为100%。当过渡效果执行时,ElementUI会自动加上渐变动画以及衔接效果。 可以看到,使用ElementUIcarousel组件非常方便,只需要几行代码就可以实现轮播图的效果。这使得开发人员可以将更多的时间和精力放在项目的其他方面,提高了开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值