jQuery实现王者荣耀手风琴案例(知识块讲解+案例)

2023-05-16

前言:

这个案例是几年前的了,现在的王者官网是没有这个手风琴模块的,我了解到这个案例,是受到了黑马程序员知名教师——pink老师的启发,我相信大家也都不陌生,同样也是我非常尊敬的一位老师,我就不做过多的介绍,我们今天系统的讲解一下这个案例,我个人觉得这个案例虽然简单,但是比大部分的手风琴案例都要好上一些,既然是系统的学习,那我们在讲知识点前,先看一下成品效果,当我们鼠标放到小图上时,小图淡出,大图淡入,非常好的效果:


*常用动画都会讲到,内容较多,可以直接点击目录跳到相应位置查看

目录

一.jQuery效果动画

1.显示和隐藏效果:

2.滑动效果:

3.事件的切换:

4.动画队列的停止:

5.淡入淡出效果:

6.自定义动画

二.手风琴案例实践

首先利用HTML我们搭建好框架:

然后设置我们的CSS样式:

最后我们来使用jQuery来实现动画效果的交互(重点)


一.jQuery效果动画

我们在之前的博客中已经讲述到过show和hide效果,但是没有具体的阐述过,这次我们系统的阐述一下:

1.显示和隐藏效果:

显示:

语法规范:show([speed,[easing],[fn]])

tips:[        ]中参数可写可不写 

我们对参数进行解释:

speed:用来设置此动画的速度,有四个值:slow(慢),normal(自然正常),fast(快), 自定义毫秒数(如:1000);

easing:用来指定切换的效果,有俩个值:swing(默认值【慢-快-慢】),linear(匀速)

fn就不用多说了,我们的老朋友,回调函数(等待动画执行完毕在执行回调函数里的操作)

隐藏:

语法规范:hide([speed,[easing],[fn]])

和上面显示效果的参数一致,在这里我们不做过多解释


2.滑动效果:

*s,e,fn是speed,easing,fn的简写

下滑动:sildeDown([s],[e],[fn])

上滑动:sildeUp([s],[e],[fn])

滑动切换效果: sildeToggle([s],[e],[fn])

tips:滑动切换的意思是:触发一次事件,就上滑动/下滑动一次,交替进行,如果这次触发是上滑动,那么下一次触发就是下滑动 


3.事件的切换:

hover([over,]out)

我们来对参数解释一下:

over:鼠标移动到元素上触发的函数 (相当于原生JS里的mouseenter)

out:鼠标移出元素所触发的函数(相当于原生JS里的mouseleave)

理论我们讲述完毕,我们这里使用代码演示一下,因为事件切换和之前的语法使用不太一样:

$("div").hover(function(){},function(){})
//我们获取div元素
//第一个函数表示经过div所做出的动画或效果
//第一个函数表示离开div所做出的动画或效果

这里提供一种更加简便的写法:

$("div").hover(function(){
    $(this).slideToggle();
});
//我们只写一个函数方法,在唯一的这个函数里,写上我们的切换效果
//我们使用上面讲到过的滑动切换来举例子
//无论鼠标经过还是厉害,都会切换函数里的触发滑动切换实现效果

4.动画队列的停止:

我们学了动画是为了展现更好的交互效果,那为什么又要学习停止动画呢?

是因为动画效果有队列这一个解释:

动画效果一旦触发就会去执行,如果用户使其一直触发,就会造成多个动画效果排队执行的情况,会使用户体验非常的差,所以我们需要在当前这个动画执行时,先将之前的动画停止,这样就实现了无论用户触发多少次,在当下只会执行当前触发的这一个动画效果

停止排队:

语法规范:stop()

tips:stop()需要写在动画效果之前,相当于停止上一层动画

$("div").hover(function(){
    $(this).stop().slideToggle();
});

5.淡入淡出效果:

语法规范:

淡入:fadeIn([speed,[easing],[fn]])

淡出:fadeOut([speed,[easing],[fn]]) 

淡入淡出切换:fadeToggle([speed,[easing],[fn]]) 

