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,所以此处默认给了值为20
  const 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()添加对应的@keyframes
  document.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>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业毕设-在线商城系统

1 项目介绍 在线商城系统&#xff0c;后端java语言&#xff0c;springboot&#xff0c;SSM框架。前端thymeleaf&#xff0c;前后端不分离。本项目已经隐去作者信息&#xff0c;所有代码文件均没有创建人和创建时间&#xff0c;可以放心使用。 系统用户分为两类&#xff0c;管理…

Shopee菲律宾本土店允许中途无理由退货,如何应对退货后库存混乱问题?

Shopee菲律宾本土店最近实施了一项新政策&#xff0c;自2024年6月10日起&#xff0c;允许买家在商品仍在运输途中申请退货与退款&#xff0c;此即“在途退货/退款”功能&#xff0c;主要的目的是为了提升买家的购物体验&#xff0c;增强市场竞争力。 图源&#xff1a;Shopee菲律…

关于Panabit在资产平台中类型划分问题

现场同事问了一个问题&#xff1a;Panabit能不能当做CentOS接入&#xff1f; 我第一反应是&#xff1a;Panabit是个什么鬼&#xff1f;为啥要混编接入&#xff1f;后期维护都是事啊。所以&#xff0c;我就想回答&#xff1a;不能&#xff01; 但是&#xff0c;最好要给出一个…

立讯精密:“果链一哥”怎么摆脱依赖症

AI手机创新赋能&#xff0c;隔岸苹果股价走出历史新高&#xff0c;消费电子有望迎来复苏&#xff1f; 这里我们聊聊苹果产业链代工龙头——立讯精密 作为早早入场的代工企业&#xff0c;立讯精密曾经吃足“果链”红利&#xff0c;如今摆在它面前的是增长、毛利、安全等难题。 …

Linux-PXE批量安装

一、部署 PXE 远程安装服务 在大规模的 Linux 应用环境中&#xff0c;如 Web 群集、分布式计算等&#xff0c;服务器往往并不配备光驱设备&#xff0c;在这种情况下&#xff0c;如何为数十乃至上百台服务器裸机快速安装系统呢&#xff1f;传统的 USB光驱、移动硬盘等安装方法显…

深度解析“科技信贷”:构建科技支行的五维模型

科技信贷是指金融机构为支持科技创新、技术改造和设备更新等领域提供的专项信贷服务&#xff0c;旨在促进科技企业的发展和技术的进步。科技信贷在推动科技企业和创新项目发展方面具有重要作用&#xff0c;其特点在于提供定制化的金融支持&#xff0c;以满足科技创新链条中的融…

【C语言】扫雷游戏

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

深信服科技:2023网络钓鱼趋势分析报告

随着互联网的快速发展和广泛应用&#xff0c;网络钓鱼活动带来的安全隐患愈演愈烈。因应威胁发展&#xff0c;我 们编撰了此份分析报告&#xff0c;旨在全面了解其发展态势&#xff0c;并提醒相关部门、企业和公众加强防范。 在本报告中&#xff0c;我们将详细梳理网络钓鱼的近…

成都爱尔周进院长提醒毕业生摘镜,术式如何挑

高考完迎来一个悠长假期&#xff0c;考后放松的同时&#xff0c;也有不少同学开始“准备”。 为奔赴梦想&#xff0c;为了理想的专业和学校&#xff0c;不少人决定摘镜。 不少专业有视力要求&#xff0c;且不同专业方向的要求各有不同。我们先来看看有视力要求的专业有哪些&am…

macOS聚集搜索功能开启与关闭

按下command空格弹出 使用搜索 关闭搜索 sudo mdutil -a -i off 启用搜索 sudo mdutil -a -i on

GLib库对核心应用的支持

代码&#xff1a; /** main.c** Created on: 2024-6-19* Author: root*/#include <glib.h> // 包含GLib函数库 static GMutex *mutex NULL; static gboolean t1_end FALSE; // 用于结束线程1的标志 static gboolean t2_end FALSE; // 用于结束线程…

最新版首发 | 手把手教你安装 Vivado2024.1(附安装包)

Q&#xff1a;Vivado出2024版了&#xff01;不知迪普微有没有对应的安装包呢&#xff1f; A&#xff1a;有的&#xff01;回复“Vivado2024.1”即可获得相应安装包哦~ Q&#xff1a;好哒~但是我不会安装&#xff0c;可否安排一期安装教程&#xff1f; A&#xff1a;立马安排&…

网抑云特殊版,登录即永久

前言 今天分享一款特殊版本的音乐软件&#xff0c;相信大家在听网抑云的时候会有两大烦恼&#xff0c; 一是歌曲需要开通VIP才可以收听&#xff0c;不管怎么说也是国内厂商普遍操作 但是第二种烦恼你万万想不到的是&#xff0c;开通了会员后&#xff0c;惊奇的发现&#xff…

数据结构---二叉树的性质总结

第i层上的节点数 证明: 二叉树的最大节点数 证明: 第一层对应2^0个节点, 累加得到 这是一个等比数列 求和公式: 那么这里的n指的是一共有多少个相加 根据从b到a一共有b-a1个可推出 有(k-1)-01个相加 那么结果为: 叶节点与度为2的节点关系 证明: 假设二叉树的总节点数为 NNN…

SSM图书借阅管理系统-计算机毕业设计源码06780

摘 要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在图书馆的要求下&#xff0c;开发一款整体式结构的图书借阅管理系统&a…

文献阅读:SpaceX:空间转录组学的基因共表达网络估计

文献介绍 「文献题目」 SpaceX: gene co-expression network estimation for spatial transcriptomics 「研究团队」 Veerabhadran Baladandayuthapani&#xff08;美国密歇根大学&#xff09;、Xiang Zhou&#xff08;美国密歇根大学&#xff09; 「发表时间」 2022-09-30 「…

【Redis】基于Redission实现分布式锁(代码实现)

目录 基于Redission实现分布式锁解决商品秒杀超卖的场景&#xff1a; 1.引入依赖&#xff1a; 2.加上redis的配置&#xff1a; 3.添加配置类&#xff1a; 4.编写代码实现&#xff1a; 5.模拟服务器分布式集群的情况&#xff1a; 1.右键点击Copy Configuration 2.点击Modi…

智慧路灯:照亮未来城市的智慧之光

智慧路灯&#xff0c;顾名思义&#xff0c;是在传统路灯基础上集成物联网、大数据、云计算、人工智能等现代信息技术的新型照明系统。它不仅提供节能高效的照明服务&#xff0c;更成为城市信息采集、传输、发布的载体&#xff0c;以及多种增值服务的平台。 核心功能与技术创新 …

Cookie-SameSite属性 前端请求不带cookie的问题解决方案

最近遇到了前端请求后端不带cookie的问题&#xff0c; 请求时header里面就是没有cookie 查看响应应该是这个问题 SameSite是一个cookie属性&#xff0c;用于控制浏览器是否在跨站点请求中发送cookie。它有三个可能的值&#xff1a; 1. Strict&#xff08;严格模式&#xff09…

LUA移植到STM32F4,移植REPL,通过RTT Viewer交互

概述 站内移植LUA多数是使用C函数调用LUA&#xff0c;并没有移植REPL交互端口 本文将REPL也移植进去&#xff0c;做了简单的适配 LUA源码使用标准C库函数&#xff0c;如fgets&#xff0c;fwrite等&#xff0c;在嵌入式环境中要使用fgets&#xff0c;fwrite等C库函数&#xff…