ソースを参照

fix: barrage 小程序不展示问题处理

Ymm0008 3 年 前
コミット
2e509028cf

+ 1 - 0
.gitignore

@@ -4,6 +4,7 @@ node_modules
 /libs
 /libs
 /jd/upload.js
 /jd/upload.js
 yarn.lock
 yarn.lock
+pnpm-lock.yaml
 package-lock.json
 package-lock.json
 /cache
 /cache
 /src/nutui.ts
 /src/nutui.ts

+ 17 - 1
src/packages/__VUE/barrage/index.scss

@@ -6,7 +6,7 @@
   height: 100%;
   height: 100%;
   overflow: hidden;
   overflow: hidden;
   box-sizing: border-box;
   box-sizing: border-box;
-  background-color: #f7f8fa;
+  --move-distance: '300%';
   &__item {
   &__item {
     width: 100px;
     width: 100px;
     display: block;
     display: block;
@@ -25,6 +25,22 @@
       animation-timing-function: linear;
       animation-timing-function: linear;
       animation-play-state: running;
       animation-play-state: running;
     }
     }
+    @keyframes moving {
+      from {
+        transform: translateX(100%);
+      }
+      to {
+        transform: translateX(var(--move-distance));
+      }
+    }
+    @-webkit-keyframes moving {
+      from {
+        -webkit-transform: translateX(100%);
+      }
+      to {
+        transform: translateX(var(--move-distance));
+      }
+    }
   }
   }
 }
 }
 .nut-theme-dark {
 .nut-theme-dark {

+ 5 - 30
src/packages/__VUE/barrage/index.taro.vue

@@ -32,7 +32,7 @@ export default create({
     },
     },
     speeds: {
     speeds: {
       type: Number,
       type: Number,
-      default: 800
+      default: 2000
     },
     },
     rows: {
     rows: {
       type: Number,
       type: Number,
@@ -74,8 +74,6 @@ export default create({
         const list = document
         const list = document
           .getElementsByClassName('nut-barrage__slotBody' + classTime)[0]
           .getElementsByClassName('nut-barrage__slotBody' + classTime)[0]
           .getElementsByClassName('nut-barrage__item');
           .getElementsByClassName('nut-barrage__item');
-        console.log(list);
-
         let childrens = list?.[0]?.children || [];
         let childrens = list?.[0]?.children || [];
         danmuList.value = childrens;
         danmuList.value = childrens;
       }
       }
@@ -121,20 +119,16 @@ export default create({
 
 
     const runStep = () => {
     const runStep = () => {
       danmuList.value.forEach((item: any, index: number) => {
       danmuList.value.forEach((item: any, index: number) => {
-        if (typeof danmuList.value[index] == 'object') {
-          getNode(index);
-        } else {
-          getNode(index);
-        }
+        getNode(index);
       });
       });
     };
     };
-    const distance = ref('0');
+    // const distance = ref('0');
     let styleList: any[] = reactive([]);
     let styleList: any[] = reactive([]);
     const styleInfo = (index: number, nodeTop: string, width: number) => {
     const styleInfo = (index: number, nodeTop: string, width: number) => {
       let timeIndex = index - rows.value > 0 ? index - rows.value : 0;
       let timeIndex = index - rows.value > 0 ? index - rows.value : 0;
       let list = styleList;
       let list = styleList;
       let time = list[timeIndex] ? Number(list[timeIndex]['--time']) : 0;
       let time = list[timeIndex] ? Number(list[timeIndex]['--time']) : 0;
-      distance.value = '-' + (speeds / 1000) * 200 + '%';
+      // distance.value = '-' + (speeds / 1000) * 200 + '%';
 
 
       let obj = {
       let obj = {
         top: nodeTop,
         top: nodeTop,
@@ -152,26 +146,7 @@ export default create({
       }
       }
     };
     };
 
 
-    return { classTime, classes, danmuList, add, styleList, distance, danmuListSlots };
+    return { classTime, classes, danmuList, add, styleList, danmuListSlots };
   }
   }
 });
 });
 </script>
 </script>
-
-<style lang="scss">
-@keyframes moving {
-  from {
-    transform: translateX(100%);
-  }
-  to {
-    transform: translateX(v-bind('distance'));
-  }
-}
-@-webkit-keyframes moving {
-  from {
-    -webkit-transform: translateX(100%);
-  }
-  to {
-    transform: translateX(v-bind('distance'));
-  }
-}
-</style>

+ 11 - 30
src/packages/__VUE/barrage/index.vue

@@ -79,6 +79,7 @@ export default create({
         danmuList.value = dmList;
         danmuList.value = dmList;
       }
       }
       setTimeout(() => {
       setTimeout(() => {
+        dmBody.value?.style.setProperty('--move-distance', `-${danmuCWidth.value}px`);
         run();
         run();
       }, 300);
       }, 300);
     });
     });
