[JS] 使用純 JavaScript 製作 Lavalamp 效果選單

[JS] 使用純 JavaScript 製作 Lavalamp 效果選單

 

console.clear();
var currentBar = document.querySelector('.current'),
item = document.querySelector('ul.item'),
ItemLi = document.querySelectorAll('ul.item li'),
current = document.querySelector('.current-item'),
rect;

//ul與視窗左邊的距離
item.pos = item.getBoundingClientRect();

function moveInit(){
    //判斷是否有狀態色塊
	if(!current){
      currentBar.style.opacity = 0;
      return
    } else {
       rect = current.getBoundingClientRect();
	   currentBar.style.width = rect.width + 'px';
	   currentBar.style.left=  rect.left - item.pos.left + 'px'	
    }
	console.log(currentBar.style.left)
}
function moveIn(e){	
	for(var i = 0; i<ItemLi.length; i++){		
		ItemLi[i].offsetWidth += currentBar.style.width;
	}	
	rect = this.getBoundingClientRect()
	// console.log(rect)
	// console.log(currentBar.style.left)
	currentBar.style.width = rect.width + 'px';
	currentBar.style.left = rect.left - item.pos.left + 'px'
}
function moveOut(){
    //判斷是否有狀態色塊
	if(!current){
      currentBar.style.opacity = 0;
      return
    } else {
        rect = current.getBoundingClientRect();
	    for(var i = 0; i<ItemLi.length; i++){		
		  ItemLi[i].offsetWidth += currentBar.style.width;	
	    }
	    currentBar.style.width = rect.width + 'px';
	    currentBar.style.left = rect.left - item.pos.left + 'px'
    }	
}

function move(){
	for(var i = 0; i<ItemLi.length; i++){	
			ItemLi[i].addEventListener('mouseover', moveIn, false)	
			ItemLi[i].addEventListener('mouseout', moveOut, false)		
	}	
}
moveInit()
move();

window.onresize = function(){
	item.pos = item.getBoundingClientRect();
	moveInit()
	move();
}