bla*_*bam 1 javascript css animation
嗨,我正在尝试使用简单的 css 动画使 div 滚动。
问题是它循环不好,因为在重新开始滚动之前有一点闪光。
这是代码: https : //jsfiddle.net/by6tx4o0/2/
.c{
position:relative;
background:red;
max-height:200px;
float:left;
width:300px;
height:300px;
overflow:hidden;
overflow-y:auto;
}
.card-home{
position:absolute;
margin:20px;
top:0;
animation: scroll 10s linear 1s infinite;
}
span {
min-width:300px;
min-height:40px;
display:block;
color:white;
margin:5px;
background:blue;
}
@keyframes scroll {
100% { top: -100%; }
}Run Code Online (Sandbox Code Playgroud)
<div class="c">sssss
<div class="card-home">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
<span>6</span>
<span>7</span>
<span>8</span>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
循环时我该怎么做才能使这个平滑?
谢谢你
嗯,这是一个棘手的问题,如果您希望它是纯 css,则需要一些硬编码值,但这里是它的要点:
.c{
position:relative;
background:red;
max-height:225px; /*height to show an exact number of spans - in this case span is 45px (40 height plus 5 margin as margins collapse) and we are showing 5 spans to start */
float:left;
width:315px;
height:225px;
overflow:hidden;
overflow-y:auto;
}
.card-home{
position:absolute;
top:0;
animation: scroll 10s linear 1s infinite;
}
span {
min-width:290px;
min-height:40px;
display:block;
color:white;
margin:5px;
background:blue;
}
@keyframes scroll {
100% { top: -360px; } /* top is the number of spans (in this case 8) multiplied by span height (45px as described above)*/
}Run Code Online (Sandbox Code Playgroud)
<div class="c">
<div class="card-home">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
<span>6</span>
<span>7</span>
<span>8</span>
<!-- copy the number of spans displayed at the beggining onto the end -->
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
此外,我会将ssss文本移动到滚动条之外,以便您开始的顶部 20px 边距不会干扰滚动条