@@ -116,12 +117,12 @@ export default create({
     const run = () => {
     const run = () => {
       clearInterval(timer);
       clearInterval(timer);
       timer = 0;
       timer = 0;
-      timer = setInterval(() => {
+      timer = setTimeout(() => {
         play();
         play();
         run();
         run();
       }, props.frequency);
       }, props.frequency);
     };
     };
-    const distance = ref('0');
+    // const distance = ref('0');
     const play = () => {
     const play = () => {
       if (!props.loop && index.value >= danmuList.value.length) {
       if (!props.loop && index.value >= danmuList.value.length) {
         return;
         return;
@@ -131,12 +132,6 @@ export default create({
 
 
       if (slotDefault && typeof danmuList.value[_index] == 'object') {
       if (slotDefault && typeof danmuList.value[_index] == 'object') {
         el = danmuList.value[_index];
         el = danmuList.value[_index];
-        if (el?.classList?.contains('nut-barrage__item')) {
-          el.classList.remove('nut-barrage__item');
-        }
-        if (el?.classList?.contains('move')) {
-          el.classList.remove('move');
-        }
         el?.classList?.add('nut-barrage__item');
         el?.classList?.add('nut-barrage__item');
       } else {
       } else {
         el.innerHTML = danmuList.value[_index] as string;
         el.innerHTML = danmuList.value[_index] as string;
@@ -159,11 +154,16 @@ export default create({
           el.style.width = width + 20 + 'px';
           el.style.width = width + 20 + 'px';
         }
         }
         // el.style.left = "-"+(_index % rows.value) + 'px';
         // el.style.left = "-"+(_index % rows.value) + 'px';
-        el.style.setProperty('--move-distance', `-${danmuCWidth.value}px`);
-        distance.value = '-' + (speeds / 1000) * 150 + '%';
+        // el.style.setProperty('--move-distance', `-${danmuCWidth.value}px`);
+        // distance.value = '-' + (speeds / 1000) * 150 + '%';
         el.dataset.index = `${_index}`;
         el.dataset.index = `${_index}`;
         if (slotDefault) {
         if (slotDefault) {
           index.value++;
           index.value++;
+          el.addEventListener('animationend', () => {
+            if (el?.classList?.contains('move')) {
+              el.classList.remove('move');
+            }
+          });
         } else {
         } else {
           el.addEventListener('animationend', () => {
           el.addEventListener('animationend', () => {
             dmContainer.value.removeChild(el);
             dmContainer.value.removeChild(el);
@@ -172,26 +172,7 @@ export default create({
         }
         }
       });
       });
     };
     };
-    return { classTime, classes, danmuList, dmBody, dmContainer, add, distance };
+    return { classTime, classes, danmuList, dmBody, dmContainer, add };
   }
   }
 });
 });
 </script>
 </script>
-
-<style lang="scss">
-@keyframes moving {
-  from {
-    transform: translateX(100%);
-  }
-  to {
-    transform: translateX(v-bind('distance'));
-  }
-}
-@-webkit-keyframes moving {
-  from {
-    -webkit-transform: translateX(100%);
-  }
-  to {
-    transform: translateX(v-bind('distance'));
-  }
-}
-</style>

ファイルの差分が大きいため隠しています
+ 0 - 18757
src/sites/mobile-taro/vue/pnpm-lock.yaml


+ 1 - 20
src/sites/mobile-taro/vue/src/business/pages/barrage/index.vue

@@ -4,15 +4,6 @@
     <nut-cell>
     <nut-cell>
       <nut-barrage ref="danmu" :danmu="list"></nut-barrage>
       <nut-barrage ref="danmu" :danmu="list"></nut-barrage>
     </nut-cell>
     </nut-cell>
-    <!-- <h2>slot 用法</h2>
-    <nut-cell>
-      <nut-barrage>
-        <span>aaa</span>
-        <span>bbb</span>
-        <span>ccc</span>
-        <span>ddd</span>
-      </nut-barrage>
-    </nut-cell> -->
     <div class="test">
     <div class="test">
       <button @click="addDanmu" class="add nut-button--primary">随机添加</button>
       <button @click="addDanmu" class="add nut-button--primary">随机添加</button>
     </div>
     </div>
@@ -26,7 +17,7 @@ export default {
   setup() {
   setup() {
     const inputVal = ref<any>('');
     const inputVal = ref<any>('');
     const danmu = ref<any>(null);
     const danmu = ref<any>(null);
-    let list = ref(['画美不看画美不看画美不看画美不看', '不明觉厉', '喜大普奔', '男默女泪', '累觉不爱', '爷青结']);
+    let list = ref(['画美不看', '不明觉厉', '喜大普奔', '男默女泪', '累觉不爱', '爷青结']);
     function addDanmu() {
     function addDanmu() {
       let n = Math.random();
       let n = Math.random();
       danmu.value.add('随机——' + String(n).substr(2, 10));
       danmu.value.add('随机——' + String(n).substr(2, 10));
@@ -47,14 +38,4 @@ export default {
   padding: 20px 0;
   padding: 20px 0;
   height: 150px;
   height: 150px;
 }
 }
-
-.test {
-  .add {
-    display: block;
-    padding: 5px 30px;
-    margin: 20px auto;
-    border-radius: 15px;
-    font-size: 12px;
-  }
-}
 </style>
 </style>