渐进方式调整元素达到指定的不透明度: fadeTo(speed,opacity[easing],[fn]) 

tips:渐进调整透明度时——opacity和speed时间必须要写 


6.自定义动画

animate(params,[speed],[easing],[fn])

我们来解释一下这个新参数:

params:填写想要更改的样式属性【要以对象的形式来转递,必须要写,属性名可以不用带引号】 

我们这个自定义动画和之前的动画效果传递方式不一样,所以我们这里使用代码书写一个小案例(点击按钮,让盒子做一些动画效果): 

$(function(){
    $("button").click(function(){
        $("div").animate({//必须以对象的形式来写
            width:500,
            top:500,
            opacity:.4,
            backgroundColor:"#000"
        },500);
    });
});

二.手风琴案例实践

首先利用HTML我们搭建好框架:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
     <!-- 引入我们的jQuery文件 -->
    <script src="./js/jquery.min.js"></script>
</head>
<body>
    <!-- 创建盒子存放元素 -->
    <div class="bigbox">
        <!-- 盒子里创建ul存放每一个li小块 -->
        <ul>
            <!-- 利用li存放俩张图片 -->
            <!-- 思路:鼠标移动到li上,让li的大图显示,小图隐藏 -->
            <li class="current">
                <!-- a标签是为了可以点击跳转到相应英雄介绍,整体项目开发会用到 -->
                <a href="#">
                    <img src="images/m1.jpg" alt="" class="small">
                    <img src="images/m.png" alt="" class="big">
                </a>
            </li>
            <li>
                <a href="#">
                    <img src="images/l1.jpg" alt="" class="small">
                    <img src="images/l.png" alt="" class="big">
                </a>
            </li>
            <li>
                <a href="#">
                    <img src="images/c1.jpg" alt="" class="small">
                    <img src="images/c.png" alt="" class="big">
                </a>
            </li>
            <li>
                <a href="#">
                    <img src="images/w1.jpg" alt="" class="small">
                    <img src="images/w.png" alt="" class="big">
                </a>
            </li>
            <li>
                <a href="#">
                    <img src="images/z1.jpg" alt="" class="small">
                    <img src="images/z.png" alt="" class="big">
                </a>
            </li>
            <li>
                <a href="#">
                    <img src="images/h1.jpg" alt="" class="small">
                    <img src="images/h.png" alt="" class="big">
                </a>
            </li>
            <li>
                <a href="#">
                    <img src="images/t1.jpg" alt="" class="small">
                    <img src="images/t.png" alt="" class="big">
                </a>
            </li>
        </ul>

    </div>
</body>
</html>

然后设置我们的CSS样式:

 /* 初始化 */
    *{
        margin: 0 auto;
        padding: 0;
    }
    img{
        width: 100%;
        height: 100%;
    }
    ul{
        list-style: none;
    }
    /* 大盒子 */
    .bigbox{
        width: 800px;
        /* height: 100px; */
        background-image: url(./images/bg.png);
        padding: 10px;
        margin-top: 10vh;
        overflow: hidden;
    }
    /* 设置每一个li */
    .bigbox ul li{
        position: relative;
        float: left;
        width: 69px;
        height: 69px;
        margin: 10px;
    }
    /* 图片的设置 */
    .big{
        display: none;
        border-radius: 5px;
        width: 224px;
    }
    .small{
        position: absolute;
        top: 0;
        left: 0;
        width: 69px;
        height: 69px;
        border-radius: 5px;
    }
    /* current类名设置 */
    .bigbox ul .current .big{
        display: block;
    }
    .bigbox ul .current .small{
        display: none;
    }
    .bigbox ul .current{
        width: 224px;
    }
    

最后我们来使用jQuery来实现动画效果的交互(重点):

