Appearance
第一种效果

html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文字和图片连续轮播</title>
<style>
* {
margin: 0;
padding: 0;
}
body{
text-align: center;
padding-top: 100px;
}
/*文字轮播*/
.c{
overflow: hidden;
border: 1px solid orange;
display: inline-block;
line-height: 40px;
}
.c.horizontal{
width: 500px;
}
.c.vertical{
height: 203px;
padding: 0 40px;
}
.sc{
animation: marquee 10s linear infinite;
display: inline-block;
white-space: nowrap;
}
.vertical .sc{
animation: marqueev 6s linear infinite;
}
.sc:hover{
animation-play-state: paused;
}
.c.horizontal .ss{
display: inline-block;
}
.ss{
color: #333;
}
@keyframes marquee {
0%{
transform: translate3d(0,0,0);
}
100%{
transform: translate3d(-50%,0,0);
}
}
@keyframes marqueev {
0%{
transform: translate3d(0,0,0);
}
100%{
transform: translate3d(0,-50%,0);
}
}
/*图片轮播*/
.tech-slideshow {
height: 200px;
max-width: 800px;
margin: 0 auto;
position: relative;
overflow: hidden;
transform: translate3d(0, 0, 0);
}
.tech-slideshow > div {
height: 200px;
width: 2526px;
background: url('./imgs/collage.jpg');
position: absolute;
top: 0;
left: 0;
height: 100%;
transform: translate3d(0, 0, 0);
}
.tech-slideshow .mover-1 {
animation: moveSlideshow 60s linear infinite;
}
.tech-slideshow .mover-2 {
opacity: 0;
transition: opacity 0.5s ease-out;
background-position: 0 -200px;
animation: moveSlideshow 20s linear infinite;
}
.tech-slideshow:hover .mover-2 {
opacity: 1;
}
@keyframes moveSlideshow {
100% {
transform: translateX(-66.6666%);
}
}
</style>
</head>
<body>
<div class="c horizontal"></div>
<br /><br/>
<br /><br/>
<div class="c vertical"></div>
<br /><br/>
<br /><br/>
<div class="tech-slideshow">
<div class="mover-1"></div>
<div class="mover-2"></div>
</div>
<script>
buildMarquee();
buildMarquee('vertical');
//horizontal vertical
function buildMarquee(direction='horizontal'){
var wrap = document.querySelector('.c.'+direction);
let text = `1111 本店所有商品全部白送; 2222 本店所有商品全部白送; 3333 本店所有商品全部白送;
4444 本店所有商品全部白送; 5555 本店所有商品全部白送;`;
if(direction == 'vertical'){
text = text.split(';').map(it => `<p class="ss-item">${it}</p>`).join('');
}
let ss = `<div class="ss">${text}</div>`;
wrap.innerHTML = `<div class="sc">${ss}${ss}</div>`;
}
</script>
</body>
</html>第二种效果

html
<!doctype html>
<html>
<head>
<title>LOOP</title>
<style>
@keyframes loop {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}
.box {
white-space: nowrap;
}
.scrollContent {
color: rebeccapurple;
width: 600px;
display: inline-block;
text-align: center;
animation: loop 3s linear infinite;
text-shadow: 600px 0 currentColor, 1200px 0 currentColor;
}
</style>
</head>
<body>
<div class="box">
<div class="scrollContent">
这是一段可以滚动的文本
</div>
</div>
</body>
</html>第三种效果

