tnblog
首页
视频
资源
登录
什么时候才能领悟,取之越多失之越多
排名
5
文章
229
粉丝
15
评论
7
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

vue实现数字动态翻牌的效果(开箱即用)。vue实现数据滚动

4758人阅读 2023/3/11 10:56 总访问:1167661 评论:0 收藏:0 手机
分类: 前端

代码如下

直接复制进去就可以用了

  1. <!--
  2. * @Author: mat
  3. * @Date: 2019-12-04 14:56:07
  4. * @LastEditTime: 2019-12-04 16:31:52
  5. * @LastEditors: Please set LastEditors
  6. * @Description: 实现数字翻牌动态效果,css 属性 writing-mode: vertical-lr,使数字竖直排版,
  7. 2d移动 transform: translate(-50%, -40%); y值控制移动至哪个数字,transition
  8. 控制transform属性有动画效果
  9. -->
  10. <template>
  11. <div class="chartNum">
  12. <div class="box-item">
  13. <li :class="{ 'number-item': !isNaN(item), 'mark-item': isNaN(item) }" v-for="(item, index) in orderNum" :key="index">
  14. <span v-if="!isNaN(item)">
  15. <i ref="numberItem">0123456789</i>
  16. </span>
  17. <span class="comma" v-else>{{ item }}</span>
  18. </li>
  19. </div>
  20. </div>
  21. </template>
  22. <script>
  23. export default {
  24. data() {
  25. return {
  26. orderNum: ['0', '0', '0', '0', '0', '0', '0', '0'], // 默认订单总数
  27. }
  28. },
  29. mounted() {
  30. let val = 12654
  31. setInterval(() => {
  32. this.toOrderNum(val) // 这里输入数字即可调用
  33. val = val + 10
  34. }, 1000);
  35. },
  36. methods: {
  37. // 设置文字滚动
  38. setNumberTransform() {
  39. const numberItems = this.$refs.numberItem // 拿到数字的ref,计算元素数量
  40. const numberArr = this.orderNum.filter(item => !isNaN(item))
  41. // 结合CSS 对数字字符进行滚动,显示订单数量
  42. for (let index = 0; index < numberItems.length; index++) {
  43. const elem = numberItems[index]
  44. elem.style.transform = `translate(-50%, -${numberArr[index] * 10}%)`
  45. }
  46. },
  47. // 处理总订单数字
  48. toOrderNum(num) {
  49. num = num.toString()
  50. // 把订单数变成字符串
  51. if (num.length < 8) {
  52. num = '0' + num // 如未满八位数,添加"0"补位
  53. this.toOrderNum(num) // 递归添加"0"补位
  54. } else if (num.length === 8) {
  55. // 订单数中加入逗号
  56. // num = num.slice(0, 2) + ',' + num.slice(2, 5) + ',' + num.slice(5, 8)
  57. this.orderNum = num.split('') // 将其便变成数据,渲染至滚动数组
  58. } else {
  59. // 订单总量数字超过八位显示异常
  60. this.$message.warning('总量数字过大')
  61. }
  62. this.setNumberTransform()
  63. },
  64. }
  65. }
  66. </script>
  67. <style scoped lang='scss'>
  68. /*订单总量滚动数字设置*/
  69. .box-item {
  70. position: relative;
  71. height: 100px;
  72. font-size: 54px;
  73. line-height: 41px;
  74. text-align: center;
  75. list-style: none;
  76. color: #2D7CFF;
  77. writing-mode: vertical-lr;
  78. text-orientation: upright;
  79. /*文字禁止编辑*/
  80. -moz-user-select: none;
  81. /*火狐*/
  82. -webkit-user-select: none;
  83. /*webkit浏览器*/
  84. -ms-user-select: none;
  85. /*IE10*/
  86. -khtml-user-select: none;
  87. /*早期浏览器*/
  88. user-select: none;
  89. /* overflow: hidden; */
  90. }
  91. /* 默认逗号设置 */
  92. .mark-item {
  93. width: 10px;
  94. height: 100px;
  95. margin-right: 5px;
  96. line-height: 10px;
  97. font-size: 48px;
  98. position: relative;
  99. &>span {
  100. position: absolute;
  101. width: 100%;
  102. bottom: 0;
  103. writing-mode: vertical-rl;
  104. text-orientation: upright;
  105. }
  106. }
  107. /*滚动数字设置*/
  108. .number-item {
  109. width: 41px;
  110. height: 75px;
  111. /* 背景图片 */
  112. background: url(/images/text-bg-blue.png) no-repeat center center;
  113. background-size: 100% 100%;
  114. // background: #ccc;
  115. list-style: none;
  116. margin-right: 5px;
  117. // background:rgba(250,250,250,1);
  118. border-radius: 4px;
  119. border: 1px solid rgba(221, 221, 221, 1);
  120. &>span {
  121. position: relative;
  122. display: inline-block;
  123. margin-right: 10px;
  124. width: 100%;
  125. height: 100%;
  126. writing-mode: vertical-rl;
  127. text-orientation: upright;
  128. overflow: hidden;
  129. &>i {
  130. font-style: normal;
  131. position: absolute;
  132. top: 11px;
  133. left: 50%;
  134. transform: translate(-50%, 0);
  135. transition: transform 1s ease-in-out;
  136. letter-spacing: 10px;
  137. }
  138. }
  139. }
  140. .number-item:last-child {
  141. margin-right: 0;
  142. }</style>

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

