prize-barrage.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <template>
  2. <view>
  3. <view class="prize-news">
  4. <view class="prize-news-item" :style="{ animation: activeAnimation }">
  5. <view class="prize-news-item-one" v-for="(item, index) in barrageList" :key="index">
  6. <image class="img" :src="item.avatar" lazy-load mode="aspectFill"></image>
  7. <view class="title">
  8. <view class="name">恭喜</view>
  9. <view class="prize">{{ item.nickName }}</view>
  10. <view class="name">{{ item.type == 1 ? '刮出了' : '兑换了' }}</view>
  11. <view class="prize">{{ item.prizeInfo }}</view>
  12. </view>
  13. </view>
  14. </view>
  15. <view class="prize-news-item" :style="{ animation: activeAnimation }">
  16. <view class="prize-news-item-one" v-for="(item, index) in barrageList" :key="index">
  17. <image class="img" :src="item.avatar" lazy-load mode="aspectFill"></image>
  18. <view class="title">
  19. <view class="name">恭喜</view>
  20. <view class="prize">{{ item.nickName }}</view>
  21. <view class="name">{{ item.type == 1 ? '刮出了' : '兑换了' }}</view>
  22. <view class="prize">{{ item.prizeInfo }}</view>
  23. </view>
  24. </view>
  25. </view>
  26. </view>
  27. </view>
  28. </template>
  29. <script>
  30. export default {
  31. name: "prize-barrage",
  32. props: {
  33. barrageList: {
  34. type: Array,
  35. default: () => []
  36. },
  37. time: {
  38. type: [Number, String],
  39. default: 10
  40. },
  41. },
  42. data() {
  43. return {
  44. activeAnimation: "moveLeft 10s linear infinite normal"
  45. };
  46. },
  47. created() {
  48. this.setAnimation()
  49. },
  50. methods: {
  51. setAnimation() {
  52. let time = Math.ceil(this.barrageList.length / 5 * this.time)
  53. this.activeAnimation = `moveLeft ${ time }s linear infinite normal`
  54. }
  55. }
  56. }
  57. </script>
  58. <style lang="scss" scoped>
  59. .prize-news {
  60. display: flex;
  61. width: 100vw;
  62. height: 50rpx;
  63. margin-bottom: 12rpx;
  64. overflow: hidden;
  65. .prize-news-item {
  66. display: flex;
  67. height: 50rpx;
  68. .prize-news-item-one {
  69. display: flex;
  70. align-items: center;
  71. padding: 0 40rpx 0 4rpx;
  72. height: 50rpx;
  73. background: rgba(255, 255, 255, .5);
  74. border-radius: 25rpx;
  75. font-size: 24rpx;
  76. margin-right: 60rpx;
  77. .img {
  78. display: inline-block;
  79. width: 46rpx;
  80. height: 46rpx;
  81. vertical-align: middle;
  82. border-radius: 50%;
  83. }
  84. .title {
  85. display: flex;
  86. align-items: center;
  87. .name {
  88. white-space: nowrap;
  89. margin: 0 16rpx;
  90. }
  91. .prize {
  92. white-space: nowrap;
  93. color: #F27120;
  94. }
  95. }
  96. }
  97. }
  98. }
  99. </style>