html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>文字图标节奏轮播</title>
<style>
*{
padding:0;margin:0;
}
li{
list-style:none;
}
body, html {
width: 100%;
height: 100%;
display: flex;
}
/*水平轮播*/
.horizontal {
--w: 300;
--speed: 3s;
width: 300px;
margin: auto;
height: 36px;
line-height: 36px;
font-size: 20px;
background: lightseagreen;
color: #fff;
overflow: hidden;
}
.horizontal ul {
display: flex;
flex-wrap: nowrap;
animation: move calc(var(--speed) * var(--s)) steps(var(--s)) infinite;
}
.horizontal ul li {
flex-shrink: 0;
width: 100%;
height: 100%;
box-sizing: border-box;
padding-left: 10px;
box-sizing: border-box;
white-space: nowrap;
cursor: pointer;
animation: liMove calc(var(--speed)) infinite;
}
@keyframes move {
0% {
transform: translate(0, 0);
}
100% {
transform: translate(calc(var(--s) * var(--w) * -1px), 0);
}
}
@keyframes liMove {
0% {
transform: translate(0, 0px);
}
80%,
100% {
transform: translate(calc(var(--w) * -1px), 0);
}
}
/*垂直轮播*/
.vertical {
--s: 6;
--h: 36;
--speed: 1s;
width: 300px;
margin: auto;
height: calc(var(--h) * 1px);
line-height: calc(var(--h) * 1px);
font-size: 20px;
background: lightseagreen;
color: #fff;
overflow: hidden;
}
.vertical ul {
display: flex;
flex-wrap: nowrap;
flex-direction: column;
animation: moveh calc(var(--speed) * var(--s)) steps(var(--s)) infinite;
}
.vertical ul li {
flex-shrink: 0;
width: 100%;
padding-left: 10px;
box-sizing: border-box;
white-space: nowrap;
cursor: pointer;
animation: liMoveh calc(var(--speed)) infinite;
}
@keyframes moveh {
0% {
transform: translate(0, 0);
}
100% {
transform: translate(0, calc(var(--s) * var(--h) * -1px));
}
}
@keyframes liMoveh {
0% {
transform: translate(0, 0);
}
80%,
100% {
transform: translate(0, calc(var(--h) * -1px));
}
}
/*图片轮播*/
:root {
--w: 400;
--speed: 1.5s;
}
.img-horizontal {
width: 400px;
margin: auto;
height: 240px;
line-height: 240px;
font-size: 20px;
background: #673ab7;
color: #fff;
overflow: hidden;
border: 2px solid #000;
}
.img-horizontal ul {
display: flex;
flex-wrap: nowrap;
animation: moveImg calc(var(--speed) * var(--s)) steps(var(--s)) infinite;
}
.img-horizontal ul li {
flex-shrink: 0;
width: 100%;
height: 100%;
box-sizing: border-box;
white-space: nowrap;
cursor: pointer;
animation: move1Img calc(var(--speed)) infinite;
}
.img-horizontal ul li img {
width: 100%;
height: 100%;
object-fit: cover;
}
@keyframes moveImg {
0% {
transform: translate(0, 0px);
}
100% {
transform: translate(calc(var(--s) * var(--w) * -1px), 0);
}
}
@keyframes move1Img {
0% {
transform: translate(0, 0px);
}
80%,
100% {
transform: translate(calc(var(--w) * -1px), 0);
}
}
</style>
</head>
<body>
<div class="g-container horizontal">
<ul style="--s: 6">
<li>Lorem ipsum 1111111</li>
<li>Lorem ipsum 2222222</li>
<li>Lorem ipsum 3333333</li>
<li>Lorem ipsum 4444444</li>
<li>Lorem ipsum 5555555</li>
<li>Lorem ipsum 6666666</li>
<!--末尾补一个首尾数据-->
<li>Lorem ipsum 1111111</li>
</ul>
</div>
<br/><br/><br/><br/>
<div class="g-container vertical">
<ul style="--s: 6">
<li>Lorem ipsum 1111111</li>
<li>Lorem ipsum 2222222</li>
<li>Lorem ipsum 3333333</li>
<li>Lorem ipsum 4444444</li>
<li>Lorem ipsum 5555555</li>
<li>Lorem ipsum 6666666</li>
<!--末尾补一个首尾数据-->
<li>Lorem ipsum 1111111</li>
</ul>
</div>
<br/><br/><br/><br/>
<div class="g-container img-horizontal">
<ul style="--s: 4">
<li>
<img src="https://www.keaitupian.cn/cjpic/frombd/2/253/1659552792/3869332496.jpg">
</li>
<li>
<img src="https://ts1.cn.mm.bing.net/th/id/R-C.57384e4c2dd256a755578f00845e60af?rik=uy9%2bvT4%2b7Rur%2fA&riu=http%3a%2f%2fimg06file.tooopen.com%2fimages%2f20171224%2ftooopen_sy_231021357463.jpg&ehk=whpCWn%2byPBvtGi1%2boY1sEBq%2frEUaP6w2N5bnBQsLWdo%3d&risl=&pid=ImgRaw&r=0">
</li>
<li>
<img src="https://ts1.cn.mm.bing.net/th/id/R-C.dcff9c5ac7f46a074e295dff94022f8d?rik=fZJqT2v%2bfwirAQ&riu=http%3a%2f%2fwww.08lr.cn%2fuploads%2fallimg%2f220402%2f1-1G0224640.jpg&ehk=YMOITyifNWuha6damsC2AnUoGNlayX2kSeYfH49Unzw%3d&risl=&pid=ImgRaw&r=0">
</li>
<li>
<img src="https://ts1.cn.mm.bing.net/th/id/R-C.bce643843f297a348a620b02dec5dd6c?rik=vGMu1xOGEt5sZQ&riu=http%3a%2f%2fimg-download.pchome.net%2fdownload%2f1k0%2fxd%2f2i%2fodbf7c-1xnq.jpg&ehk=fzIKhJf9OjdHZZd6RheQwC1fUk6Pq9AkQfOTIiyR%2bGk%3d&risl=&pid=ImgRaw&r=0">
</li>
<!--末尾补一个首尾数据-->
<li>
<img src="https://www.keaitupian.cn/cjpic/frombd/2/253/1659552792/3869332496.jpg">
</li>
</ul>
</div>
<script>
</script>
</body>
</html>图片跑马灯效果
容器固定大小

