jQuery-<王者荣耀>-手风琴效果

前言:初始jQuery,今天来做个练习实现王者荣耀的手风琴效果。
---------------------我们先来看看官网上面实现的效果:--------------------------------------
在这里插入图片描述

接下来我们来想想怎么实现这个效果:

一.思路分析

由图分析,需要的元素有:ul,li,a,img;

一个li下存在一个a标签,a标签里面包含两个img标签;

需要的自定义动画以及元素的淡入淡出

自定义动画:animate(params,[speed],[easing],[fn])

  1. params:一组包含作为动画属性和终值的样式属性和及其值的集合
  2. speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)
  3. easing:要使用的擦除效果的名称(需要插件支持).默认jQuery提供"linear" 和 “swing”.
  4. fn:在动画完成时执行的函数,每个元素执行一次。

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

  1. speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)
  2. easing:(Optional) 用来指定切换效果,默认是"swing",可用参数"linear"
  3. fn:在动画完成时执行的函数,每个元素执行一次。

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

  1. speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)
  2. easing:(Optional) 用来指定切换效果,默认是"swing",可用参数"linear"
  3. fn:在动画完成时执行的函数,每个元素执行一次。

二.具体实现

<!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>
        /* css初始化 */
        
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        /* 整体的ul进行简单的样式设计 */
        
        ul {
            list-style: none;
            width: 641px;
            height: 72px;
            border: 1px solid #666;
            margin: 100px auto;
        }
        /* 设置浮动以及大小 */
        
        ul li {
            float: left;
            width: 69px;
            height: 69px;
        }
        /* a标签的大小以及为父元素设置相对定位 */
        
        ul li a {
            display: inline-block;
            width: 100%;
            height: 100%;
            position: relative;
        }
        /* img标签的大小以及为子元素设置相对定位 */
        
        ul li a img {
            width: 100%;
            height: 100%;
            position: absolute;
        }
        /* 设置一个初始的类,因为第一张默认为大图 */
        
        .change {
            width: 224px;
            height: 100%;
        }
        /* 将大图都先进行隐藏 */
        
        .big {
            display: none;
        }
    </style>
    <script src="jQuery/jquery-3.5.1.js"></script>
    <!-- 引入jQuery文件 -->
</head>

<body>
    <ul>
        <li class="change">
            <a href="#">
                <img class="small" src="img/xhc1.jpg" alt="">
                <!-- 先把第一张大图显示出来 -->
                <img class="big" src="img/xhc2.png" alt="" style="display:block;">
            </a>
        </li>
        <li>
            <a href="#">
                <img class="small" src="img/dw1.jpg" alt="">
                <img class="big" src="img/dw2.png" alt="">
            </a>
        </li>
        <li>
            <a href="#">
                <img class="small" src="img/jl1.jpg" alt="">
                <img class="big" src="img/jl2.png" alt="">
            </a>
        </li>
        <li>
            <a href="#">
                <img class="small" src="img/smx1.jpg" alt="">
                <img class="big" src="img/smx2.png" alt="">
            </a>
        </li>
        <li>
            <a href="#">
                <img class="small" src="img/wzj1.jpg" alt="">
                <img class="big" src="img/wzj2.png" alt="">
            </a>
        </li>
        <li>
            <a href="#">
                <img class="small" src="img/xc1.jpg" alt="">
                <img class="big" src="img/xc2.png" alt="">
            </a>
        </li>
        <li>
            <a href="#">
                <img class="small" src="img/y1.jpg" alt="">
                <img class="big" src="img/y2.png" alt="">
            </a>
        </li>
    </ul>
    <script type="text/javascript">
        $(function() {
            $("ul li").mouseenter(function() {
                //li 宽度变为 224px,小图片淡出,大图片淡入
                $(this).stop().animate({
                    width: 224
                }).find(".small").stop().fadeOut(600).siblings(".big").stop().fadeIn(600);
                //兄弟小li宽度变为69px, 小图片淡入, 大图片淡出
                $(this).siblings("li").stop().animate({
                    width: 69
                }).find(".small").stop().fadeIn(600).siblings(".big").stop().fadeOut(600);
            })
        });
    </script>
</body>

</html>

注意:也许有人会说为什么采用stop()这个方法呢?这儿来解释一下:

动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。停止动画排队的方法为:stop() ;

  1. stop() 方法用于停止动画或效果。
  2. stop() 写到动画或者效果的前面, 相当于停止结束上一次的动画。

所以每次使用动画之前,先调用 stop() ,在调用动画。

三.实现效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木偶☜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值