需求
列表数组里面有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>