CSS/JS实现无缝滚动字幕
实现思路
定义两个滚动块,内容一模一样,从下往上两个紧挨着滚动,当第一个滚动块滚动出容器时(即第二个滚动块顶到了容器的上边缘),此时我们将第一个滚动块设置位置到容器上边缘,由于两个滚动块一模一样,从效果上我们也看不出来容器的内容发生了替换。
html 代码
<div class="box" id="box"> <ul class="col1" id="col1"> <li>1</li> <li>1</li> <li>1</li> <li>1</li> <li>1</li> <li>1</li> <li>1</li> <li>1</li> <li>1</li> </ul> <ul class="col2" id="col2"> <li>2</li> <li>2</li> <li>2</li> <li>2</li> <li>2</li> <li>2</li> <li>2</li> <li>2</li> <li>2</li> </ul> </div>
为了区分效果,我将两个块分别内容设为1和2.
css 代码
.box { position: relative; width: 100px; height: 90px; overflow: hidden; border: solid 1px; } .col1, .col2 { height: 200px; position: absolute; } .col2 { top:200px; } /* 让第二列顶着第一列的末尾*/
js 代码
var LEN = 200; // 一个完整滚动条的长度 var x = 0; var t; window.onload = roll; function roll() { var $col1 = document.getElementById("col1"); var $col2 = document.getElementById("col2"); var fun = function(){ $col1.style.top = x + 'px'; $col2.style.top = (x + LEN) + 'px'; x--; if( (x + LEN) == 0 ){ x = 0; } }; t = setInterval(fun,1000); } // 可以再加上鼠标移入停止滚动的函数
其他:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <style> @-webkit-keyframes move { 0%{ left:0; } 100% { left:-500px; } } #wrap{ width:500px;height:100px;border:1px solid #000; position:relative;margin:100px auto; overflow:hidden;} #list{ position:absolute;left:0;top:0;margin:0;padding:0; -webkit-animation:3s move infinite linear; width:200%;} #list li{ list-style:none;width:98px;height:98px;border:1px solid #fff;background:#000; color:#fff; font:50px/98px Arial; text-align:center; float:left;} #wrap:hover #list{ -webkit-animation-play-state:paused;} </style> </head> <body> <div id="wrap"> <ul id="list"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> </div> </body> </html>
作者:Kei
出处:http://www.cnblogs.com/ikei/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.