JS實(shí)現(xiàn)音量控制拖動(dòng)
本文實(shí)例為大家分享了JS實(shí)現(xiàn)音量控制拖動(dòng)的具體代碼,供大家參考,具體內(nèi)容如下
描述:
JS——實(shí)現(xiàn)音量控制拖動(dòng)
1)、有底條,有拖拽按鈕
2)、設(shè)置最小和最大值
3)、拖動(dòng)定位后,拋出事件當(dāng)前的所在值
效果:

實(shí)現(xiàn):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#all {
width: 500px;
height: 86px;
margin: 100px auto;
position: relative;
}
#bar {
width: 500px;
height: 20px;
border-radius: 10px;
background: #9acfea;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
cursor: pointer;
}
#box {
width: 30px;
height: 30px;
background: #ec971f;
position: absolute;
bottom: 0;
top: 0;
margin: auto 0;
border-radius: 50%;
cursor: pointer;
transition: left 0.1s linear 0s;
}
</style>
</head>
<body>
<div id="all">
<p>當(dāng)前位置0%</p>
<div id="bar">
<div id="box"></div>
</div>
</div>
<script>
var all=document.getElementById("all");//容器
var p=document.querySelector("p");//進(jìn)度百分比
var bar=document.getElementById("bar");//進(jìn)度顯示條
var box=document.getElementById("box");//進(jìn)度按鈕
var boxL,newL,moveL,mouseX,left;
var cha = bar.offsetWidth - box.offsetWidth;
var index=0;//標(biāo)記狀態(tài)
var evt=new Event("change");//本身的事件
init();
function init() {
box.addEventListener("mousedown",mouseDownclickHandler);
document.addEventListener("mousemove",mouseMoveclickHandler)
document.addEventListener("mouseup",mouseUpclickHandler);
document.addEventListener("change",changeHandler);
bar.addEventListener("click",clickHandler);
}
function mouseDownclickHandler(e) {
index=1;
boxL=box.offsetLeft;
mouseX=e.clientX;//鼠標(biāo)按下拖動(dòng)的位置
}
function mouseMoveclickHandler(e) {
if(index===1){
moveL=e.clientX-mouseX;//鼠標(biāo)移動(dòng)
newL=boxL+moveL;//left值
//判斷最小值與最大值
if(newL<0){
newL = 0;
}
if(newL>=cha){
newL=cha;
}
// 改變left值
box.style.left = newL + 'px';
// 計(jì)算比例
var bili = newL / cha * 100;
p.textContent = '當(dāng)前位置' + Math.ceil(bili) + '%';
evt.elem=this;//當(dāng)前指向 對象
document.dispatchEvent(evt);//朝誰發(fā)送 拋發(fā)
}
}
function mouseUpclickHandler(e) {
index=0;
evt.elem=this;//當(dāng)前指向 對象
document.dispatchEvent(evt);//朝誰發(fā)送 拋發(fā)
}
function clickHandler(e) {
left = e.clientX-all.offsetLeft-box.offsetWidth/2;
if(left<0){
left=0;
}
if(left>=cha){
left=cha;
}
box.style.left=left+'px';
bili=left/cha*100;
p.innerHTML='當(dāng)前位置'+ Math.ceil(bili)+'%';
evt.elem=this;//當(dāng)前指向 對象
document.dispatchEvent(evt);//朝誰發(fā)送 拋發(fā)
}
function changeHandler(e) {
console.log(e);
}
</script>
</body>
</html>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js 鼠標(biāo)拖動(dòng)對象 可讓任何div實(shí)現(xiàn)拖動(dòng)效果
- javascript 事件處理、鼠標(biāo)拖動(dòng)效果實(shí)現(xiàn)方法詳解
- js實(shí)現(xiàn)可拖動(dòng)DIV的方法
- 比較精簡的Javascript拖動(dòng)效果函數(shù)代碼
- JS實(shí)現(xiàn)彈出浮動(dòng)窗口(支持鼠標(biāo)拖動(dòng)和關(guān)閉)實(shí)例詳解
- js實(shí)現(xiàn)懸浮窗效果(支持拖動(dòng))
- js實(shí)現(xiàn)圖片拖動(dòng)改變順序附圖
- JS拖動(dòng)鼠標(biāo)畫出方框?qū)崿F(xiàn)鼠標(biāo)選區(qū)的方法
- JS實(shí)現(xiàn)可縮放、拖動(dòng)、關(guān)閉和最小化的浮動(dòng)窗口完整實(shí)例
- 鼠標(biāo)拖動(dòng)動(dòng)態(tài)改變表格的寬度的js腳本 兼容ie/firefox
相關(guān)文章
javascript實(shí)現(xiàn)動(dòng)態(tài)CSS換膚技術(shù)的腳本
javascript實(shí)現(xiàn)動(dòng)態(tài)CSS換膚技術(shù)的腳本...2007-06-06
JavaScript正則表達(dá)式中g(shù)標(biāo)志詳解
正則的思想都是一樣的,但是具體的寫法會有所不同,下面這篇文章主要給大家介紹了關(guān)于JavaScript正則表達(dá)式中g(shù)標(biāo)志的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
JS添加刪除一組文本框并對輸入信息加以驗(yàn)證判斷其正確性
需要添加幾組數(shù)據(jù)到數(shù)據(jù)庫,但是具體幾組數(shù)據(jù)不確定,有客戶來填寫,所以,這里我用JS進(jìn)行添加刪除子方案,并要對方案輸入的正確性加以判斷,感興趣的朋友可以了解下2013-04-04
JScript 腳本實(shí)現(xiàn)文件下載 一般用于下載木馬
腳本實(shí)現(xiàn)文件下載,這個(gè)是jscript的,腳本之家以前曾發(fā)布vbscript版本的,原理一樣的。2009-10-10
ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)的簡單講解
大家心里是否產(chǎn)生過這樣的疑問,JS中既然已經(jīng)有對象這種數(shù)據(jù)結(jié)構(gòu),我們?yōu)槭裁催€要再單獨(dú)去使用Set或者M(jìn)ap呢?下面這篇文章主要給大家介紹了關(guān)于ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下2022-08-08
網(wǎng)站基于flash實(shí)現(xiàn)的Banner圖切換效果代碼
這篇文章主要介紹了網(wǎng)站基于flash實(shí)現(xiàn)的Banner圖切換效果代碼,是基于Flash與js實(shí)現(xiàn)的banner圖片自動(dòng)定時(shí)切換特效,并附有完整的示例源碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10

