我的编程空间,编程开发者的网络收藏夹
学习永远不晚

web开发中如何实现大屏数字滚动效果

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

web开发中如何实现大屏数字滚动效果

这篇文章主要介绍web开发中如何实现大屏数字滚动效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

大屏数字滚动效果来源于最近工作中一张大屏的UI图,该UI图上有一个模块需要有数字往上翻动的效果,以下是最终实现的效果:

web开发中如何实现大屏数字滚动效果 

思路

在实现此效果之前,我们先来捋一下思路,用思维导图来设计一下我们的实现步骤,如下:

web开发中如何实现大屏数字滚动效果 

初步实现

你可以审查元素,下载数字背景图片

web开发中如何实现大屏数字滚动效果

有了以上的设计流程,我们先来简单实现一下

html 结构

<div class="box">
  <p class="box-item">
    <span>1</span>
  </p>
</div>

关键 css

.box-item {
  position: relative;
  display: inline-block;
  width: 54px;
  height: 82px;
  
  background: url(./number-bg.png) no-repeat center center;
  background-size: 100% 100%;
  font-size: 62px;
  line-height: 82px;
  text-align: center;
}

实现以上代码后,它的效果将是下面这样的:

web开发中如何实现大屏数字滚动效果

思考:背景框中有了数字以后,我们现在来思考一下,背景框中的文字,一定是 0-9 之前的数字,要在不打乱以上 html 结构的前提下,如何让数字滚动起来呢?这个时候我们的魔爪就伸向了一个 CSS 属性: writing-mode ,下面是它属性的介绍:

  • horizontal-tb:默认值,表示水平排版,从上到下。

  • vertical-lr:表示垂直排版,从左到右。

  • vertical-rl:表示垂直排版,从右到左。

它的实时效果是像下面这样:

web开发中如何实现大屏数字滚动效果

根据以上的灵感,我们可以实现下面这样的效果:

web开发中如何实现大屏数字滚动效果

html 改动部分:

<p class="box-item">
  <span>0123456789</span>
</p>

css 改动部分:

.box-item {
  display: inline-block;
  width: 54px;
  height: 82px;
  background: url(./number-bg.png) no-repeat center center;
  background-size: 100% 100%;
  font-size: 62px;
  line-height: 82px;
  text-align: center;

  
  position: relative;
  writing-mode: vertical-lr;
  text-orientation: upright;
  
}

.box-item span {
  position: absolute;
  top: 10px;
  left: 50%;
  transform: translateX(-50%);
  letter-spacing: 10px;
}

计算滚动

如果我们想让数字滚动到 5 ,那么滚动的具体到底是多少?

答案是:向下滚动 -50%

那么其他的数字呢?

得益于我们特殊的实现方法,每一位数字的滚动距离有一个通用的公式:

transform: `translate(-50%,-${number * 10}%)`

有了以上公式,我们让数字滚动到 5 ,它的效果如下:

web开发中如何实现大屏数字滚动效果

css 改动部分:

.box-item span {
  position: absolute;
  top: 10px;
  left: 50%;
  transform: translate(-50%,-50%);
  letter-spacing: 10px;
}

滚动动画的实现

在知道了每一个数字具体的滚动距离后,我们来设计一下,让数字能够随机滚动起来:

web开发中如何实现大屏数字滚动效果 

以下是具体的随机滚动 js

代码:

setInterval(() => {
  let number = document.getElementById('Number')
  let random = getRandomNumber(0,10)
  number.style.transform = `translate(-50%, -${random * 10}%)`
}, 2000)
function getRandomNumber (min, max) {
  return Math.floor(Math.random() * (max - min + 1) + min)
}

至此,我们数字滚动效果已经初步实现了,在下一节中我们将会逐步完善此效果,以满足业务需求。

完善

在上一节中,我们初步完成了滚动的效果,这一节我们将根据最开始的思维导图来设计一个通用的 Vue 业务组件

接受参数

此组件只接受一个数字类型的参数,我们将它放在 Vue 组件的 props 中:

props: {
  number: {
    type: Number,
    default: 0
  }
}

补位

因为我们的业务需要,我们最大的位数是 8 位数字,所以定义一个常量:

const MAX_LEN = 8

假如传递的位数不足 8 位,我们需要对它进行补 0 的操作,补 0 完成以后,我们也需要把它转换成金额的格式

由于此部分代码较常见,为节省篇幅,就不展示代码,可自行书写相关js代码。

渲染

我们根据上面补位字符串,分隔成字符数组,在页面中进行渲染:

computeNumber:为字符数组,例如:['0','0',',','0','0','0',',','9','1','7']

html 部分代码:

