mousewheel鼠標滾輪事件響應及實例

mousewheel鼠標滾輪事件響應

兼容性:

除了FireFox瀏覽器的滾輪事件響應使用的是DOMMouseScroll以外,其餘瀏覽器均使用的是onmousewheel(在使用addEventListener()添加監聽事件的時候就把“onmousewheel”的“on”去掉,變成“mousewheel”。“onclick”等監聽事件也是一樣。)

使用:

document.body.onmousewheel = function(event){
		...編寫響應函數...
	}

響應函數有event作參數,event有屬性wheelDelta,鼠標滾輪向下滾動時event.wheelDelta屬性值爲負且是-120的倍數,相反,鼠標滾輪向上滾動時event.wheelDelta屬性值爲正且是120的倍數。(不同瀏覽器鼠標一次滾動時這個屬性值變化值不一樣,有的甚至連續滾動幾次後會屬性值變化會加快。不妨在網頁中輸出觀察一下。)

實例

實現一個簡單的進度條可以隨着鼠標的滾動而變化進度:

首先用bootstrap4創建一個簡單的進度條:

<div class="container">
	<div id="c">
		<h2>基本進度條</h2>
		<p>要創建一個默認的進度條,可以在容器元素上添加 .progress 類,在子元素上添加 progress-bar 類,並設置進度條進度情況::</p>
		<div class="progress" id="1" onclick="change()">
		  <div class="progress-bar" style="width:0%"></div>
		</div>
		<input type="button" id="btn" value="確定">
		<p></p>
	</div>
  
  <div id="space"></div>
  
</div>

初始默認進度爲0。(style="width:0%")

然後在<script>裏<body>的滾輪響應監聽事件中,用JS的DOM根據event.wheelDelta修改wdth這一屬性值:

document.body.onmousewheel = function(event){
		var or = document.getElementsByClassName("progress-bar")[0].style.width;
		
		document.getElementsByTagName("p")[1].innerHTML = ""+or+" "+event.wheelDelta+"";
		document.getElementsByClassName("progress-bar")[0].style.width="calc("+or+" + "+(-event.wheelDelta/100)+"%)";
	}

document.body.onmousewheel = function(event){}創建監聽事件,當然你也可以用其他方法添加監聽事件,但一定要帶上參數event。

在監聽事件裏,var or = document.getElementsByClassName("progress-bar")[0].style.width;用一個變量or保存當前width的屬性值。

document.getElementsByTagName("p")[1].innerHTML = ""+or+" "+event.wheelDelta+"";用DOM獲取第二個<p>標籤,在標籤內裝填當前進度值和event.wheelDelta屬性值顯示出來。

document.getElementsByClassName("progress-bar")[0].style.width="calc("+or+" + "+(-event.wheelDelta/100)+"%)";使用CSS3的calc()函數來將進度變化值(-event.wheelDelta/100)加在原有的進度or上,注意做+-的時候,運算符前後要有空格。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章