CSS实现文字上下滚动、间歇滚动和无限滚动

目录

  • 1、连续滚动
  • 2、间歇性向上滚动
  • 3、任意个数向上滚动

本文主要记录了如何实现文字上下滚动效果,实现主要就是用到了css3的两个属性: @framekeysanimation

1、连续滚动

请添加图片描述

<div class="scroll-continuous"><div class="content"><div class="item">1-12345dfgdfgdg6</div><div class="item">2-阿萨达dfgdfgdfgdfgdfgdfg</div><div class="item">3-aksfhaksfkasfh</div><div class="item">4-撒发顺丰大叔大叔大叔的</div><div class="item">5-撒打算大的撒十大啊大大撒是的啊大叔的a s s d</div></div>
</div><style>
.scroll-continuous {position: relative;width: 250px;height: 40px;overflow: hidden;border: 1px solid #4d0074;
}
@keyframes rowup {0% {transform: translateY(0);}25% {transform: translateY(-20px);}50% {transform: translateY(-40px);}75% {transform: translateY(-60px);}100% {transform: translateY(-80px);}}
.content {width: 100%;height: 100%;padding: 10px 0;animation: 10s rowup linear infinite normal;}.item {height: 20px;line-height: 20px;padding-left: 5px;color: #4d0074;text-overflow: ellipsis;overflow: hidden;word-break: break-all;white-space: nowrap;}
</style>

2、间歇性向上滚动

请添加图片描述
实现其实和连续滚动原理差不多,只不过加上了停留的动画贞配置。

<div class="scroll-intermittent"><div class="content"><div class="item">1-12345dfgdfgdg6</div><div class="item">2-阿萨达dfgdfgdfgdfgdfgdfg</div><div class="item">3-aksfhaksfkasfh</div><div class="item">4-撒发顺丰大叔大叔大叔的</div><div class="item">5-撒打算大的撒十大啊大大撒是的啊大叔的a s s d</div></div>
</div><style>
.scroll-intermittent {width: 250px;height: 20px;overflow: hidden;border: 1px solid #4d0074;
}@keyframes moveup {0% {transform: translateY(0px);}19% {transform: translateY(0px);}/* 两贞使用相同的偏移,达成停下展示效果,展示时长=两贞百分比差x总动画时差,即:19%x10s=1.9s */20% {transform: translateY(-20px);}39% {transform: translateY(-20px);}40% {transform: translateY(-40px);}59% {transform: translateY(-40px);}60% {transform: translateY(-60px);}79% {transform: translateY(-60px);}80% {transform: translateY(-80px);}99% {transform: translateY(-80px);}100% {transform: translateY(-100px);}
}
.content {animation: 10s moveup linear infinite normal;
}
.item {height: 20px;line-height: 20px;padding-left: 5px;color: #4d0074;text-overflow: ellipsis;overflow: hidden;word-break: break-all;white-space: nowrap;
}
</style>

3、任意个数向上滚动

在上述实现的间歇性滚动中,有一个限制就是滚动的条数是有限制的,比较从样式表的配置就可以看到写法比较固定,如果要实现任意个数翻滚,那么就需要借助js进行动态修改animation.
请添加图片描述
基于vue3实现如下:

<template><div class="scroll-wrap"><div class="content" ref="contentRef"><div v-for="item in scrollList" :key="item.id" class="item">{{ item.text }}</div></div></div>
</template><script setup>
import { onMounted, ref } from "vue";const scrollList = [{ text: "1-12345dfgdfgdg6", id: 1 },{ text: "2-阿萨达dfgdfgdfgdfgdfgdfg", id: 2 },{ text: "3-aksfhaksfkasfh", id: 3 },{ text: "4-撒发顺丰大叔大叔大叔的", id: 4 },{ text: "5- 撒打算大的撒十大啊大大撒是的啊大叔的a s s d", id: 5 },{ text: "6-aksfhk但是非是的发送到发送地方ashfkasfh", id: 6 },{ text: "7-akssfhk都非对方是的发送到发送地方ashfkasfh", id: 7 },{ text: "8-aksfsfh的发送到发送到发送kashfkasfh", id: 8 },{ text: "9-aksksfhk史蒂夫是的是的d sashfkasfh", id: 9 },{ text: "10-aksfhka啊大撒打算大是的shfkasfh", id: 10 },
];const contentRef = ref();// 动态计算animation
function calcAnimation(totalFrames = 10, stepDistance = 20) {const totalFrames = scrollList.length; // 滚动内容的数量const stepDistance = 20; // 滚动的距离,须和滚动项高度保持一致,例如:style中的.item的height:20px,所以此处默认给了值为20const duration = `${totalFrames * 2}s`; // 总滚动时间let keyframeItems = "";for (let i = 0; i <= totalFrames; i++) {const percent = Math.floor(i * (100 / totalFrames));const offset = -(i * stepDistance);if ((percent !== 0 && percent !== 100) || i === totalFrames) {keyframeItems += `${percent - 1}% { transform: translateY(${i === 1 ? 0 : offset + 20}px)}\n`;}keyframeItems += `${percent}% { transform: translateY(${offset}px); }\n`;}// 注意:动态修改vue样式的animation,要先通过insertRule()添加对应的@keyframesdocument.styleSheets[0].insertRule(`@keyframes moveup {${keyframeItems}}`, 0);contentRef.value.style.animation = `moveup ${duration} linear infinite normal`;
}onMounted(() => {calcAnimation();
});
</script><style scoped>
.scroll-wrap {position: relative;width: 250px;height: 20px;overflow: hidden;border: 1px solid #4d0074;
}
.item {height: 20px;padding-left: 5px;line-height: 20px;font-size: 12px;font-weight: 400;color: #4d0074;text-overflow: ellipsis;overflow: hidden;word-break: break-all;white-space: nowrap;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30511.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云PAI大模型评测最佳实践

作者&#xff1a;施晨、之用、南茵、求伯、一耘、临在 背景信息 内容简介 在大模型时代&#xff0c;随着模型效果的显著提升&#xff0c;模型评测的重要性日益凸显。科学、高效的模型评测&#xff0c;不仅能帮助开发者有效地衡量和对比不同模型的性能&#xff0c;更能指导他…

vue3前端对接后端的图片验证码

vue3前端对接后端的图片验证码 <template> <image :src"captchaUrl" alt"图片验证码" click"refreshCaptcha"></image> </template><script setup>import {ref} from "vue";import {useCounterStore} …

gitlab-cicd-k8s

k8s已经准备好 kubectl get node 创建cicdYaml文件 kubectl create namespace gitlab-cicd --dry-runclient --outputyaml >> gitlab-cicd.yaml kubectl apply -f gitlab-cicd.yaml 服务器和仓库在一起可用专有地址 使用 GitLab Runner 可以自动执行 GitLab CI/CD 管道…

计算机网络——网络层重要协议(IP)

网络层的作用&#xff1a;在复杂的网络环境中确定一个合适的路径 IP 协议&#xff08;Internet Protocol&#xff09; IP 数据报格式 4 位版本号&#xff1a;指定 IP 协议的版本&#xff0c;对于 IPV4 来说就是 44 位首部长度&#xff1a;用于表示 IP 首部的长度&#xff0c…

DAMA学习笔记(二)-数据治理

1.引言 数据治理&#xff08;Data Governance&#xff0c;DG&#xff09;的定义是在管理数据资产过程中行使权力和管控&#xff0c;包括计划、监控和实施。在所有组织中&#xff0c;无论是否有正式的数据治理职能&#xff0c;都需要对数据进行决策。建立了正式的数据治理规程及…

springboot集成积木报表,怎么将平台用户信息传递到积木报表

springboot集成积木报表后怎么将平台用户信息传递到积木报表 起因是因为需要研究在积木报表做数据筛选的时候需要拿到系统当前登录用户信息做筛选新的模块 起因是因为需要研究在积木报表做数据筛选的时候需要拿到系统当前登录用户信息做筛选 官网有详细介绍怎么集成进去的&…

Golang | Leetcode Golang题解之第168题Excel表列名称

题目&#xff1a; 题解&#xff1a; func convertToTitle(columnNumber int) string {ans : []byte{}for columnNumber > 0 {columnNumber--ans append(ans, Abyte(columnNumber%26))columnNumber / 26}for i, n : 0, len(ans); i < n/2; i {ans[i], ans[n-1-i] ans[n…

【项目管理】项目经理总体计划文档(word原件)

项目管理总体计划模板 1、项目基本信息 2、项目里程碑 3、项目干系人 4、项目团队组织架构管理 5、项目预算管理 6、项目项目任务计划管理 7、问题及风险管理 8、项目周报 9、项目相关要求 获取方式&#xff1a;本文末个人名片直接获取&#xff0c;或者进主页。 1、项目基本信…

深入理解Qt状态机的应用(二)

前文《深入理解Qt状态机的应用&#xff08;一&#xff09;》介绍了状态机的理论知识以及简单的状态机示例。在实际应用场景中&#xff0c;状态机往往会比较复杂&#xff1b;本文将详细介绍分组状态、历史状态、并行状态以及其他技术。 通过分组状态共享转换 还是以交通信号灯…

基于若依的ruoyi-nbcio流程管理系统增加所有任务功能(一)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

如何理解光学中的群速度和相速度。

我不太明白为什么书上要区分相速度和群速度&#xff0c;不管这个&#xff0c;我想看看这两个速度在真实周期函数上的影响是如何的。 首先计算&#xff0c;直接计算三角函数我不会&#xff0c;利用复数做&#xff0c;可以取的实部。其中&#xff0c;。。 这个公式说明了什么呢…

React@16.x(34)动画(中)

目录 3&#xff0c;SwitchTransition3.1&#xff0c;原理3.1.2&#xff0c;key3.1.2&#xff0c;mode 3.2&#xff0c;举例3.3&#xff0c;结合 animate.css 4&#xff0c;TransitionGroup4.1&#xff0c;其他属性4.1.2&#xff0c;appear4.1.2&#xff0c;component4.1.3&…

Qt Quick 教程(一)

文章目录 1.Qt Quick2.QML3.Day01 案例main.qml退出按钮&#xff0c;基于上面代码添加 4.使用Qt Design StudioQt Design Studio简介Qt Design Studio工具使用版本信息 1.Qt Quick Qt Quick 是一种现代的用户界面技术&#xff0c;将声明性用户界面设计和命令性编程逻辑分开。 …

前后端完整案例-简单模仿点点开黑抽奖

数据库 后台 源码&#xff1a;https://gitee.com/qfp17393120407/game 前台 源码&#xff1a; https://gitee.com/qfp17393120407/game-weeb vue项目打包 注意&#xff1a;打包时将IP改为自己公网IP npm run build公网页面 地址&#xff1a;点点模拟抽奖 进入页面抽奖…

不同表格式下的小文件治理方式(开源RC file/ORC/Text非事务表、事务表、Holodesk表格式..)

友情链接&#xff1a; 小文件治理系列之为什么会出现小文件问题&#xff0c;小文件过多问题的危害以及不同阶段下的小文件治理最佳解决手段 小文件过多的解决方法&#xff08;不同阶段下的治理手段&#xff0c;SQL端、存储端以及计算端&#xff09; 概览 在前两篇博文中&am…

自学鸿蒙HarmonyOS的ArkTS语言<一>基本语法

一、一个ArkTs的目录结构 二、一个页面的结构 A、装饰器 Entry 装饰器 : 标记组件为入口组件&#xff0c;一个页面由多个自定义组件组成&#xff0c;但是只能有一个组件被标记 Component : 自定义组件, 仅能装饰struct关键字声明的数据结构 State&#xff1a;组件中的状态变量…

python全栈开发《10.数据类型之初识列表类型》

1.什么是列表 其实在生活中&#xff0c;有很多种排队的现象。比如看电影要排队买票&#xff0c;上地铁的时候要排队安检。在生活中&#xff0c;排队的是人&#xff0c;为了统一做一件事&#xff0c;而排成队伍&#xff0c;逐个的去等待执行这个任务&#xff0c;每个人都是执行这…

平衡查找树(数据结构篇)

数据结构之平衡查找树 平衡查找树(AVL树) 概念&#xff1a; 为了防止因为插入删除而导致的树结构不平衡(通常我们删除节点总是对右子树的最小值节点替代操作&#xff0c;而不是交替的利用左子树的最大值节点替代&#xff0c;这就将导致左子树的平均深度大于右子树平均深度&a…

基于Java的高校校园点餐系统

开头语&#xff1a; 你好&#xff0c;我是计算机专业的学长&#xff0c;如果你对高校校园点餐系统感兴趣或有相关开发需求&#xff0c;欢迎联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;Eclipse、Tomcat 系统展示…

分布式用例执行

前言 这两天趁着有时间&#xff0c;我疯狂的码字了~~ 背景 我们公司是做人工智能平台的&#xff0c;什么是人工智能呢&#xff1f; 大数据 机器学习。大数据运行的基本就不快。机器学习算法运行起来也是慢的让人泪流满面。在我们的集群配置下&#xff0c;我使用一个 5M 的数…