html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.page-content {
/* 重点:盒子宽度 600 */
width: 600px;
height: 150px;
border: 3px solid black;
overflow: hidden;
}
.page-content ul {
margin: 0;
padding: 0;
list-style: none;
display: flex;
height: 100%;
animation: move 7s linear infinite;
}
/* hover 暂停,不用可去掉 */
.page-content ul:hover {
animation-play-state: paused;
}
.page-content ul li {
height: 100%;
/* 重点:单个图片宽度 200,相当于默认不动可见 3 个 */
width: 200px;
flex-shrink: 0;
}
.page-content ul li img {
height: 100%;
width: 100%;
}
@keyframes move {
/* 为什么设置 -800px ?公式:主图张数 * 单个图片宽度(每轮主图只有 4 张,4 张照片为一个周期,如果需要轮播的主图为 7、8、9...张,都一样) */
100% {
transform: translateX(-800px);
}
}
</style>
</head>
<body>
<!-- 窗口 -->
<div class="page-content">
<!-- 轮播列表 -->
<ul>
<!-- 轮播主图 -->
<li><a href="#"><img src="https://img95.699pic.com/photo/60018/9224.jpg_wh860.jpg" alt=""></a></li>
<li><a href="#"><img src="https://img95.699pic.com/photo/50589/6658.jpg_wh860.jpg" alt=""></a></li>
<li><a href="#"><img src="https://img95.699pic.com/photo/50557/4242.jpg_wh860.jpg" alt=""></a></li>
<li><a href="#"><img src="https://img95.699pic.com/photo/32207/2141.jpg_wh860.jpg" alt=""></a></li>
<!-- 轮播完成防止留白 -->
<!-- 怎么确定尾部需要几张防止留白,3 张是怎么得出的?其实就是上面: 盒子宽度 / 单个图片宽度 = 一屏几张留白图 -->
<li><a href="#"><img src="https://img95.699pic.com/photo/60018/9224.jpg_wh860.jpg" alt=""></a></li>
<li><a href="#"><img src="https://img95.699pic.com/photo/50589/6658.jpg_wh860.jpg" alt=""></a></li>
<li><a href="#"><img src="https://img95.699pic.com/photo/50557/4242.jpg_wh860.jpg" alt=""></a></li>
</ul>
</div>
</body>
</html>容器不固定大小-向左滚动