vue.js+Layer实现表格数据绑定与更新

一:使用Vue.js绑定好数据与更新事件 使用v-on绑定好事件,在事件里边直接把该行数据传递进去,在更新方法里边就可以直接...

vue.js 实现省市联动

HTML代码&lt;divid=&quot;pro_citys&quot;&gt; 省:&lt;selectid=&quot;provice&quot;v-on:change=&quot;prochange()&quo...

vue.js常见问题

一:花括号当做字符串显示的问题1:检查下绑定到vue.js的id是否重复,如果id重复了,就有可能存在这种问题,因为有可能把数...

vue.js常用指令

v-html可以把字符串当成一个html来渲染,而不是原样输出Html类似.net mvc中的@Html.Raw()方法&lt;divv-html=&quot;item.tit...

干货!div滚动到一定位置就固定他。vue中实现一侧滚动到底部就固定

尊重原创:转载请注名出处div滚动到一定位置就固定他,例如左边的内容很多,右边的内容很少,如果不处理滚动到一定位置后右...

vue.js常用指令,事件绑定等,vue过滤器解析状态过滤器多个参数。vue表格状态解析。vue解析类型,element ui解析类型,状态,el-tag

按照html的编码显示:v-html&lt;div class=&quot;font_info&quot; v-html=&quot;item.Content&quot;&gt;{{item.Content}}&l...

vue.js if用法

vue.js if可以做一些判断例如我们要把下面这个输出varvm=newVue({ el:&quot;#content&quot;, data:{ titles:[&quot;小明...

vue.js 学习日记第一章-安装vue开发环境

官网:https://cn.vuejs.org/v2/guide/ 这是一篇学习性文章,不定时更新,用来记录我学习vue.js的过程。 首先,是v...

vue.js 学习日记第二章-在vue中编写function及一些简单指令

官网:https://cn.vuejs.org/v2/guide/ vue.js 学习日记第一章:http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第三章-vue中的简单事件及事件修饰符

官网:https://cn.vuejs.org/v2/guide/ vue.js 学习日记第二章:http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第四章-vue中文本框数据获取与绑定及computed计算属性

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第三章: http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第五章-v-if和v-for指令的使用方式

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第四章: http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第六章-vue组件初步学习

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第五章: http://www.tnblog.net/18323015640/article/details/2...

vue.js学习日记第七章-搭建脚手架

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第六章: http://www.tnblog.net/18323015640/article/details/2...

vue实现好友选中效果

逛过vue官网肯定会发现一个有趣的指令“v-for”,相比与以前拼接html代码确实要上档次一点,而且减少了工作量,先看一波效...

js时间格式化vue.js时间格式化,带T 时间格式化

也可以借助moment库, 参考:https://www.tnblog.net/aojiancc2/article/details/8079moment库有点大,推荐可以使用day.js...
高山仰止,景行行止。