JavaScript实现点击鼠标弹钢琴的效果

思路: 图片设置宽900px,找到鼠标按下时的x坐标和img距离body的x坐标,两个值相减,然后除100取整,赋值给a,通过判断a的值来确定放出那个音乐。

完整代码:

javascript 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        img {
            width: 900px;
        }

        #box {
            margin: 100px auto;
            width: 900px;
            position: relative;
        }
    </style>
</head>

<body>
    <div id="box">
        <img src="./keys.png" alt="">
    </div>
    <script>
        // 思路:图片设置宽900px,找到鼠标按下时的x坐标和img距离body的x坐标,两个值相减,然后除100取整,赋值给a,通过判断a的值来确定放出那个音乐。
        var img = document.querySelector('img');
        var box = document.querySelector('#box');
        console.log(box, img);
        img.onmousedown = function (e) {

            var x = e.pageX - box.offsetLeft;
            console.log(x);
            var a = parseInt(x / 100);
            console.log(a);
            a=a+1;
            var audio = new Audio(`./钢琴9键-mp3/d${a}.mp3`);
                    audio.play();

        }
    </script>
</body>

</html>

页面效果:

相关推荐
蓝瑟1 分钟前
告别重复造轮子!业务组件多场景复用实战指南
前端·javascript·设计模式
老华带你飞3 分钟前
旅游|基于Java旅游信息系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·旅游
dorisrv22 分钟前
高性能的懒加载与无限滚动实现
前端
韭菜炒大葱28 分钟前
别等了!用 Vue 3 让 AI 边想边说,字字蹦到你脸上
前端·vue.js·aigc
爱学习的梵高先生33 分钟前
C++:基础知识
开发语言·c++·算法
oioihoii37 分钟前
C++对象生命周期与析构顺序深度解析
java·开发语言·c++
IMPYLH40 分钟前
Lua 的 tonumber 函数
开发语言·笔记·后端·junit·游戏引擎·lua
StarkCoder41 分钟前
求求你,别在 Swift 协程开头写 guard let self = self 了!
前端
清妍_41 分钟前
一文详解 Taro / 小程序 IntersectionObserver 参数
前端
电商API大数据接口开发Cris1 小时前
构建异步任务队列:高效批量化获取淘宝关键词搜索结果的实践
前端·数据挖掘·api