如何实现文字无限从右向左滚动?存在重启及滚动条异常问题
问题解决:文字无限滚动重启与底部滚动条问题
问题1:滚动一段时间后重启(无缝滚动失效)
原因:当前动画的结束位置translateX(-20%)未让内容完全移出视口,且单份内容无法形成循环衔接。动画完成一轮后元素会瞬间跳回初始位置,导致断层重启。
解决步骤:
- 在
.adbar-container内复制一份完整的.adbar内容,让滚动内容形成连续的重复序列 - 修改动画结束位置为
translateX(-100%),确保滚动距离刚好覆盖两份内容的总宽度,实现无缝循环
问题2:页面出现横向滚动条
原因:.adbar的总宽度超出视口范围,且未对横向溢出进行隐藏处理。
解决步骤:
- 给
body添加overflow-x: hidden,隐藏横向溢出内容,消除滚动条
修改后的完整代码
CSS
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { /* 隐藏横向滚动条 */ overflow-x: hidden; } .adbar-container { display: flex; min-width: 100%; max-width: 100%; animation: slide-left 20s linear infinite; } .adbar { display: flex; flex-shrink: 0; height: 50px; align-items: center; } .adbar > p { font-size: 10px; padding-left: 1.5rem; } @keyframes slide-left { from { transform: translateX(100%); } to { /* 修改为-100%适配两份内容的滚动距离 */ transform: translateX(-100%); } }
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Header</title> </head> <body> <div class="adbar-container"> <section class="adbar"> <p>ENVÍOS A TODA LA ARGENTINA</p> <p>[ENVIO GRATIS] +2 PRENDAS</p> <p>OVERSIZE CLUB CREATED FOR THE NEW ERA</p> <p>ENVÍOS A TODA LA ARGENTINA</p> <p>[ENVIO GRATIS] +2 PRENDAS</p> <p>OVERSIZE CLUB CREATED FOR THE NEW ERA</p> <p>ENVÍOS A TODA LA ARGENTINA</p> <p>[ENVIO GRATIS] +2 PRENDAS</p> <p>OVERSIZE CLUB CREATED FOR THE NEW ERA</p> <p>ENVÍOS A TODA LA ARGENTINA</p> <p>[ENVIO GRATIS] +2 PRENDAS</p> <p>OVERSIZE CLUB CREATED FOR THE NEW ERA</p> <p>ENVÍOS A TODA LA ARGENTINA</p> <p>[ENVIO GRATIS] +2 PRENDAS</p> </section> <!-- 复制一份adbar实现无缝衔接 --> <section class="adbar"> <p>ENVÍOS A TODA LA ARGENTINA</p> <p>[ENVIO GRATIS] +2 PRENDAS</p> <p>OVERSIZE CLUB CREATED FOR THE NEW ERA</p> <p>ENVÍOS A TODA LA ARGENTINA</p> <p>[ENVIO GRATIS] +2 PRENDAS</p> <p>OVERSIZE CLUB CREATED FOR THE NEW ERA</p> <p>ENVÍOS A TODA LA ARGENTINA</p> <p>[ENVIO GRATIS] +2 PRENDAS</p> <p>OVERSIZE CLUB CREATED FOR THE NEW ERA</p> <p>ENVÍOS A TODA LA ARGENTINA</p> <p>[ENVIO GRATIS] +2 PRENDAS</p> <p>OVERSIZE CLUB CREATED FOR THE NEW ERA</p> <p>ENVÍOS A TODA LA ARGENTINA</p> <p>[ENVIO GRATIS] +2 PRENDAS</p> </section> </div> </body> </html>
内容的提问来源于stack exchange,提问作者Lucio Mazzini
相关产品推荐
相关产品推荐

