动态展示列表头像名字

29 篇文章 1 订阅
3 篇文章 0 订阅

动态展示列表头像名字

公司最新老用到头像和名称的展示,有大头像有小头像,都是根据此代码逻辑实现,可以封装为组件动态传高宽,自适应展示,给自己留个底层代码实现框架,复制粘贴可用才是王道。
效果图:
头像大于小于6个时:
在这里插入图片描述
头像大于大于6个时:
在这里插入图片描述
切换效果
在这里插入图片描述
HTML代码

<template>
    <div class="champion">
        <div class="main">
            <div class="arrow-left" @click="moveLeft" v-if="this.avatarList.length>6">
                <a-icon type="left" />
            </div>
            <div class="avatar-list">
                <div class="avatar-item" :style="moveItem" :class="this.avatarList.length<6?'space-between':''">
                    <div class="box" v-for="(item,index) in avatarList" :key="index">
                        <div><img src="https://img2.baidu.com/it/u=3317874225,1892163514&fm=253&fmt=auto&app=138&f=JPEG?w=236&h=236" alt=""></div>
                        <div class="name">{{item.name}}</div>
                    </div> 
                </div>
            </div>
            <div class="arrow-right" @click="moveRight" v-if="this.avatarList.length>6">
                <a-icon type="right" />
            </div>
        </div>
      
    </div>
</template>

JS代码

<script>
export default {
  data () {
    return {
      currentIndex:0,
      moveWidht: 0,
      avatarList: [
        {url:'../../../../assets/stadium/jiaolian.jpg',name:'刘梓毅1'},
        {url:'../../../../assets/stadium/jiaolian.jpg',name:'刘梓毅2'},
        {url:'../../../../assets/stadium/jiaolian.jpg',name:'刘梓毅3'},
        {url:'../../../../assets/stadium/jiaolian.jpg',name:'刘梓毅4'},
        // {url:'../../../../assets/stadium/jiaolian.jpg',name:'刘梓毅5'},
        // {url:'../../../../assets/stadium/jiaolian.jpg',name:'刘梓毅6'},
        // {url:'../../../../assets/stadium/jiaolian.jpg',name:'刘梓毅7'},
        // {url:'../../../../assets/stadium/jiaolian.jpg',name:'刘梓毅8'},
        // {url:'../../../../assets/stadium/jiaolian.jpg',name:'刘梓毅9'},
        // {url:'../../../../assets/stadium/jiaolian.jpg',name:'刘梓毅10'},
      ]
    }
  },
  methods: {
    moveLeft () {
      if (this.currentIndex >0) {
        this.currentIndex--
        if(this.currentIndex == 1){
          this.moveWidht = (160 * this.currentIndex+6*this.currentIndex)*-1
        }else{
          this.moveWidht = (160 * this.currentIndex+6*this.currentIndex)*-1
        }
      }
      
    },
    moveRight () {
      if (this.currentIndex < this.avatarList.length-6) {
        this.currentIndex++
        if(this.currentIndex == this.avatarList.length-6){
          this.moveWidht = (160 * this.currentIndex+6*this.currentIndex)*-1
        }else{
          this.moveWidht = (160 * this.currentIndex+6*this.currentIndex)*-1
        }
      }
    }
  },
  computed: {
    moveItem () {
      return  {
        transform: `translateX(${this.moveWidht}px)`
      }
    },
  },
}
</script>

CSS代码

<style lang="scss" scoped>
.champion{
    width: 100%;
    height: 420px;
    background: url('../../../../assets/stadium/champion.jpg') 100% 100% no-repeat;
    background-position: 50% 0%;
    background-size: cover;
    box-sizing: border-box;
    .main{
        width: 1200px;
        margin: 0 auto;
        overflow: hidden;
        box-sizing: border-box;
        height: 420px;
        position: relative;
        // 左箭头
        .arrow-left{
            position: absolute;
            top: 210px;
            left: 0;
            transform: translateY(-50%);
            width: 60px;
            height: 60px;
            border-radius: 60px;
            background-color: rgba(204, 204, 204,0.5);
            text-align: center;
            line-height: 60px;
            font-size: 26px;
            color: white;
            cursor: pointer;
            z-index: 999;
        }
        // 右箭头
        .arrow-right{
            position: absolute;
            top: 210px;
            right: 0;
            transform: translateY(-50%);
            width: 60px;
            height: 60px;
            border-radius: 60px;
            background-color: rgba(204, 204, 204,0.5);
            text-align: center;
            line-height: 60px;
            font-size: 26px;
            color: white;
            cursor: pointer;
            z-index: 999;
        }
        // 人物列表
        .avatar-list{
            height: 420px;
            box-sizing: border-box;
            margin-left: 80px;
            margin-right: 80px;
            overflow: hidden;
            
            .avatar-item{
                height: 200px;
                color: white;
                display: flex;
                flex-direction: row;
                justify-content: flex-start;
                padding-top: 150px;
                transition: 0.5s ease;
                .box {
                    text-align: center;
                    width: 200px;
                    margin-left: 20px;
                    img{
                        width: 150px;
                        height: 150px;
                        border-radius: 140px;
                    }
                    .name{
                        line-height: 50px;
                        font-size: 18px;
                    }
                }
              
            }
            .space-between{
                justify-content: space-between;
            }
        }
    }
   
}
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚生隆海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值