$(function(){
        // console.log($(".bigbox>ul li"));
        //获取到li元素,注册一个鼠标经过事件
      $(".bigbox>ul li").mouseenter(function(){
        //   console.log(this);
        //为当前经过的这个li创建一个自定义动画效果,在动画效果前加上stop()之前我们讲过
        //是为了停止上一层动画,直接执行当前动画,防止出现动画排队执行的bug
        $(this).stop().animate({
            width: 224
        //当前元素中子代类名为small的元素淡出,其兄弟元素淡入
        //经过当前li,让当前li的小图片淡出,大图片淡入
        }).find(".small").stop().fadeOut().siblings(".big").stop().fadeIn();
        //当前元素的所有li兄弟的元素执行动画
        $(this).siblings("li").stop().animate({
            width: 69
        //经过当前li,让当前li的所有兄弟元素的小图片淡入,大图片淡出
        //指定的子代元素中类名为small的元素淡入,其兄弟元素淡出
        }).find(".small").stop().fadeIn().siblings(".big").stop().fadeOut();
      })
    })

这样我们的手风琴案例就完成了

再次声明:案例原创作者:黑马——pink老师

二度创做者:前端小窝

感谢观看,学习前端,关注小蜗

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery实现王者荣耀手风琴案例(知识块讲解+案例) 的相关文章

  • WSL2 Ubuntu Can‘t open display解决方法

    使用MobaXterm开启Ubuntu后 xff0c ncview打开文件时报错 xff1a MoTTY X11 proxy Unsupported authorisation protocol Error Can 39 t open di
  • Ansible——部署ansible

    1 ansible清单 清单 xff1a 定义ansible将要管理的一批主机 xff0c 可以通过在静态文本文件中定义或外部来源获取信息的脚本来动态确定 xff0c 因此 xff0c 分为静态主机清单 xff08 包括INI或YAML样式
  • nltk安装出错,nltk_data语料库下载

    首先 xff0c 安装nltk要有nltk库和nltk数据包 xff0c 下载方法网上也很全面 但本文是在在使用nltk中的语料库omw 1 4 主要用于词性还原 xff0c 无法找到对应文件 环境 xff1a pycharm 3 1 An
  • Ubuntu ver.22.04.2 root用户登录

    ps xff1a 因为站内的多种方法需要的文件 xff0c 我的白板机没有 xff0c 于是提供下自己的解决思路 补充 xff1a 一种可能的方法 xff1a 打开终端 xff0c 键入sudo i 回车 xff0c 并输入当前账户的密码
  • go语言中time包基础内容

    目录 一 介绍简单的几个时间UTC CST CDT 二 获取时间的函数 三 时间的加 减 等 四 判断两时间发生前后 五 周期性定时器 time Tick 时间间隔 六 时间也有格式化 七 时间字符串格式的解析 八 时区 xff08 tim
  • 一,HTML&CSS

    一个网页是由三部分组成 xff0c 分别是 xff1a 结构 xff1a 对应的是 HTML 语言表现 xff1a 对应的是 CSS 语言行为 xff1a 对应的是 JavaScript 语言 1 HTML 1 xff09 文件结构 xff
  • centos7学习笔记:开启虚拟机黑屏

    问题 xff1a centos7开机进入到登录界面黑屏 xff0c 无法登陆到图形化界面 因为我自己之前出现过一次这种情况 xff0c 上一次删除了 xff0c 但又出现这种问题了 xff0c 所以打算记录下来 xff0c 最后其实是做了个
  • windows修改cmd终端样式

    一下为我的终端样式 xff08 有点丑 xff09 修改这个其实很简单 首先 win 43 r 输入 regedit 在上面搜索 计算机 HKEY LOCAL MACHINE SOFTWARE Microsoft Command Proce
  • SpringCloud ---启动顺序

    1 启动Eureka服务模块 2 启动Eureka客户端被调用者模块 3 最后启动Eureka调用者模块
  • Zabbix6.0LTS安装流程

    安装环境选择 xff1a eSXI6 7 43 CentOS8 43 Zabbix6 0LTS 43 MySQL 43 Apache zabbix官方网站 xff1a 下载Zabbix 1 打开命令行控制台 xff08 ctrl 43 al
  • Java中Arrays类中的数组操作方法详解

    前言 我们讲到了一维数组和二维数组以及开发工具eclipse的配置 java util Arrays 类能方便地操作数组 xff0c 它提供的所有方法都是静态的 具有以下功能 xff1a 替换元素以及填充元素 xff1a 通过 fill 方
  • 【一行命令】查看Linux系统查看端口长连接数量

    netstat an grep 8080 wc l
  • JAVA中集合类概述

    目录 前言 一 集合类概述 二 Collection 1 List实现 2 set实现 三 Map 总结 前言 这篇文章是根据张席主编的 JAVA语言程序设计教程 提炼出来的一些JAVA中集合的知识 xff0c 还会加上我在编程过程中的遇到
  • 归并排序算法

    目录 何为归并排序 排序步骤 合并过程 全过程 归并排序实现代码 xff08 C语言描述 xff09 复杂度分析 归并排序的优缺点 何为归并排序 归并排序 merge sort 是建立在归并操作上的一种有效 xff0c 稳定的排序算法 xf
  • 生产者消费者设计模式

    生产者和消费者模式 是一个经典的多线程设计模式 xff0c 生产者和消费者在同一时间段内共用同一个存储空间 xff0c 生产者往存储空间中添加产品 xff0c 消费者从存储空间中取走产品 xff0c 当存储空间为空时 xff0c 消费者阻塞
  • MySQL/MariaDB 字段约束

    主键约束 primary key 唯一且不为空 主键约束 xff1a 如果为一个列添加了主键约束 xff0c 那么这个列就是主键 xff0c 主键的特点是唯一且不能为空 通常情况下 xff0c 每张表都会有主键 添加主键约束 xff0c 例
  • MySQL/MariaDB 时间函数

    获取年月日时分秒 SELECT NOW 年月日及当前时间 SELECT CURDATE 年月日 SELECT CURRENT DATE 年月日 SELECT CURTIME 时分秒 SELECT CURRENT TIME 时分秒 年份 YE
  • MySQL/MariaDB 查询语句

    基础表 emp 去重查询 DISTINCT 查询职位 SELECT job from emp 显示所有职位 SELECT DISTINCT job FROM emp 查看表中包含的所有job类型 xff0c 重复的只显示一个 输出结果 限制
  • Spring框架通过工厂实现对象实例化过程

  • Eclipse常用设置

    1 界面风格 2 代码字体字号 3 工作空间编码

