1. 程式人生 > >JS無縫滾動顯示和JSP中marquee標籤滾動顯示

JS無縫滾動顯示和JSP中marquee標籤滾動顯示

一、JS向上滾動的文字特效程式碼

這個向上滾動的文字特效JS程式碼比較簡潔,程式碼量很少,你可以根據具體情況使用,做一個下載連結滾動的效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<title>無標題文件</title>  
</head>  
<body>  

   <div class =" sidebox_bd bdbtm bdgray">
	<c:if test="${null!=attForm&&6 >attForm.size()}">//第一種情況,正常顯示List中的物件(在類中獲取,再set到request)
	<ul class = "download_list">
	    <c:forEach items="${attForm}" var="pur">
		<li>
		    <a href="javascript:downloadFile('${pur.pk_file}','${pur.file_name}');">${pur.file_name}</a>
		</li> 
	    </c:forEach>
	</ul>
</c:if>
	<c:if test="${null!=attForm&&5 <attForm.size()}">  
	<div id="demo" style="overflow:hidden;height:121px;width:217px;position:absolute;border:1px solid #e2e3ea;">
	<ul id="demo1" class = "download_list2">
	    <c:forEach items="${attForm}" var="pur">
		<li>
		    <a href="javascript:downloadFile('${pur.pk_file}','${pur.file_name}');">${pur.file_name}</a>
		</li> 
	    </c:forEach>
	</ul>
	<ul id="demo2" class = "download_list2"></ul>
	</div>
	</c:if>
    </div>

<script style="text/javascript">
		//JS無縫向上滾動20170810
		var speed=30;//數值越大,速度越慢
		
		var demo2=document.getElementById("demo2");
		var demo1=document.getElementById("demo1");
		var demo=document.getElementById("demo");
		
		demo2.innerHTML=demo1.innerHTML;
		
		function MarqueeUp(){
			if(demo2.offsetTop-demo.scrollTop <= 0){
				demo.scrollTop-=demo1.offsetHeight;
			}
			else{
				demo.scrollTop++;
			}
		}
		var MyMar=setInterval(MarqueeUp,speed);
		demo.onmouseover=function() {clearInterval(MyMar);}
		demo.onmouseout=function() {MyMar=setInterval(MarqueeUp,speed);}

       </script>  
     
</body>  
</html>  

這段程式碼的核心處理是應用setInterval每speed(30)毫秒執行一次頁面更新.更新的函式是Marquee,通常執行的是demo.scrollTop++,也就是說通常情況下是每30毫秒向下移動一個畫素,這樣子連續起來就成了動畫了.當動畫移動到邊界時,執行的時marquee裡面的另外一個分支,將動畫移動到最初位置.實現無縫,其實是借用了兩個相同的dom塊(demo1和demo2),兩者同時向下移動,一個移出可視範圍多少,另外一個就移入可是範圍多少。

遇到的問題及解決方法:

JS無縫滾動只滾動2次就停止了:

1、當元素的父容器沒有指定定位方式時,指元素與body元素之間的偏移距離;

2、當對父容器指定定位方式(如:position:relative;)時,則指元素與父容器之間的偏移距離;

所以,當沒有指定定位方式時,程式碼中的colee2.offsetTop值已經是元素colee2與body元素之間的偏移距離了。當這部分程式碼置入頁面上方top:0處時,自然沒有問題。但是,如果插入到頁面下方時,colee2.offsetTop值就已經不再是top:0了,自然就出現位移偏差了,以致滾動執行不正確!所以只需在colee的css樣式中加入"position:absolute"即可。

即:<div id="colee" style="overflow:hidden;height:100px;width:200px;position:absolute;">以上希望對遇到同樣問題的朋友有所幫助。

JS無縫滾動只滾動1次就停止了:

手動寫死的資料要超過你的視窗高度,需要內容比視窗大才能迴圈滾動。

二、JSP中marquee標籤向上滾動

<marquee scrollAmount=2 width=450>實現滾動訊息-----</marquee>

引數詳解:

a)scrollAmount。它表示速度,值越大速度越快。如果沒有它,預設為6,建議設為1~3比較好。 

b)width和height,表示滾動區域的大小,width是寬度,height是高度。特別是在做垂直滾動的時候,一定要設height的值。 

c)direction。表示滾動的方向,預設為從右向左:可選的值有right、down、up。

d)scrollDelay,這也是用來控制速度的,預設為90,值越大,速度越慢。通常scrollDelay是不需要設定的。 

e)behavior。用它來控制屬性,預設為迴圈滾動,可選的值有alternate(交替滾動)、slide(幻燈片效果,指的是滾動一次,然後停止滾動) 

實現訊息停頓: 游標懸浮時停頓,游標離開時開始 

<marquee onmouseout=this.start() onmouseover=this.stop() behavior="scroll" direction="up" width="660px" height="80px" SCROLLDELAY="320" >實現滾動訊息-----</marquee>  

參考文獻:

http://bbs.csdn.net/topics/390174892

http://blog.csdn.net/my773962804/article/details/51681535

https://zhidao.baidu.com/question/1447404431243396780.html

http://www.51xuediannao.com/js/texiao/xiangshanggundong.html

http://blog.csdn.net/xttxqjfg/article/details/7873179