son5.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <template>
  2. <div class="son5">
  3. <div class="sonBj1"></div>
  4. <div
  5. class="rowBox"
  6. v-for="item in data"
  7. :key="item.id"
  8. :class="{ noPad: item.pad, centenAc: item.centen }"
  9. >
  10. <div
  11. class="rowinfo"
  12. :class="{ move: item.move }"
  13. @click="toInfo(item.id)"
  14. :style="`width: ${item.ww};`"
  15. >
  16. <img
  17. :style="`height: ${item.hh};`"
  18. :src="require(`@/assets/img/zhanpin/${item.id}.png`)"
  19. alt=""
  20. />
  21. <p>{{ item.name }}</p>
  22. </div>
  23. </div>
  24. </div>
  25. </template>
  26. <script>
  27. export default {
  28. name: "son5",
  29. components: {},
  30. props: {
  31. scrool: {
  32. type: Number,
  33. default: 0,
  34. },
  35. },
  36. data() {
  37. //这里存放数据
  38. return {
  39. data: [],
  40. };
  41. },
  42. //监听属性 类似于data概念
  43. computed: {},
  44. //监控data中的数据变化
  45. watch: {
  46. scrool(val) {
  47. this.data.forEach((v) => {
  48. if (v.move) return;
  49. else if (val > v.moveNum) v.move = true;
  50. });
  51. },
  52. },
  53. //方法集合
  54. methods: {
  55. toInfo(id) {
  56. window.lodingGoods = false;
  57. this.$router.push(`/info/${id}`);
  58. },
  59. },
  60. //生命周期 - 创建完成(可以访问当前this实例)
  61. created() {},
  62. //生命周期 - 挂载完成(可以访问DOM元素)
  63. mounted() {},
  64. beforeCreate() {}, //生命周期 - 创建之前
  65. beforeMount() {}, //生命周期 - 挂载之前
  66. beforeUpdate() {}, //生命周期 - 更新之前
  67. updated() {}, //生命周期 - 更新之后
  68. beforeDestroy() {}, //生命周期 - 销毁之前
  69. destroyed() {}, //生命周期 - 销毁完成
  70. activated() {
  71. if (window.lodingGoods) {
  72. this.data = [
  73. {
  74. id: 25,
  75. name: "清鹤顶骨嘴犀角杆竹节形鸦片烟枪",
  76. ww: "200px",
  77. hh: "43px",
  78. move: false,
  79. },
  80. {
  81. id: 26,
  82. name: "清玉嘴竹杆包铜“光庭写”款瓷斗鸦片烟枪",
  83. ww: "184px",
  84. hh: "60px",
  85. move: false,
  86. },
  87. {
  88. id: 27,
  89. name: "清玉嘴铜杆“庚午夏”款瓷斗鸦片烟枪",
  90. ww: "207px",
  91. hh: "45px",
  92. move: false,
  93. },
  94. {
  95. id: 28,
  96. name: "清玻璃罩铜底座青花菊花纹瓷鸦片烟灯",
  97. ww: "118px",
  98. hh: "237px",
  99. move: false,
  100. },
  101. {
  102. id: 29,
  103. name: "清玻璃罩富贵寿考花鸟纹铜鸦片烟灯",
  104. ww: "128px",
  105. hh: "231px",
  106. move: false,
  107. },
  108. {
  109. id: 30,
  110. name: "19世纪掐丝洋花卉纹铜胎珐琅木底盖鸦片烟具",
  111. ww: "179px",
  112. hh: "107px",
  113. move: false,
  114. },
  115. {
  116. id: 31,
  117. name: "清代铜鸦片烟具",
  118. ww: "152px",
  119. hh: "120px",
  120. move: false,
  121. },
  122. {
  123. id: 32,
  124. name: "清佚名画家绘吸食鸦片图通草纸水彩画",
  125. ww: "233px",
  126. hh: "183px",
  127. pad: true,
  128. move: false,
  129. },
  130. {
  131. id: 33,
  132. name: "19世纪吸食鸦片的中国人印刷铜版画",
  133. ww: "237px",
  134. hh: "208px",
  135. pad: true,
  136. move: false,
  137. },
  138. {
  139. id: 34,
  140. name: "1850年吸食鸦片的中国人彩色印刷铜版画",
  141. ww: "251px",
  142. hh: "226px",
  143. pad: true,
  144. move: false,
  145. },
  146. {
  147. id: 35,
  148. name: "19世纪鸦片危害漫画",
  149. ww: "227px",
  150. hh: "316px",
  151. pad: true,
  152. centen: true,
  153. move: false,
  154. },
  155. {
  156. id: 36,
  157. name: "1922年陈乐琴愁城十二景四条屏",
  158. ww: "100%",
  159. hh: "auto",
  160. pad: true,
  161. move: false,
  162. },
  163. ];
  164. this.$nextTick(() => {
  165. setTimeout(() => {
  166. let doms = document.querySelectorAll(".rowinfo");
  167. let temp = 0;
  168. doms.forEach((v, i) => {
  169. if (i === 0) temp = v.getBoundingClientRect().top / 2;
  170. this.data[i].moveNum = v.getBoundingClientRect().top - temp - 100;
  171. });
  172. }, 100);
  173. });
  174. }
  175. }, //如果页面有keep-alive缓存功能,这个函数会触发
  176. };
  177. </script>
  178. <style lang='less' scoped>
  179. .son5 {
  180. .rowBox {
  181. padding: 0 24px;
  182. margin-bottom: 50px;
  183. display: flex;
  184. .rowinfo {
  185. opacity: 0;
  186. transition: all 1s ease-out;
  187. transform: translateX(-400px);
  188. & > img {
  189. width: 100%;
  190. }
  191. & > p {
  192. color: #ffffff;
  193. font-size: 16px;
  194. text-align: center;
  195. width: 100%;
  196. padding: 10px;
  197. line-height: 24px;
  198. }
  199. }
  200. .move {
  201. opacity: 1;
  202. transform: translateX(0px) !important;
  203. }
  204. &:nth-of-type(2n + 1) {
  205. justify-content: flex-end;
  206. .rowinfo {
  207. transform: translateX(400px);
  208. }
  209. }
  210. }
  211. .noPad {
  212. padding: 0;
  213. }
  214. .centenAc {
  215. justify-content: center !important;
  216. }
  217. }
  218. </style>