shaogen1995 3 سال پیش
والد
کامیت
e877226f2e
2فایلهای تغییر یافته به همراه131 افزوده شده و 46 حذف شده
  1. 116 42
      src/components/son2.vue
  2. 15 4
      src/views/Home.vue

+ 116 - 42
src/components/son2.vue

@@ -1,8 +1,18 @@
 <template>
   <div class="son2">
     <div class="sonBj1"></div>
-    <div class="rowBox" v-for="item in data" :key="item.id" :class="{noPad:item.pad}">
-      <div class="row" @click="toInfo(item.id)" :style="`width: ${item.ww};`">
+    <div
+      class="rowBox"
+      v-for="item in data"
+      :key="item.id"
+      :class="{ noPad: item.pad }"
+    >
+      <div
+        class="rowinfo"
+        :class="{ move: item.move }"
+        @click="toInfo(item.id)"
+        :style="`width: ${item.ww};`"
+      >
         <img
           :style="`height: ${item.hh};`"
           :src="require(`@/assets/img/zhanpin/${item.id}.png`)"
@@ -18,51 +28,35 @@
 export default {
   name: "son2",
   components: {},
+  props: {
+    scrool: {
+      type: Number,
+      default: 0,
+    },
+  },
   data() {
     //这里存放数据
     return {
-      data: [
-        {
-          id: 1,
-          name: "清“乾隆”款珐琅蓝彩十三行通景画瓷碗",
-          ww: "170px",
-          hh: "79px",
-        },
-        {
-          id: 2,
-          name: "清光绪二十三年广彩十三行四方瓷瓶",
-          ww: "244px",
-          hh: "131px",
-        },
-        { id: 3, name: "清道光广彩人物故事纹瓷碗", ww: "169px", hh: "80px" },
-        { id: 4, name: "19世纪镀金人物铜座钟", ww: "132px", hh: "194px" },
-        { id: 5, name: "19世纪法国铜鎏金配烛台座钟", ww: "167px", hh: "112px"},
-        {
-          id: 6,
-          name: "19世纪英国皇家定制珐琅彩纹章纹陶茶叶罐",
-          ww: "135px",
-          hh: "191px",
-        },
-        {
-          id: 7,
-          name: "19世纪佚名画家绘茶叶制作组图通草水彩画",
-          ww: "242px",
-          hh: "175px",
-          pad:true 
-        },
-        { id: 8, name: "清“宝丰银局”五十两银锭", ww: "163px", hh: "114px" },
-      ],
+      data: [],
+      scroolSon: 0,
     };
   },
   //监听属性 类似于data概念
   computed: {},
   //监控data中的数据变化
-  watch: {},
+  watch: {
+    scrool(val) {
+      this.data.forEach((v) => {
+        if (v.move) return;
+        else if (val > v.moveNum) v.move = true;
+      });
+    },
+  },
   //方法集合
   methods: {
-    toInfo(id){
-      this.$router.push(`/info/${id}`)
-    }
+    toInfo(id) {
+      this.$router.push(`/info/${id}`);
+    },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
@@ -74,7 +68,77 @@ export default {
   updated() {}, //生命周期 - 更新之后
   beforeDestroy() {}, //生命周期 - 销毁之前
   destroyed() {}, //生命周期 - 销毁完成
-  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
+  activated() {
+    this.data = [
+      {
+        id: 1,
+        name: "清“乾隆”款珐琅蓝彩十三行通景画瓷碗",
+        ww: "170px",
+        hh: "79px",
+        move: false,
+      },
+      {
+        id: 2,
+        name: "清光绪二十三年广彩十三行四方瓷瓶",
+        ww: "244px",
+        hh: "131px",
+        move: false,
+      },
+      {
+        id: 3,
+        name: "清道光广彩人物故事纹瓷碗",
+        ww: "169px",
+        hh: "80px",
+        move: false,
+      },
+      {
+        id: 4,
+        name: "19世纪镀金人物铜座钟",
+        ww: "132px",
+        hh: "194px",
+        move: false,
+      },
+      {
+        id: 5,
+        name: "19世纪法国铜鎏金配烛台座钟",
+        ww: "167px",
+        hh: "112px",
+        move: false,
+      },
+      {
+        id: 6,
+        name: "19世纪英国皇家定制珐琅彩纹章纹陶茶叶罐",
+        ww: "135px",
+        hh: "191px",
+        move: false,
+      },
+      {
+        id: 7,
+        name: "19世纪佚名画家绘茶叶制作组图通草水彩画",
+        ww: "242px",
+        hh: "175px",
+        pad: true,
+        move: false,
+      },
+      {
+        id: 8,
+        name: "清“宝丰银局”五十两银锭",
+        ww: "163px",
+        hh: "114px",
+        move: false,
+      },
+    ];
+    this.$nextTick(() => {
+      setTimeout(() => {
+        let doms = document.querySelectorAll(".rowinfo");
+        let temp = 0;
+        doms.forEach((v, i) => {
+          if (i === 0) temp = v.getBoundingClientRect().top / 2;
+          this.data[i].moveNum = v.getBoundingClientRect().top - temp - 100;
+        });
+      }, 100);
+    });
+  }, //如果页面有keep-alive缓存功能,这个函数会触发
 };
 </script>
 <style lang='less' scoped>
@@ -83,7 +147,10 @@ export default {
     padding: 0 24px;
     margin-bottom: 50px;
     display: flex;
-    .row {
+    .rowinfo {
+      opacity: 0;
+      transition: all 1s ease-out;
+      transform: translateX(-400px);
       & > img {
         width: 100%;
       }
@@ -96,11 +163,18 @@ export default {
         line-height: 24px;
       }
     }
-    &:nth-of-type(2n+1){
-      justify-content: flex-end 
+    .move {
+      opacity: 1;
+      transform: translateX(0px) !important;
+    }
+    &:nth-of-type(2n + 1) {
+      justify-content: flex-end;
+      .rowinfo {
+        transform: translateX(400px);
+      }
     }
   }
-  .noPad{
+  .noPad {
     padding: 0;
   }
 }

+ 15 - 4
src/views/Home.vue

@@ -10,6 +10,7 @@
     <div class="main" :class="{ mainAc: myMenucShow }">
       <keep-alive>
         <component
+          :scrool="scrool"
           v-if="topImgInd !== 1 && topImgInd !== 8"
           :is="`Son${topImgInd}`"
         ></component>
@@ -72,6 +73,7 @@ export default {
       ],
       topImgInd: 1,
       // 内容动态组件的值
+      scrool: 0,
     };
   },
   //监听属性 类似于data概念
@@ -79,7 +81,7 @@ export default {
   //监控data中的数据变化
   watch: {
     topImgInd() {
-      window.scrollTo({ top: 0});
+      window.scrollTo({ top: 0 });
     },
   },
   //方法集合
@@ -87,14 +89,22 @@ export default {
     upInfo(id) {
       this.myMenucShow = false;
       this.topImgInd = id;
-      if (id === this.topImgInd)
-        window.scrollTo({ top: 0});
+      if (id === this.topImgInd) window.scrollTo({ top: 0 });
     },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
   //生命周期 - 挂载完成(可以访问DOM元素)
-  mounted() {},
+  mounted() {
+    // 监听是否元素进入页面
+    window.addEventListener("scroll", () => {
+      this.scrool =
+        document.documentElement.scrollTop ||
+        window.pageYOffset ||
+        document.body.scrollTop;
+      // console.log(this.scrool);
+    });
+  },
   beforeCreate() {}, //生命周期 - 创建之前
   beforeMount() {}, //生命周期 - 挂载之前
   beforeUpdate() {}, //生命周期 - 更新之前
@@ -116,6 +126,7 @@ export default {
     }
   }
   .main {
+    overflow-x: hidden;
     background: url("../assets/img/bg.jpg");
     background-size: cover;
     opacity: 1;