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>

页面效果:

相关推荐
程序员夏洛7 分钟前
谈谈你了解的最常见的几种设计模式,说说他们的应用场景
开发语言·python·模板方法模式
DevOpenClub11 分钟前
网页证据如何长期复核:快照、静态 HTML 与 PDF 归档链路
前端·pdf·html
小灰灰搞电子14 分钟前
Rust+Slint 实现侧滑菜单栏源码分享
开发语言·rust·抽屉式菜单栏
独立开发之道17 分钟前
Three.js 创建 VR 内容:四步把一个普通 3D 场景送进头显
javascript·3d·vr
JavaEdge.24 分钟前
scoped 样式与 data-v-* 属性选择器(写给 Javaer)
开发语言·vue
坐吃山猪27 分钟前
JDK 8 到 JDK 21 新特性知识要点
java·开发语言·windows
坐吃山猪29 分钟前
【多线程】FutureTask多线程底层实现
java·开发语言·数据库
XR12345678832 分钟前
办公组网像“看病“:先问诊,再选型
开发语言·php
Canace32 分钟前
基于 Codex Agent Harness 套壳实现自己的 AI 产品:Agent 运行时与任务编排实践
前端·人工智能·agent
布莱克60534 分钟前
strcpy 函数详解:作用、用法与安全缺陷
c语言·开发语言·c++·安全