|
@@ -1,6 +1,14 @@
|
|
|
-import { defineComponent, onMounted, reactive, ref, watch } from 'vue';
|
|
|
+import { defineComponent, reactive, ref, watch } from 'vue';
|
|
|
import styles from './index.module.less';
|
|
|
|
|
|
+const refAnimation = (callback: any) => {
|
|
|
+ requestAnimationFrame(() => {
|
|
|
+ requestAnimationFrame(() => {
|
|
|
+ callback();
|
|
|
+ });
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
export default defineComponent({
|
|
|
name: 'TheNoticeBar',
|
|
|
props: {
|
|
@@ -46,11 +54,7 @@ export default defineComponent({
|
|
|
notiData.time = setTimeout(() => {
|
|
|
notiData.contentStyle.transitionDuration = '0s';
|
|
|
notiData.contentStyle.transform = `translateX(${notiData.wrapWidth}px)`;
|
|
|
- requestAnimationFrame(() => {
|
|
|
- requestAnimationFrame(() => {
|
|
|
- startAnimate();
|
|
|
- });
|
|
|
- });
|
|
|
+ refAnimation(startAnimate);
|
|
|
}, 5 * 1000);
|
|
|
};
|
|
|
const stopAnimate = () => {
|
|
@@ -63,11 +67,10 @@ export default defineComponent({
|
|
|
watch(
|
|
|
() => props.isAnimation,
|
|
|
val => {
|
|
|
- console.log(props.isAnimation, 'animation');
|
|
|
if (val) {
|
|
|
- init();
|
|
|
+ refAnimation(init);
|
|
|
} else {
|
|
|
- stopAnimate();
|
|
|
+ refAnimation(stopAnimate);
|
|
|
}
|
|
|
}
|
|
|
);
|
|
@@ -75,8 +78,8 @@ export default defineComponent({
|
|
|
<div
|
|
|
ref={wrapRef}
|
|
|
class={[styles.wrap, props.isAnimation ? styles.isAnitaion : '']}
|
|
|
- onMouseenter={() => init()}
|
|
|
- onMouseleave={() => stopAnimate()}>
|
|
|
+ onMouseenter={() => !props.isAnimation && init()}
|
|
|
+ onMouseleave={() => !props.isAnimation && stopAnimate()}>
|
|
|
<div
|
|
|
ref={contentRef}
|
|
|
style={notiData.contentStyle}
|