index.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <template>
  2. <!-- 图片橱窗 -->
  3. <view class="diy-window" :style="{ background: itemStyle.background, padding: `${itemStyle.paddingTop}px ${itemStyle.paddingLeft}px` }">
  4. <!-- matrix -->
  5. <view v-if="itemStyle.layout > -1" class="data-list" :class="[`avg-sm-${itemStyle.layout}`]">
  6. <view v-for="(dataItem, index) in dataList" :key="index" class="data-item" :style="{ padding: `${itemStyle.paddingTop}px ${itemStyle.paddingLeft}px` }">
  7. <view class="item-image" @click="onLink(dataItem.link)">
  8. <image class="image" mode="widthFix" :src="dataItem.imgUrl"></image>
  9. </view>
  10. </view>
  11. </view>
  12. <!-- display -->
  13. <view v-else class="display">
  14. <view class="display-left" :style="{ padding: `${itemStyle.paddingTop}px ${itemStyle.paddingLeft}px` }">
  15. <image class="image" @click="onLink(dataItem.link)" :src="dataList[0].imgUrl"></image>
  16. </view>
  17. <view class="display-right">
  18. <view v-if="dataList.length >= 2 " class="display-right1" :style="{ padding: `${itemStyle.paddingTop}px ${itemStyle.paddingLeft}px` }">
  19. <image class="image" @click="onLink(dataItem.link)" :src="dataList[1].imgUrl"></image>
  20. </view>
  21. <view class="display-right2">
  22. <view v-if="dataList.length >= 3 " class="left" :style="{ padding: `${itemStyle.paddingTop}px ${itemStyle.paddingLeft}px` }">
  23. <image class="image" @click="onLink(dataItem.link)" :src="dataList[2].imgUrl"></image>
  24. </view>
  25. <view v-if="dataList.length >= 4 " class="right" :style="{ padding: `${itemStyle.paddingTop}px ${itemStyle.paddingLeft}px` }">
  26. <image class="image" @click="onLink(dataItem.link)" :src="dataList[3].imgUrl"></image>
  27. </view>
  28. </view>
  29. </view>
  30. </view>
  31. </view>
  32. </template>
  33. <script>
  34. import mixin from '../mixin'
  35. export default {
  36. name: "Window",
  37. /**
  38. * 组件的属性列表
  39. * 用于组件自定义设置
  40. */
  41. props: {
  42. itemIndex: String,
  43. itemStyle: Object,
  44. params: Object,
  45. dataList: Array
  46. },
  47. mixins: [mixin],
  48. /**
  49. * 组件的方法列表
  50. * 更新属性和数据的方法与更新页面数据的方法类似
  51. */
  52. methods: {
  53. }
  54. }
  55. </script>
  56. <style lang="scss" scoped>
  57. .diy-window .data-list::after {
  58. clear: both;
  59. content: " ";
  60. display: table;
  61. }
  62. .diy-window .data-list .data-item {
  63. float: left;
  64. box-sizing: border-box;
  65. }
  66. .diy-window .data-list .image {
  67. display: block;
  68. width: 100%;
  69. }
  70. /* 分列布局 */
  71. .diy-window .avg-sm-2>.data-item {
  72. width: 50%;
  73. }
  74. .diy-window .avg-sm-3>.data-item {
  75. width: 33.33333333%;
  76. }
  77. .diy-window .avg-sm-4>.data-item {
  78. width: 25%;
  79. }
  80. .diy-window .avg-sm-5>.data-item {
  81. width: 20%;
  82. }
  83. /* 橱窗样式 */
  84. .diy-window {
  85. box-sizing: border-box;
  86. }
  87. .diy-window .display {
  88. height: 0;
  89. width: 100%;
  90. margin: 0;
  91. padding-bottom: 50%;
  92. position: relative;
  93. box-sizing: border-box;
  94. }
  95. .diy-window .display .image {
  96. width: 100%;
  97. height: 100%;
  98. }
  99. .diy-window .display .display-left {
  100. width: 50%;
  101. height: 100%;
  102. position: absolute;
  103. top: 0;
  104. left: 0;
  105. box-sizing: border-box;
  106. }
  107. .diy-window .display .display-right {
  108. width: 50%;
  109. height: 100%;
  110. position: absolute;
  111. top: 0;
  112. left: 50%;
  113. box-sizing: border-box;
  114. }
  115. .diy-window .display .display-right1 {
  116. width: 100%;
  117. height: 50%;
  118. position: absolute;
  119. top: 0;
  120. box-sizing: border-box;
  121. left: 0;
  122. }
  123. .diy-window .display .display-right2 {
  124. width: 100%;
  125. height: 50%;
  126. position: absolute;
  127. top: 50%;
  128. left: 0;
  129. box-sizing: border-box;
  130. }
  131. .diy-window .display .display-right2 .left {
  132. width: 50%;
  133. height: 100%;
  134. position: absolute;
  135. top: 0;
  136. left: 0;
  137. box-sizing: border-box;
  138. }
  139. .diy-window .display .display-right2 .right {
  140. width: 50%;
  141. height: 100%;
  142. position: absolute;
  143. top: 0;
  144. left: 50%;
  145. box-sizing: border-box;
  146. }
  147. </style>