html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
margin: 0;
padding: 0;
}
.page-content {
width: 100vw;
height: 264px; /* 根据大图的高度设置 */
overflow: hidden;
position: relative;
}
.page-content ul {
display: flex;
list-style: none;
padding: 0;
margin: 0;
animation: move 28s linear infinite; /* 动画时间根据需要调整 */
height: 100%;
}
.page-content ul:hover {
animation-play-state: paused;
}
.page-content ul li {
flex-shrink: 0;
margin-right: 20px; /* 图片之间的间隔 */
}
.page-content ul li.big img {
width: 480px;
height: 100%;
}
.page-content ul li.small img {
width: 400px;
height: 220px;
margin-top: 22px; /* 使小图垂直居中 */
}
@keyframes move {
100% {
transform: translateX(calc(-1 * (480px + 400px + 40px) * 4)); /* 计算总宽度:四组图片加四个间隔 */
}
}
</style>
</head>
<body>
<!-- 窗口 -->
<div class="page-content">
<!-- 轮播列表 -->
<ul>
<!-- 第一组轮播主图 -->
<li class="big"><a href="#"><img src="https://img95.699pic.com/photo/60018/9224.jpg_wh860.jpg" alt=""></a></li>
<li class="small"><a href="#"><img src="https://img95.699pic.com/photo/50589/6658.jpg_wh860.jpg" alt=""></a></li>
<li class="big"><a href="#"><img src="https://img95.699pic.com/photo/50557/4242.jpg_wh860.jpg" alt=""></a></li>
<li class="small"><a href="#"><img src="https://img95.699pic.com/photo/32207/2141.jpg_wh860.jpg" alt=""></a></li>
<li class="big"><a href="#"><img src="https://tse4-mm.cn.bing.net/th/id/OIP-C.nkWmM-lReaN8kH-ieXmZrQHaEo?rs=1&pid=ImgDetMain" alt=""></a></li>
<li class="small"><a href="#"><img src="https://tse1-mm.cn.bing.net/th/id/OIP-C.dIFgv5Jaess7oclRS7xg2wHaE8?rs=1&pid=ImgDetMain" alt=""></a></li>
<li class="big"><a href="#"><img src="https://ts1.cn.mm.bing.net/th/id/R-C.ad023f7f6aae59ba186c887db15ec1f2?rik=SfA%2f7i7toAeo7g&riu=http%3a%2f%2fseopic.699pic.com%2fphoto%2f40048%2f1294.jpg_wh1200.jpg&ehk=ouZBlYJahW2888FyhAEUMIsr022Nyy5RZjRgnLnt4cQ%3d&risl=&pid=ImgRaw&r=0" alt=""></a></li>
<li class="small"><a href="#"><img src="https://ts1.cn.mm.bing.net/th/id/R-C.a8d9a8c190775c75a6db79758094a432?rik=i%2bPnXghrI6uQ0Q&riu=http%3a%2f%2fwww.pptbz.com%2fpptpic%2fUploadFiles_6909%2f201211%2f2012111719275820.jpg&ehk=2vMwmCmogLLYwhMoFpnxFCA8hxoaiQONcuHMN0p66e4%3d&risl=&pid=ImgRaw&r=0" alt=""></a></li>
<!-- 复制第一组轮播主图以确保无缝滚动 -->
<li class="big"><a href="#"><img src="https://img95.699pic.com/photo/60018/9224.jpg_wh860.jpg" alt=""></a></li>
<li class="small"><a href="#"><img src="https://img95.699pic.com/photo/50589/6658.jpg_wh860.jpg" alt=""></a></li>
<li class="big"><a href="#"><img src="https://img95.699pic.com/photo/50557/4242.jpg_wh860.jpg" alt=""></a></li>
<li class="small"><a href="#"><img src="https://img95.699pic.com/photo/32207/2141.jpg_wh860.jpg" alt=""></a></li>
<li class="big"><a href="#"><img src="https://tse4-mm.cn.bing.net/th/id/OIP-C.nkWmM-lReaN8kH-ieXmZrQHaEo?rs=1&pid=ImgDetMain" alt=""></a></li>
<li class="small"><a href="#"><img src="https://tse1-mm.cn.bing.net/th/id/OIP-C.dIFgv5Jaess7oclRS7xg2wHaE8?rs=1&pid=ImgDetMain" alt=""></a></li>
<li class="big"><a href="#"><img src="https://ts1.cn.mm.bing.net/th/id/R-C.ad023f7f6aae59ba186c887db15ec1f2?rik=SfA%2f7i7toAeo7g&riu=http%3a%2f%2fseopic.699pic.com%2fphoto%2f40048%2f1294.jpg_wh1200.jpg&ehk=ouZBlYJahW2888FyhAEUMIsr022Nyy5RZjRgnLnt4cQ%3d&risl=&pid=ImgRaw&r=0" alt=""></a></li>
<li class="small"><a href="#"><img src="https://ts1.cn.mm.bing.net/th/id/R-C.a8d9a8c190775c75a6db79758094a432?rik=i%2bPnXghrI6uQ0Q&riu=http%3a%2f%2fwww.pptbz.com%2fpptpic%2fUploadFiles_6909%2f201211%2f2012111719275820.jpg&ehk=2vMwmCmogLLYwhMoFpnxFCA8hxoaiQONcuHMN0p66e4%3d&risl=&pid=ImgRaw&r=0" alt=""></a></li>
</ul>
</div>
</body>
</html>容器不固定大小-向右滚动

