您现在的位置是:首页 > Javascript
当前栏目
vue 里使用数字滚动插件 vue-count-to 时出现文本抖动?
2023-03-14 22:41:44 时间
问题
在使用组件 vue-count-to
时,数字是从 0 开始滚动的,就会导致这一块区域的宽度自动变化,导致一些不必要动的文字也跟着一起变化。
解决
我的解决方案是,一开始就计算出数字的位数,然后通过位数去固定数字的宽度,然后把数字跟单位分开,这样就能达到数字滚动不影响周围文本区域的变化。
代码实现
1、安装 vue-count-to
npm install vue-count-to -s
2、使用 vue-count-to
// 数字滚动 import CountTo from 'vue-count-to';
<div class="volume-count-unit" :numberDigits="num.toString().length"> <spanclass="volume-count"> <count-to :startVal='0' :endVal='num' :duration='3000'></count-to> </span> <span class="volume-unit">人次</span> </div> <script> export default { data() { return { num: 88888888 } }, components: { CountTo } } </script>
3、样式编写:我用了定位的方式定住单位,位数就单独处理,通过属性 numberDigits 知道位数控制宽度,这里有千分位就需要加逗号,所以需要处理一下逗号的宽度。
@import '@/assets/scss/utils.scss'; @import '@/assets/scss/mixin.scss'; .volume-count-unit { position: relative; padding-right: p2r(54); display: inline-block; // 位数处理 @include number-digits; .volume-count { font-size: p2r(64); font-weight: bold; line-height: p2r(64); ::v-deep span { font-family: DS-DIGIB; } } .volume-unit { position: absolute; bottom: p2r(8); right: 0; font-size: p2r(24); } }
编写 mixin.scss
// 位数处理器 @mixin number-digits { // 个、十、百、千、万、十万、百万、千万、亿 $number-arr: 1, 2, 3, 4, 5, 6, 7, 8, 9; @each $number in $number-arr { @if $number <= 3 { &[numberDigits="#{$number}"] { // 数字的宽度(32.6) + 逗号的宽度(11.5) + 单位宽度(54) width: p2r($number*32.6 + 54); } } @if $number > 3 and $number <= 6 { &[numberDigits="#{$number}"] { // 数字的宽度(32.6) + 逗号的宽度(11.5) + 单位宽度(54) width: p2r($number*32.6 + 11.5 + 54); } } @if $number > 6 and $number <= 9 { &[numberDigits="#{$number}"] { // 数字的宽度(32.6) + 逗号的宽度(11.5) + 单位宽度(54) width: p2r($number*32.6 + 2*11.5 + 54); } } } }
相关文章
- 鲜为人知但很有用的 HTML 属性
- 翻转再翻转!有意思的水平横向溢出滚动
- 自定义计数器小技巧!CSS 实现长按点赞累加动画
- 过五关!React高频面试题指南
- 软件开发中的十个认知偏差
- 不需要 JS!仅用 CSS 也能达到监听页面滚动的效果!
- 一文读懂TypeScript类型兼容性
- Vue 的响应式原则与双向数据绑定
- 快速掌握 TypeScript 新语法:Infer Extends
- JWT教你如何证明你是我的人!
- 一篇带给你 V8 GC 的实现
- 面试官:请使用JS完成一个LRU缓存?
- 通过可视化来学习JavaScript事件循环
- 新的跨域策略:使用 COOP、COEP 为浏览器创建更安全的环境
- 为什么有人说 vite 快,有人却说 vite 慢?
- 种草 Vue3 中几个好玩的插件和配置
- 超全面的前端工程化配置指南
- Vue 状态管理未来样子
- Volatile关键字能保证原子性么?
- 面试突击:SpringBoot 有几种读取配置文件的方法?