1. 程式人生 > >1.九宮格閃動效果

1.九宮格閃動效果

開始顏色閃動

1.首先清除之前的閃動效果,及將所有顏色恢復

2.取出相應要閃動的節點,並設定顏色

這裡要用到setInterval()函式

因為該函式會不停的呼叫,所以在裡面放一個begin值,點選 開始跟結束 來控制這個值,這個值為true時才執行,

不能用while(),這樣會崩潰。(事件一直在執行,無法執行其他)

setAttribute只能對html的屬性進行設定,

lightbox.setAttribute("background-color",getRandomColor());

而要改變css樣式,如果不用jQuery,就要這麼寫

lightbox.style.backgroundColor=getRandomColor();

setTimeout("function",time) 設定一個超時物件 
setInterval("function",time) 設定一個超時物件 
SetInterval為自動重複,setTimeout不會重複。 
clearTimeout(物件) 清除已設定的setTimeout物件 
clearInterval(物件) 清除已設定的setInterval物件 

clearInterval() 方法的引數必須是由 setInterval() 返回的 ID 值。
語法 :
clearInterval(id_of_setinterval) 

收集一個函式:獲取隨機顏色值;

function getRandomColor(){
return "#"+("00000"+((Math.random()*16777215+0.5)>>0).toString(16)).slice(-6);

說明:
1、16777215為16進位制的顏色ffffff轉成10進位制的數字
2、>>數字取整
3、轉成16進位制不足6位的以0來補充 

最後貼出程式碼:

index.html

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<link rel="stylesheet" type="text/css" href="1.css">
	<script type="text/javascript" src="1.js"></script>
</head>
<body>
<div id="container">
	<div id="header"></div>


	
		<div id="box1">
            <div id="block1" class="box">
            </div>
            <div id="block2" class="box">
            </div>
            <div id="block3" class="box">
            </div>
            <div id="block4" class="box">
            </div>
            <div id="block5" class="box">
            </div>
            <div id="block6" class="box">
            </div>
            <div id="block7" class="box">
            </div>
            <div id="block8" class="box">
            </div>
            <div id="block9" class="box">
         	</div>
         	<div id="bl" onclick="startColor()">開始閃</div>
         	<div id="sl" onclick="stopColor()">停止閃</div>
    	
		</div>
		

	<div id="footer"></div>
</div>
</body>
</html>
1.css
   #box1{
            padding-left: 120px;/* 下面盒子到外面盒子的左間距 */
            padding-top:50px;/* 上間距 */
            width:400px;
            height:550px;
             border:2px solid;
            border-color: blue; 
           
            text-align:center;
            margin:0 auto;
        }
        .box{
        	 float:left;
            background-color: orange;
            border-radius: 2px;
            height:95px;
            width:95px;
            margin-left: 2px;
            border:2px solid;
            border-color: red; 
            
        }
        #bl{
		 	float:left;
			width:300px;
			height:100px;
			border:2px solid;
            border-color: red; 
        }
        #sl{
		 	float:left;
			width:300px;
			height:100px;
			border:2px solid;
            border-color: red; 
        }
        

1.js:
var begin;
var id;

function stayColor(){
	for(var i = 1;i<10;i++){
		var numbox ="block"+i;
		var staybox = document.getElementById(numbox);
		staybox.style.backgroundColor="#FFA500";
	}
}

function stopColor(){
	begin=false;
	clearInterval(id);
	for(var i = 1;i<10;i++){
		var numbox ="block"+i;
		var staybox = document.getElementById(numbox);
		staybox.style.backgroundColor="#FFA500";
	}
}

function startColor(){
	begin = true;

	/*防止多次點選造成多次效果,故將之前的效果清楚(如果有)*/
	clearInterval(id);

	 id=setInterval(function(){
		if(begin){
	stayColor();
	var numbox ="block"+Math.ceil(Math.random()*9);
	var numbox1 = "block"+Math.ceil(Math.random()*9);
	var numbox2 = "block"+Math.ceil(Math.random()*9);

	while(numbox==numbox1){
		numbox1 = "block"+Math.ceil(Math.random()*9);
	}
	while(numbox==numbox2||numbox1==numbox2){
		numbox2 = "block"+Math.ceil(Math.random()*9);
	}
	var lightbox = document.getElementById(numbox);
	var lightbox1 = document.getElementById(numbox1);
	var lightbox2 = document.getElementById(numbox2);


	/*這些只能設定在html中,css中無法改變
	lightbox.setAttribute("background-color",getRandomColor());
	alert(lightbox.getAttribute("background-color"));*/

	lightbox.style.backgroundColor=getRandomColor();
	lightbox1.style.backgroundColor=getRandomColor();
	lightbox2.style.backgroundColor=getRandomColor();
	
	}
	else{
		return;
	}
	},1000);

}

function getRandomColor(){ 
 return "#"+("00000"+((Math.random()*16777215+0.5)>>0).toString(16)).slice(-6); 
 } 
/* 1、16777215為16進位制的顏色ffffff轉成10進位制的數字 
2、>>數字取整 
3、轉成16進位制不足6位的以0來補充 */