原生js+css调节音量滑块

前端之家收集整理的这篇文章主要介绍了原生js+css调节音量滑块前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例为大家分享了js调节音量滑块的具体代码,供大家参考,具体内容如下

效果

原生js+css调节音量滑块


html部分

  1. <body>
  2. <div class="all">
  3. <p>当前位置0%</p>
  4. <div class="bar">
  5. <div class="Box"></div>
  6. </div>
  7. </div>
  8. </body>

css部分

  1. <style>
  2. .all {
  3. width: 500px;
  4. height: 80px;
  5. margin: 100px auto;
  6. position: relative;
  7. }
  8.  
  9. .bar {
  10. width: 500px;
  11. height: 20px;
  12. border-radius: 10px;
  13. background: #aaa;
  14. position: absolute;
  15. top: 0;
  16. bottom: 0;
  17. left: 0;
  18. right: 0;
  19. margin: auto;
  20. cursor: pointer;
  21. }
  22.  
  23. .Box {
  24. width: 30px;
  25. height: 30px;
  26. background: #000;
  27. position: absolute;
  28. bottom: 0;
  29. top: 0;
  30. margin: auto 0;
  31. border-radius: 50%;
  32. cursor: pointer;
  33. transition: left 0.1s linear 0s;
  34. }
  35. </style>

js逻辑

  1. <script>
  2. var Box = document.getElementsByClassName('Box')[0]
  3. var bar = document.getElementsByClassName('bar')[0]
  4. var all = document.getElementsByClassName('all')[0]
  5. var p = document.getElementsByTagName('p')[0]
  6. var cha = bar.offsetWidth - Box.offsetWidth
  7. Box.onmousedown = function (ev) {
  8. let BoxL = Box.offsetLeft
  9. let e = ev || window.event //兼容性
  10. let mouseX = e.clientX //鼠标按下的位置
  11. window.onmousemove = function (ev) {
  12. let e = ev || window.event
  13. let moveL = e.clientX - mouseX //鼠标移动的距离
  14. let newL = BoxL + moveL //left值
  15. // 判断最大值和最小值
  16. if (newL < 0) {
  17. newL = 0
  18. }
  19. if (newL >= cha) {
  20. newL = cha
  21. }
  22. // 改变left值
  23. Box.style.left = newL + 'px'
  24. // 计算比例
  25. let bili = newL / cha * 100
  26. p.innerHTML = '当前位置' + Math.ceil(bili) + '%'
  27. return false //取消默认事件
  28. }
  29. window.onmouseup = function () {
  30. window.onmousemove = false //解绑移动事件
  31. return false
  32. }
  33. return false
  34. };
  35. // 点击音量条
  36. bar.onclick = function (ev) {
  37. let left = ev.clientX - all.offsetLeft - Box.offsetWidth / 2
  38. if (left < 0) {
  39. left = 0
  40. }
  41. if (left >= cha) {
  42. left = cha
  43. }
  44. Box.style.left = left + 'px'
  45. let bili = left / cha * 100
  46. p.innerHTML = '当前位置' + Math.ceil(bili) + '%'
  47. console.log(left)
  48. return false
  49. }
  50. </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

猜你在找的JavaScript相关文章