diff --git a/src/core/view/components/icon/index.vue b/src/core/view/components/icon/index.vue index 921f246a5fa2ecbd80abd79fdf91a8ce24678617..54a927b38225d173eb1fb0e27fc95752d7544286 100644 --- a/src/core/view/components/icon/index.vue +++ b/src/core/view/components/icon/index.vue @@ -28,9 +28,9 @@ export default { }, methods: { _converPx (value) { - if (/\d+[ur]px$/i.test(value)) { - value.replace(/\d+[ur]px$/i, text => { - return `${uni.upx2px(parseFloat(text))}px` + if (/^-?\d+[ur]px$/i.test(value)) { + return value.replace(/(^-?\d+)[ur]px$/i, (text, num) => { + return `${uni.upx2px(parseFloat(num))}px` }) // eslint-disable-next-line no-useless-escape } else if (/^-?[\d\.]+$/.test(value)) { diff --git a/src/core/view/mixins/animation.js b/src/core/view/mixins/animation.js index 7776b8f3eb3f01788cedb0525e8422eb76011937..9ae7baff0adc527f68b29c48bb9681d95fda7d60 100644 --- a/src/core/view/mixins/animation.js +++ b/src/core/view/mixins/animation.js @@ -1,7 +1,7 @@ function converPx (value) { - if (/\d+[ur]px$/i.test(value)) { - value.replace(/\d+[ur]px$/i, text => { - return `${uni.upx2px(parseFloat(text))}px` + if (/^-?\d+[ur]px$/i.test(value)) { + return value.replace(/(^-?\d+)[ur]px$/i, (text, num) => { + return `${uni.upx2px(parseFloat(num))}px` }) // eslint-disable-next-line no-useless-escape } else if (/^-?[\d\.]+$/.test(value)) { @@ -73,7 +73,9 @@ function startAnimation (context) { } } - animate() + setTimeout(() => { + animate() + }, 0) } export default {