随机推荐

  • SpringBoot整合HikariCP连接池

    整合 HikariCP 连接池 创建依赖 配置连接池 打开 application properties 配置文件 xff0c 添加如下内容 spring datasource url 61 jdbc mysql dbgoods serve
  • SpringBoot框架整合MyBatis

    添加 MyBatis 启动依赖 参考官网mybatis org spring 找到Spring Boot菜单选项 基于菜单项找到MyBatis启动依赖 xff0c 一定要设置版本 xff0c Spring Boot 中没有设置 MyBati
  • BadTokenException: Unable to add window -- token android.os.BinderProxy

    由于遇到的是BadTokenException这个异常 xff0c 所以搜资料总结了一下 xff1a 这个异常总共有一下几种出现方式 xff1a 1 Unable to add window token null is not valid
  • SpringBoot框架整合SpringMVC、Mybatis框架,对数据库操作的工作原理

    Controller层 Controller层是接收用户访问的url信息 xff0c 再将获取到的内容发送到其他层级进行处理 xff0c 处理完成后返回新的url xff0c 使用户得到想要查询或是其他操作的页面 64 Controller
  • Lombok插件应用

    Lombok安装步骤 https blog csdn net weixin 47253919 article details 119871501 spm 61 1001 2014 3001 5502 常用注解 64 Setter 用于为描述
  • 类的属性(公有属性,受保护属性,私有属性)

    x是类的公有属性 class Animal x 61 10 def test self print Animal x print self x self是类本身 xff0c 等于Animal class Dog Animal def tes
  • linux网络配置(超简单,一看就会)

    2022 11 19 文章目录 前言一 linux网络 xff1f 二 使用步骤 1 查看本机ip 2 进入root用户 3 进入配置网络的目录 4 配置网络 5 重启网络服务 6 查看IP并测试网络 总结 一 linux网络 本章以配置虚
  • 【FPGA】四、按键消抖

    文章目录 一 按键消抖简介 二 按键消抖方式 1 硬件消抖 2 软件消抖 三 程序设计 1 设计思路 2 程序代码 3 仿真验证 总结 一 按键消抖简介 按键在我们日常生活中是很常见的 xff0c 主要有机械按键和虚拟按键 在我们用来进行F
  • 运行npm install出现这种问题怎么解决

    npm ERR code 1 npm ERR path C end springbootdtjr3 master src main resources admin admin node modules node sass npm ERR c
  • java中求平方根

    案例2 求平方根 需求 输入一个大于等于2的整数x xff0c 计算并返回x的平方根 结果只保留整数部分 xff0c 小数部分将被舍去 分析 计算x的平方根 就是x进行开方 开平方的调用函数是Math sqrt 但是要注意的是指保留整数部分
  • 解决Maven配置本地仓库路径不生效问题多个方法详解。(已成功解决自己遇到的问题)

    首先我尝试了很多种方法 xff0c 就是这个方法让我成功 xff0c 和大家分享一下 xff01 xff08 我用方法二成功的 xff01 xff09 maven本地仓库默认值 xff1a 用户家目录 m2 repository 由于本地仓
  • JAVA编写程序,打印九九乘法表(涵盖三种表达形式)

    运用java写出九九乘法表可以概括为三种表达形式 一是长方型 二是正三角型 三是倒三角型 无论是那种 xff0c 用的都是for循环 思路 xff1a 用两个for循环嵌套循环出因子a乘因子b等于乘积 xff0c 外循环代表因子a xff0
  • 【路径规划】蚁群算法机器人栅格地图最短路径规划【含Matlab源码 1618期】

    一 蚁群算法及栅格地图简介 1 蚁群算法 1 1 蚁群算法的提出 蚁群算法 ant colony optimization ACO 又称蚂蚁算法 是一种用来寻找优化路径的机率型算法 它由Marco Dorigo于1992年在他的博士论文中提
  • 遇见Java

    Java是一门面向对象的编程语言 xff0c 不仅吸收了C 43 43 语言的各种优点 xff0c 还摒弃了C 43 43 里难以理解的多继承 指针等概念 xff0c 因此Java语言具有功能强大和简单易用两个特征 Java语言作为静态面向
  • CSS基础-17-拓展-标签居中

    拓展 标签水平居中方法总结 margin 0 auto 如果需要让div p h 大盒子 水平居中 可以通过margin 0 auto 实现 注意点 1 如果需要让 div p h 大盒子 水平居中 xff0c 直接给当前元素本身设置即可
  • 用HTML和css写一个简单地购物小票

    效果图 HTML代码 lt DOCTYPE html gt lt html gt lt head gt lt meta charset 61 34 utf 8 34 gt lt title gt 小票 lt title gt lt link
  • AJAX详解

    1 AJAX是什么 xff1f AJAX即 Asynchronous JavaScript and XML xff08 异步的JavaScript与XML技术 xff09 xff0c 指的是一套综合了多项技术的浏览器端网页开发技术 2 异步
  • 计算机一级必考的10个Excel函数,让我来告诉你

    计算机一级必考的10个Excel函数 xff0c 让我来告诉你 有同学问 xff1a 计算机一级Excel要考哪些函数啊 xff1f xff0c 下图的10个函数就是一级必考的 001 sum求和函数 定义 xff1a 对指定参数进行求和
  • 【一则文章带你了解JavaScript】

    前言 xff1a 想要入门JS xff0c 那我们必须首先了解一下JS的作用 xff0c 我们学习后可以做些什么呢 xff1f 一 首先 xff0c 网页中的表单动态校验以及密码强度的检测是会用到JS的 二 其次 xff0c 我们的网页高级
  • jQuery实现王者荣耀手风琴案例(知识块讲解+案例)

    前言 xff1a 这个案例是几年前的了 xff0c 现在的王者官网是没有这个手风琴模块的 xff0c 我了解到这个案例 xff0c 是受到了黑马程序员知名教师 pink老师的启发 xff0c 我相信大家也都不陌生 xff0c 同样也是我非常