CSS3跑马灯效果,不留空Space
CSS3 Marquee Effect, Without Empty Space
这个问题在这里有一个答案,它在跑马灯的每次迭代结束时留下很多空space:CSS3 Marquee Effect
有没有办法实现平滑的<marquee></marquee>
效果,使用CSS3,不留下这个space?
我有很多小元素,看起来有点像 SO 的蓝色标签,专门填充选取框的内容,而不是一个连续的正文或一堵文本墙。
这是一个示例,您可以通过设置延迟和持续时间来控制文本之间的 space
.marquee {
background-color: #ddd;
width: 500px;
margin: 0 auto;
overflow: hidden;
white-space: nowrap;
}
.marquee span {
display: inline-block;
font-size: 20px;
position: relative;
left: 100%;
animation: marquee 8s linear infinite;
}
.marquee:hover span {
animation-play-state: paused;
}
.marquee span:nth-child(1) {
animation-delay: 0s;
}
.marquee span:nth-child(2) {
animation-delay: 0.8s;
}
.marquee span:nth-child(3) {
animation-delay: 1.6s;
}
.marquee span:nth-child(4) {
animation-delay: 2.4s;
}
.marquee span:nth-child(5) {
animation-delay: 3.2s;
}
@keyframes marquee {
0% { left: 100%; }
100% { left: -100%; }
}
<p class="marquee">
<span>this is a</span>
<span>simple marquee</span>
<span>using css</span>
<span>only tech</span>
<span>with a delay</span>
</p>
如果选取框足够大,您可以在动画中期交换其中一个集合。
我认为这是您单独使用 CSS 所能达到的最大程度
.marquee {
width: 100%;
height: 80px;
margin: 0 auto;
overflow: hidden;
white-space: nowrap;
border: 1px solid blue;
}
.marquee-content {
display: inline-block;
margin-top: 5px;
animation: marquee 15s linear infinite;
}
.item-collection-1 {
position: relative;
left: 0%;
animation: swap 15s linear infinite;
}
@keyframes swap {
0%, 50% {
left: 0%;
}
50.01%,
100% {
left: 100%;
}
}
.marquee-content:hover {
animation-play-state: paused
}
.item1 {
display: inline-block;
height: 70px;
width: 140px;
background: cyan;
vertical-align: top;
margin-left: 15px;
}
.item2 {
display: inline-block;
height: 70px;
width: 100px;
background: magenta;
vertical-align: top;
margin-left: 15px;
line-height: 14px;
}
/* Transition */
@keyframes marquee {
0% {
transform: translateX(0)
}
100% {
transform: translateX(-100%)
}
}
<div class="marquee">
<div class="marquee-content">
<span class="item-collection-1">
<span><img src="https://cdn.sstatic.net/Sites/Whosebug/img/apple-touch-icon@2.png" height="80"></span>
<span class="item1"></span>
<span><img src="https://cdn.sstatic.net/Sites/Whosebug/img/apple-touch-icon@2.png" height="80"></span>
<span class="item1"></span>
<span class="item1"></span>
<span class="item1"></span>
<span class="item1"></span>
</span>
<span class="item-collection-2">
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
</span>
</div>
</div>
CSS3跑马灯效果,不留空Space
Horizontal Marquee
水平,一个右和一个左:https://codepen.io/Rayeesac/pen/JjGEYRZ
Vertical Marquee
垂直,一个顶部和一个底部:https://codepen.io/Rayeesac/pen/eYJgpVy
这个问题在这里有一个答案,它在跑马灯的每次迭代结束时留下很多空space:CSS3 Marquee Effect
有没有办法实现平滑的<marquee></marquee>
效果,使用CSS3,不留下这个space?
我有很多小元素,看起来有点像 SO 的蓝色标签,专门填充选取框的内容,而不是一个连续的正文或一堵文本墙。
这是一个示例,您可以通过设置延迟和持续时间来控制文本之间的 space
.marquee {
background-color: #ddd;
width: 500px;
margin: 0 auto;
overflow: hidden;
white-space: nowrap;
}
.marquee span {
display: inline-block;
font-size: 20px;
position: relative;
left: 100%;
animation: marquee 8s linear infinite;
}
.marquee:hover span {
animation-play-state: paused;
}
.marquee span:nth-child(1) {
animation-delay: 0s;
}
.marquee span:nth-child(2) {
animation-delay: 0.8s;
}
.marquee span:nth-child(3) {
animation-delay: 1.6s;
}
.marquee span:nth-child(4) {
animation-delay: 2.4s;
}
.marquee span:nth-child(5) {
animation-delay: 3.2s;
}
@keyframes marquee {
0% { left: 100%; }
100% { left: -100%; }
}
<p class="marquee">
<span>this is a</span>
<span>simple marquee</span>
<span>using css</span>
<span>only tech</span>
<span>with a delay</span>
</p>
如果选取框足够大,您可以在动画中期交换其中一个集合。
我认为这是您单独使用 CSS 所能达到的最大程度
.marquee {
width: 100%;
height: 80px;
margin: 0 auto;
overflow: hidden;
white-space: nowrap;
border: 1px solid blue;
}
.marquee-content {
display: inline-block;
margin-top: 5px;
animation: marquee 15s linear infinite;
}
.item-collection-1 {
position: relative;
left: 0%;
animation: swap 15s linear infinite;
}
@keyframes swap {
0%, 50% {
left: 0%;
}
50.01%,
100% {
left: 100%;
}
}
.marquee-content:hover {
animation-play-state: paused
}
.item1 {
display: inline-block;
height: 70px;
width: 140px;
background: cyan;
vertical-align: top;
margin-left: 15px;
}
.item2 {
display: inline-block;
height: 70px;
width: 100px;
background: magenta;
vertical-align: top;
margin-left: 15px;
line-height: 14px;
}
/* Transition */
@keyframes marquee {
0% {
transform: translateX(0)
}
100% {
transform: translateX(-100%)
}
}
<div class="marquee">
<div class="marquee-content">
<span class="item-collection-1">
<span><img src="https://cdn.sstatic.net/Sites/Whosebug/img/apple-touch-icon@2.png" height="80"></span>
<span class="item1"></span>
<span><img src="https://cdn.sstatic.net/Sites/Whosebug/img/apple-touch-icon@2.png" height="80"></span>
<span class="item1"></span>
<span class="item1"></span>
<span class="item1"></span>
<span class="item1"></span>
</span>
<span class="item-collection-2">
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
<span class="item2"></span>
</span>
</div>
</div>
CSS3跑马灯效果,不留空Space
Horizontal Marquee
水平,一个右和一个左:https://codepen.io/Rayeesac/pen/JjGEYRZ
Vertical Marquee
垂直,一个顶部和一个底部:https://codepen.io/Rayeesac/pen/eYJgpVy