<ul>
  <li
    :class="{'number-item': !isNaN(item) }"
    v-for="(item,index) in computeNumber"
    :key="index"
  >
    <span v-if="!isNaN(item)">
      <i ref="numberItem">0123456789</i>
    </span>
    <span v-else>{{item}}</span>
  </li>
</ul>

css 部分代码:

.number-item {
  width: 50px;
  background: url(./number-bg.png) no-repeat center center;
  background-size:100% 100%;
  & > span {
    position: relative;
    display: inline-block;
    margin-right: 10px;
    width: 100%;
    height: 100%;
    writing-mode: vertical-rl;
    text-orientation: upright;
    overflow: hidden;
    & > i {
      position: absolute;
      top: 0;
      left: 50%;
      transform: translate(-50%,0);
      transition: transform 0.5s ease-in-out;
      letter-spacing: 10px;
    }
  }
}

页面渲染效果:

web开发中如何实现大屏数字滚动效果 

数字随机增长,模拟轮询效果

页面渲染完毕后,我们来让数字滚动起来,设计如下两个方法,其中 increaseNumber 需要在 Vue 生命周期 mounted 函数中调用

// 定时增长数字
increaseNumber () {
  let self = this
  this.timer = setInterval(() => {
    self.newNumber = self.newNumber + getRandomNumber(1, 100)
    self.setNumberTransform()
  }, 3000)
},
// 设置每一位数字的偏移
setNumberTransform () {
  let numberItems = this.$refs.numberItem
  let numberArr = this.computeNumber.filter(item => !isNaN(item))
  for (let index = 0; index < numberItems.length; index++) {
    let elem = numberItems[index]
    elem.style.transform = `translate(-50%, -${numberArr[index] * 10}%)`
  }
}

最终实现效果:

web开发中如何实现大屏数字滚动效果

以上是“web开发中如何实现大屏数字滚动效果”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

web开发中如何实现大屏数字滚动效果

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript如何实现余额数字滚动效果

今天就跟大家聊聊有关JavaScript如何实现余额数字滚动效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.实现背景上周在一个完成任务领取红包的活动需求中,需要实现一个用户点击
2023-06-22

Qt如何实现字幕滚动效果

这篇文章主要介绍“Qt如何实现字幕滚动效果”,在日常操作中,相信很多人在Qt如何实现字幕滚动效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Qt如何实现字幕滚动效果”的疑惑有所帮助!接下来,请跟着小编一起来
2023-07-02

HTML如何实现滚动文字效果

小编给大家分享一下HTML如何实现滚动文字效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在HTML中,可以使用marquee标签实现滚动文字效果,该标签可以向
2023-06-15

js如何实现文字滚动的效果

这篇文章主要介绍“js如何实现文字滚动的效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“js如何实现文字滚动的效果”文章能帮助大家解决问题。1、取值:(1)writing-mode:horizon
2023-07-02

大数据报表中如何实现滚动的公告效果

小编今天带大家了解大数据报表中如何实现滚动的公告效果,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“大数据报表中如何实现滚动的公告效果
2023-06-04

Android开发中通过使用TextView实现一个字体滚动效果

这篇文章给大家介绍 Android开发中通过使用TextView实现一个字体滚动效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android TextView 字体滚动效果实例代码:package com.godi
2023-05-31

如何使用JavaScript实现字体左右滚动效果

随着社会的不断发展,前端开发技术也日益成熟。其中,JavaScript作为最主要的Web前端开发语言之一,拥有着丰富的扩展性和可操作性。在实际开发中,我们可以使用JavaScript来实现各种各样的动态效果,如字体左右滚动效果。本篇文章将详细介绍如何使用JavaScript实现字体左右滚动效果。一、html结构首先,我们需要在html中创建一个容器,用于显示我们要滚动的字体。h
2023-05-14

vue如何实现文字上下滚动跑马灯效果

Vue可以通过CSS动画和Vue的过渡效果来实现文字上下滚动的跑马灯效果。以下是一个示例代码:```vue{{ text }}
2023-08-08

uniapp中如何实现隐藏滚动条的效果

近年来,随着移动端应用和网站的普及,用户对于良好的用户体验有着越来越高的要求。其中一个重要的方面就是滚动效果的表现。然而,一些设计师和前端工程师可能会觉得页面滚动效果干扰了用户的视觉焦点,影响了用户体验,因此产生了一种隐藏滚动条的需求。本文将介绍在uniapp中如何实现隐藏滚动条的效果。一、使用CSS样式控制滚动条CSS通过设置overflow:hidden样式来达到隐藏滚动条
2023-05-14

web开发中如何实现浮动菜单

这篇文章主要介绍了web开发中如何实现浮动菜单,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码还可进一步精简,时间关系,这里先发上来大家再优化吧,菜单项自己再添一些。
2023-06-08

编程热搜

目录