实现原理:借助CSS3中animation动画以及原生JS克隆API
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>文字向上滚动效果title>
<style>
.marquee-view {
width: fit-content;
height: 300px;
background-color: #000;
overflow: hidden;
}
.row {
display: flex;
justify-content: space-between;
line-height: 1.05;
color: #ffffff;
padding: 15px;
cursor: pointer;
}
.marquee {
animation: move 5s linear infinite;
}
@keyframes move {
0% {
transform: translateY(0);
}
100% {
transform: translateY(-50%);
}
}
style>
head>
<body>
<div class="marquee-view">
<div class="marquee">
<div class="row">
<span>我是滚动文字span>
div>
<div class="row">
<span>我是滚动文字span>
div>
<div class="row">
<span>我是滚动文字span>
div>
<div class="row">
<span>我是滚动文字span>
div>
<div class="row">
<span>我是滚动文字span>
div>
<div class="row">
<span>我是滚动文字span>
div>
<div class="row">
<span>我是滚动文字span>
div>
div>
div>
body>
<script>
const marquee = document.querySelectorAll(".marquee-view .marquee");
marquee.forEach((item) => {
var rows = item.children;
Array.from(rows).forEach((row) => {
var clone = row.cloneNode(true);
item.appendChild(clone);
});
});
script>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
实现效果: