纯 CSS 连续水平跨度滚动,不间断从屏幕开始
Pure CSS Continuous Horizontal Span Scroll Without Break Starting On-screen
我正在尝试创建一个纯粹的 CSS 滚动选取框动画,该动画从动画中途开始,内容已经显示在屏幕上,然后无限滚动而不间断。
我找到了几个例子,但我遇到了麻烦 1. 集成两种解决方案(在屏幕上开始 + 无间隙),2. 适应滚动图像而不是文本的使用。
这是我的参考:
我发现很难理解这里实际发生的事情,这就是我无法修复它的原因。
我正在使用动画延迟让第一个选取框开始出现在屏幕上,然后似乎有一个很长的延迟 and/or 在第二个选取框出现之前发生了一些重叠。我想要第二个选取框在第一个选取框之后无缝开始,然后第一个选取框循环返回以在第二个选取框之后无缝重复,依此类推。
我将图像用作背景图像,这是使用已弃用的 marquee
元素的残余图像。我对这里的替代解决方案持开放态度。我已将 2 张图像拼接在一起,试图使其更长,但可以在必要时重新编辑图像。
感谢您的建议,提前致谢。
到目前为止,这是我的代码:
.container {
white-space: nowrap;
background-color: blue;
width: 100%;
}
.marquee {
display: inline-block;
background-image: url(https://sligoil.com/wp-content/uploads/2022/02/icons-long-01.svg);
background-repeat: no-repeat;
background-size: contain;
background-position: center;
padding-top: 6.798%;
width: 100%;
color: transparent;
padding-left: 100%;
/*-moz-transform: translateX(100%);
-webkit-transform: translateX(100%);
transform: translateX(100%);*/
-moz-animation: scroll-left 20s linear infinite;
-webkit-animation: scroll-left 20s linear infinite;
animation: scroll-left 20s linear infinite;
}
#marq-1 {
animation-delay: -10s;
}
#marq-2 {
animation-delay: -20s;
}
@-moz-keyframes scroll-left {
0% {
-moz-transform: translateX(100%);
}
100% {
-moz-transform: translateX(-100%);
}
}
@-webkit-keyframes scroll-left {
0% {
-webkit-transform: translateX(100%);
}
100% {
-webkit-transform: translateX(-100%);
}
}
@keyframes scroll-left {
0% {
-moz-transform: translateX(100%);
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
100% {
-moz-transform: translateX(-100%);
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
}
<div class="container">
<span id="marq-1" class="marquee">.</span>
<span id="marq-2" class="marquee">.</span>
</div>
当您使用背景图片时,有一种更简单的方法,即直接为背景图片制作动画并使用背景重复。
PS:不确定“动画中途开始”是什么意思
.bg-marquee {
background-color: blue;
height: 50px;
width: 100%;
background-image: url(https://sligoil.com/wp-content/uploads/2022/02/icons-long-01.svg);
background-repeat: repeat-x;
background-size: 1000px auto;
animation: marquee 5s infinite linear;
}
@keyframes marquee {
0% { background-position: 0; }
100% { background-position: -1000px; }
}
<div class="bg-marquee"></div>
我正在尝试创建一个纯粹的 CSS 滚动选取框动画,该动画从动画中途开始,内容已经显示在屏幕上,然后无限滚动而不间断。
我找到了几个例子,但我遇到了麻烦 1. 集成两种解决方案(在屏幕上开始 + 无间隙),2. 适应滚动图像而不是文本的使用。
这是我的参考:
我发现很难理解这里实际发生的事情,这就是我无法修复它的原因。
我正在使用动画延迟让第一个选取框开始出现在屏幕上,然后似乎有一个很长的延迟 and/or 在第二个选取框出现之前发生了一些重叠。我想要第二个选取框在第一个选取框之后无缝开始,然后第一个选取框循环返回以在第二个选取框之后无缝重复,依此类推。
我将图像用作背景图像,这是使用已弃用的 marquee
元素的残余图像。我对这里的替代解决方案持开放态度。我已将 2 张图像拼接在一起,试图使其更长,但可以在必要时重新编辑图像。
感谢您的建议,提前致谢。
到目前为止,这是我的代码:
.container {
white-space: nowrap;
background-color: blue;
width: 100%;
}
.marquee {
display: inline-block;
background-image: url(https://sligoil.com/wp-content/uploads/2022/02/icons-long-01.svg);
background-repeat: no-repeat;
background-size: contain;
background-position: center;
padding-top: 6.798%;
width: 100%;
color: transparent;
padding-left: 100%;
/*-moz-transform: translateX(100%);
-webkit-transform: translateX(100%);
transform: translateX(100%);*/
-moz-animation: scroll-left 20s linear infinite;
-webkit-animation: scroll-left 20s linear infinite;
animation: scroll-left 20s linear infinite;
}
#marq-1 {
animation-delay: -10s;
}
#marq-2 {
animation-delay: -20s;
}
@-moz-keyframes scroll-left {
0% {
-moz-transform: translateX(100%);
}
100% {
-moz-transform: translateX(-100%);
}
}
@-webkit-keyframes scroll-left {
0% {
-webkit-transform: translateX(100%);
}
100% {
-webkit-transform: translateX(-100%);
}
}
@keyframes scroll-left {
0% {
-moz-transform: translateX(100%);
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
100% {
-moz-transform: translateX(-100%);
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
}
<div class="container">
<span id="marq-1" class="marquee">.</span>
<span id="marq-2" class="marquee">.</span>
</div>
当您使用背景图片时,有一种更简单的方法,即直接为背景图片制作动画并使用背景重复。
PS:不确定“动画中途开始”是什么意思
.bg-marquee {
background-color: blue;
height: 50px;
width: 100%;
background-image: url(https://sligoil.com/wp-content/uploads/2022/02/icons-long-01.svg);
background-repeat: repeat-x;
background-size: 1000px auto;
animation: marquee 5s infinite linear;
}
@keyframes marquee {
0% { background-position: 0; }
100% { background-position: -1000px; }
}
<div class="bg-marquee"></div>