html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
margin: 0;
padding: 0;
}
.page-content {
width: 100vw;
height: 264px; /* 根据大图的高度设置 */
overflow: hidden;
position: relative;
}
.page-content ul {
display: flex;
list-style: none;
padding: 0;
margin: 0;
animation: moveRight 28s linear infinite; /* 动画时间根据需要调整 */
height: 100%;
position: absolute;
left: 0;
}
.page-content ul:hover {
animation-play-state: paused;
}
.page-content ul li {
flex-shrink: 0;
margin-right: 20px; /* 图片之间的间隔 */
}
.page-content ul li.big img {
width: 480px;
height: 100%;
}
.page-content ul li.small img {
width: 400px;
height: 220px;
margin-top: 22px; /* 使小图垂直居中 */
}
@keyframes moveRight {
0% {
transform: translateX(calc(-1 * (480px + 400px + 40px) * 4)); /* 计算总宽度:四组图片加四个间隔 */
}
100% {
transform: translateX(0); /* 初始位置在屏幕内 */
}
}
</style>
</head>
<body>
<!-- 窗口 -->
<div class="page-content">
<!-- 轮播列表 -->
<ul>
<!-- 第一组轮播主图 -->
<li class="big"><a href="#"><img src="https://img95.699pic.com/photo/60018/9224.jpg_wh860.jpg" alt=""></a></li>
<li class="small"><a href="#"><img src="https://img95.699pic.com/photo/50589/6658.jpg_wh860.jpg" alt=""></a></li>
<li class="big"><a href="#"><img src="https://img95.699pic.com/photo/50557/4242.jpg_wh860.jpg" alt=""></a></li>
<li class="small"><a href="#"><img src="https://img95.699pic.com/photo/32207/2141.jpg_wh860.jpg" alt=""></a></li>
<li class="big"><a href="#"><img src="https://tse4-mm.cn.bing.net/th/id/OIP-C.nkWmM-lReaN8kH-ieXmZrQHaEo?rs=1&pid=ImgDetMain" alt=""></a></li>
<li class="small"><a href="#"><img src="https://tse1-mm.cn.bing.net/th/id/OIP-C.dIFgv5Jaess7oclRS7xg2wHaE8?rs=1&pid=ImgDetMain" alt=""></a></li>
<li class="big"><a href="#"><img src="https://ts1.cn.mm.bing.net/th/id/R-C.ad023f7f6aae59ba186c887db15ec1f2?rik=SfA%2f7i7toAeo7g&riu=http%3a%2f%2fseopic.699pic.com%2fphoto%2f40048%2f1294.jpg_wh1200.jpg&ehk=ouZBlYJahW2888FyhAEUMIsr022Nyy5RZjRgnLnt4cQ%3d&risl=&pid=ImgRaw&r=0" alt=""></a></li>
<li class="small"><a href="#"><img src="https://ts1.cn.mm.bing.net/th/id/R-C.a8d9a8c190775c75a6db79758094a432?rik=i%2bPnXghrI6uQ0Q&riu=http%3a%2f%2fwww.pptbz.com%2fpptpic%2fUploadFiles_6909%2f201211%2f2012111719275820.jpg&ehk=2vMwmCmogLLYwhMoFpnxFCA8hxoaiQONcuHMN0p66e4%3d&risl=&pid=ImgRaw&r=0" alt=""></a></li>
<!-- 复制第一组轮播主图以确保无缝滚动 -->
<li class="big"><a href="#"><img src="https://img95.699pic.com/photo/60018/9224.jpg_wh860.jpg" alt=""></a></li>
<li class="small"><a href="#"><img src="https://img95.699pic.com/photo/50589/6658.jpg_wh860.jpg" alt=""></a></li>
<li class="big"><a href="#"><img src="https://img95.699pic.com/photo/50557/4242.jpg_wh860.jpg" alt=""></a></li>
<li class="small"><a href="#"><img src="https://img95.699pic.com/photo/32207/2141.jpg_wh860.jpg" alt=""></a></li>
<li class="big"><a href="#"><img src="https://tse4-mm.cn.bing.net/th/id/OIP-C.nkWmM-lReaN8kH-ieXmZrQHaEo?rs=1&pid=ImgDetMain" alt=""></a></li>
<li class="small"><a href="#"><img src="https://tse1-mm.cn.bing.net/th/id/OIP-C.dIFgv5Jaess7oclRS7xg2wHaE8?rs=1&pid=ImgDetMain" alt=""></a></li>
<li class="big"><a href="#"><img src="https://ts1.cn.mm.bing.net/th/id/R-C.ad023f7f6aae59ba186c887db15ec1f2?rik=SfA%2f7i7toAeo7g&riu=http%3a%2f%2fseopic.699pic.com%2fphoto%2f40048%2f1294.jpg_wh1200.jpg&ehk=ouZBlYJahW2888FyhAEUMIsr022Nyy5RZjRgnLnt4cQ%3d&risl=&pid=ImgRaw&r=0" alt=""></a></li>
<li class="small"><a href="#"><img src="https://ts1.cn.mm.bing.net/th/id/R-C.a8d9a8c190775c75a6db79758094a432?rik=i%2bPnXghrI6uQ0Q&riu=http%3a%2f%2fwww.pptbz.com%2fpptpic%2fUploadFiles_6909%2f201211%2f2012111719275820.jpg&ehk=2vMwmCmogLLYwhMoFpnxFCA8hxoaiQONcuHMN0p66e4%3d&risl=&pid=ImgRaw&r=0" alt=""></a></li>
</ul>
</div>
</body>
</html>