需求
列表数组里面有20条数据,循环颜色数组只有8条。列表要不停循环颜色值,例如说文字1-8条循环颜色之后,第9条又要重新开始循序
学习
其实核心只有一条,uni-app通过动态计算索引值取余颜色数组的长度
:style="{ color: fontColor[index % fontColor.length] }"
效果

实现代码
<template>
<view>
<!-- 列表 -->
<view class="lis-flex">
<block v-for="(item,index) in 20" :key="index">
<view class="lis-item" v-if="fontColor != ''">
<view class="lis-img" :style="{ color: fontColor[index % fontColor.length] }">
阿
</view>
<view class="lis-title">
阿萨德
</view>
</view>
</block>
</view>
</view>
</template>
<script>
export default {
data() {
return {
fontColor: ["rgb(138, 84, 208)", "rgb(232, 58, 91)", "rgb(250, 131, 71)", "rgb(65, 64, 125)",
"rgb(53, 199, 84)", "rgb(73, 120, 240)","rgb(232, 58, 91)","rgb(65, 64, 125)",
],
}
},
methods: {
}
}
</script>
<style>
page {
background-color: #F8F8F8;
}
.lis-flex {
display: flex;
/* justify-content: center; */
padding: 20rpx;
flex-wrap: wrap;
background-color: #ffffff;
border-radius: 20rpx 0;
}
.lis-item {
width: 30%;
margin: 10rpx;
flex-shrink: 0;
position: relative;
background-color: rgb(246, 247, 251);
/* box-shadow: 0 0 5px rgba(0, 0, 0, .08); */
border-radius: 20rpx;
overflow: hidden;
}
.lis-img {
font-size: 70rpx;
border-radius: 20rpx;
margin: 30rpx auto;
overflow: hidden;
text-align: center;
}
.lis-title {
text-align: center;
font-size: 30rpx;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
margin-bottom: 30rpx;
}
</style>