jQuery入门第十一章(前端利用音频弹奏欢乐颂)

简介: jQuery入门第十一章(前端利用音频弹奏欢乐颂)

效果图

20210915204500896.png


基本样式

    <style>
        * {
            margin: 0;
            padding: 0;
            list-style: none;
        }
        nav {
            width: 700px;
            height: 50px;
            background-color: #333;
            margin: 0 auto;
            overflow: hidden;
        }
        nav ul {
            display: flex;
        }
        nav li {
            width: 100px;
            height: 50px;
            color: #fff;
            cursor: pointer;
            display: flex;
            justify-content: center;
            align-items: center;
            position: relative;
        }
        nav li i {
            width: 100px;
            height: 50px;
            background-color: palegreen;
            position: absolute;
            top: 50px;
            left: 0;
        }
        nav li span {
            position: relative;
            z-index: 1;
        }
        .box {
            display: flex;
            justify-content: center;
        }
        .box img {
            width: 700px;
        }
    </style>


<body>
    <nav>
        <ul>
            <li> <span>导航1</span> <i></i> </li>
            <li> <span>导航2</span> <i></i> </li>
            <li> <span>导航3</span> <i></i> </li>
            <li> <span>导航4</span> <i></i> </li>
            <li> <span>导航5</span> <i></i> </li>
            <li> <span>导航6</span> <i></i> </li>
            <li> <span>导航7</span> <i></i> </li>
        </ul>
    </nav>
    <div class="box">
        <img src="../image/musice3.jpg" alt="">
    </div>
    <!-- 音频标签准备 -->
    <audio src="../mp3/1.mp3"></audio>
    <audio src="../mp3/2.mp3"></audio>
    <audio src="../mp3/3.mp3"></audio>
    <audio src="../mp3/4.mp3"></audio>
    <audio src="../mp3/5.mp3"></audio>
    <audio src="../mp3/6.mp3"></audio>
    <audio src="../mp3/7.mp3"></audio>
</body>


记得引入jq哦

20210915205319886.png


完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../jq/jquery-1.12.4.min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            list-style: none;
        }
        nav {
            width: 700px;
            height: 50px;
            background-color: #333;
            margin: 0 auto;
            overflow: hidden;
        }
        nav ul {
            display: flex;
        }
        nav li {
            width: 100px;
            height: 50px;
            color: #fff;
            cursor: pointer;
            display: flex;
            justify-content: center;
            align-items: center;
            position: relative;
        }
        nav li i {
            width: 100px;
            height: 50px;
            background-color: palegreen;
            position: absolute;
            top: 50px;
            left: 0;
        }
        nav li span {
            position: relative;
            z-index: 1;
        }
        .box {
            display: flex;
            justify-content: center;
        }
        .box img {
            width: 700px;
        }
    </style>
    <script>
        $(function () {
            // 鼠标移入
            $('li').mouseover(function () {
                let index = $(this).index()
                // 重新加载事件
                $('audio').get(index).load();
                $('audio').get(index).play();
                // console.log($(this));
                $(this).children('i').stop().animate({ top: 0 })
            }).mouseout(function () {
                $(this).children('i').stop().animate({ top: 50 })
            })
        })
        // 键盘按下事件keydown
        $(window).on('keydown', function (e) {
            // 取49-55
            if (e.keyCode >= 49 && e.keyCode <= 55) {
                let index = e.keyCode - 49
                // li的下标index的后代i
                $('li').eq(index).find('i').animate({ top: 0 })
                $('audio').get(index).load();
                $('audio').get(index).play();
            }
        }).on('keyup', function (e) {
            // console.log(1);
            let index = e.keyCode - 49
            // li的下标index的后代i
            $('li').eq(index).find('i').animate({ top: 50 })
        })
    </script>
</head>
<body>
    <nav>
        <ul>
            <li> <span>导航1</span> <i></i> </li>
            <li> <span>导航2</span> <i></i> </li>
            <li> <span>导航3</span> <i></i> </li>
            <li> <span>导航4</span> <i></i> </li>
            <li> <span>导航5</span> <i></i> </li>
            <li> <span>导航6</span> <i></i> </li>
            <li> <span>导航7</span> <i></i> </li>
        </ul>
    </nav>
    <div class="box">
        <img src="../image/musice3.jpg" alt="">
    </div>
    <!-- 音频标签准备 -->
    <audio src="../mp3/1.mp3"></audio>
    <audio src="../mp3/2.mp3"></audio>
    <audio src="../mp3/3.mp3"></audio>
    <audio src="../mp3/4.mp3"></audio>
    <audio src="../mp3/5.mp3"></audio>
    <audio src="../mp3/6.mp3"></audio>
    <audio src="../mp3/7.mp3"></audio>
</body>
</html>


最后可以输入键盘1-7就是可以弹奏自己喜欢的音乐啦


相关文章
|
2月前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
510 2
|
1月前
|
编解码 前端开发 JavaScript
从入门到精通:揭秘前端开发中那些不为人知的优化秘籍!
前端开发是充满无限可能的领域,从初学者到资深专家,每个人都追求更快、更稳定、更用户体验友好的网页。本文介绍了四大优化秘籍:1. HTML的精简与语义化;2. CSS的优雅与高效;3. JavaScript的精简与异步加载;4. 图片与资源的优化。通过这些方法,可以显著提升网页性能和用户体验。
20 3
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
1月前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
33 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
1月前
|
JSON 缓存 前端开发
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
33 3
|
2月前
|
自然语言处理 资源调度 前端开发
前端大模型入门(四):不同文本分割器对比和效果展示-教你如何根据场景选择合适的长文本分割方式
本文详细介绍了五种Langchain文本分割器:`CharacterTextSplitter`、`RecursiveCharacterTextSplitter`、`TokenTextSplitter`、`MarkdownTextSplitter` 和 `LatexTextSplitter`,从原理、优缺点及适用场景等方面进行了对比分析,旨在帮助开发者选择最适合当前需求的文本分割工具,提高大模型应用的处理效率和效果。
164 1
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
前端大模型入门(三):编码(Tokenizer)和嵌入(Embedding)解析 - llm的输入
本文介绍了大规模语言模型(LLM)中的两个核心概念:Tokenizer和Embedding。Tokenizer将文本转换为模型可处理的数字ID,而Embedding则将这些ID转化为能捕捉语义关系的稠密向量。文章通过具体示例和代码展示了两者的实现方法,帮助读者理解其基本原理和应用场景。
431 1
|
2月前
|
人工智能 前端开发 JavaScript
前端大模型入门(二):掌握langchain的核心Runnable接口
Langchain.js 是 Langchain 框架的 JavaScript 版本,专为前端和后端 JavaScript 环境设计。最新 v0.3 版本引入了强大的 Runnable 接口,支持灵活的执行方式和异步操作,方便与不同模型和逻辑集成。本文将详细介绍 Runnable 接口,并通过实现自定义 Runnable 来帮助前端人员快速上手。
|
2月前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
2月前
|
前端开发 JavaScript 开发者
探索现代Web前端技术:React框架入门
【10月更文挑战第9天】 探索现代Web前端技术:React框架入门