原生js+css調(diào)節(jié)音量滑塊
本文實(shí)例為大家分享了js調(diào)節(jié)音量滑塊的具體代碼,供大家參考,具體內(nèi)容如下
效果
html部分
<body> <div class="all"> <p>當(dāng)前位置0%</p> <div class="bar"> <div class="box"></div> </div> </div> </body>
css部分
<style> .all { width: 500px; height: 80px; margin: 100px auto; position: relative; } .bar { width: 500px; height: 20px; border-radius: 10px; background: #aaa; position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; cursor: pointer; } .box { width: 30px; height: 30px; background: #000; position: absolute; bottom: 0; top: 0; margin: auto 0; border-radius: 50%; cursor: pointer; transition: left 0.1s linear 0s; } </style>
js邏輯
<script> var box = document.getElementsByClassName('box')[0] var bar = document.getElementsByClassName('bar')[0] var all = document.getElementsByClassName('all')[0] var p = document.getElementsByTagName('p')[0] var cha = bar.offsetWidth - box.offsetWidth box.onmousedown = function (ev) { let boxL = box.offsetLeft let e = ev || window.event //兼容性 let mouseX = e.clientX //鼠標(biāo)按下的位置 window.onmousemove = function (ev) { let e = ev || window.event let moveL = e.clientX - mouseX //鼠標(biāo)移動(dòng)的距離 let newL = boxL + moveL //left值 // 判斷最大值和最小值 if (newL < 0) { newL = 0 } if (newL >= cha) { newL = cha } // 改變left值 box.style.left = newL + 'px' // 計(jì)算比例 let bili = newL / cha * 100 p.innerHTML = '當(dāng)前位置' + Math.ceil(bili) + '%' return false //取消默認(rèn)事件 } window.onmouseup = function () { window.onmousemove = false //解綁移動(dòng)事件 return false } return false }; // 點(diǎn)擊音量條 bar.onclick = function (ev) { let left = ev.clientX - all.offsetLeft - box.offsetWidth / 2 if (left < 0) { left = 0 } if (left >= cha) { left = cha } box.style.left = left + 'px' let bili = left / cha * 100 p.innerHTML = '當(dāng)前位置' + Math.ceil(bili) + '%' console.log(left) return false } </script>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS中的六種繼承方式以及優(yōu)缺點(diǎn)總結(jié)
JS作為面向?qū)ο蟮娜躅?lèi)型語(yǔ)言,繼承也是其非常強(qiáng)大的特性之一,那么如何在JS中實(shí)現(xiàn)繼承呢?下面這篇文章主要給大家介紹了關(guān)于JS中六種繼承方式以及優(yōu)缺點(diǎn)的相關(guān)資料,需要的朋友可以參考下2021-10-10

javascript設(shè)計(jì)模式之中介者模式Mediator

bootstrap table服務(wù)端實(shí)現(xiàn)分頁(yè)效果

javascript 常見(jiàn)的閉包問(wèn)題的解決辦法

微信小程序?qū)崿F(xiàn)列表?xiàng)l件篩選

Javascript筆記一 js以及json基礎(chǔ)使用說(shuō)明

學(xué)習(xí)JavaScript設(shè)計(jì)模式之模板方法模式