【JavaScript】王者荣耀英雄卡牌动画切换效果

动画呈现 

 

代码详解

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>王者英雄卡牌动画切换</title>
    <style>
        * {
            box-sizing: border-box;
        }
        body {
            font-family: 'Muli', sans-serif;
            display: flex;
            align-items: center;
            justify-content: center;
            height: 100vh;
            overflow: hidden;
            margin: 0;
        }
		/* 设置容器样式 */
        .container {    
            display: flex;
            width: 90vw;
        }
		/* 设置图片面板样式 */
        .picture {
            background-size: cover;
            background-position: center;
            background-repeat: no-repeat;
            height: 80vh;
            border-radius: 50px;
            color: #fff;
            cursor: pointer;
            flex: 0.5;
            margin: 10px;
            position: relative;
            transition: all 700ms ease-in;
        }
		/* 设置图片中的标签 */
        .picture h3 {
            font-size: 24px;
            position: absolute;
            bottom: 20px;
            left: 20px;
            margin: 0;
            opacity: 0;
        }
		/* 设置图片点击激活状态时,flex属性将变为5,使其宽度增大。 */
        .picture.active {
            flex: 5;
        }
		/* 设置当图片激活时,内部的<h3>元素将变为不透明,并有一个0.3秒的渐变过渡效果,延迟0.4秒后开始。 */
        .picture.active h3 {
            opacity: 1;
            transition: opacity 0.3s ease-in 0.4s;
        }
		/* 媒体查询针对最大宽度为480px的屏幕,调整.container的宽度为100%,并隐藏第四个和第五个.picture元素。 */
        @media (max-width: 480px) {
            .container {
                width: 100vw;
            }

            .picture:nth-of-type(4),
            .picture:nth-of-type(5) {
                display: none;
            }
        }
    </style>
    <script>
		// 定义一个匿名函数用于处理面板点击事件
        window.onload = function(){		
            const pictures = document.querySelectorAll('.picture')     //获取所有类名为.picture的元素
                pictures.forEach(picture => {						//遍历所有面板元素,并为每个面板添加点击事件
                    picture.addEventListener('click', () => {
                        removeActiveClasses()
                        picture.classList.add('active')
                    })
                })
				// 移除所有面板的激活状态
            function removeActiveClasses() {
                pictures.forEach(picture => {
                    picture.classList.remove('active')
                })
            }    
        }
        
    </script>
</head>

<body>
    <div class="container">
        <div class="picture active"
            style="background-image: url('https://lcmimage.ecology.smoba.qq.com/public/dfafd41425edab7a96a36f19a977f217.jpg?sign=1721470172-M4NMJW-0-ea8a44845fde9f63d49a30d1b3e887e3&imageMogr2/strip/format/webp/quality/80!')">
            <h3>时之祈愿 瑶</h3>
        </div>
        <div class="picture"
            style="background-image: url('https://lcmimage.ecology.smoba.qq.com/public/6a20f810c7355227b6922aa885959fc6.jpg?sign=1721470464-xd7ir3-0-79e4fb6b348bc8bae786f87866b384d8&imageMogr2/strip/format/webp/quality/80!')">
            <h3>心动手记 多利亚</h3>
        </div>
        <div class="picture"
            style="background-image: url('https://lcmimage.ecology.smoba.qq.com/public/af10c57592f69fd5f3c87c10fcae1ad1.jpg?sign=1721470528-XvVdch-0-fbe0ab12f33d8776f7bc9e1dbf118086&imageMogr2/strip/format/webp/quality/80!')">
            <h3>至美·乘鲤谣 西施</h3>
        </div>
        <div class="picture"
            style="background-image: url('https://lcmimage.ecology.smoba.qq.com/public/12f356942878f5fc5706c9a308e1754e.jpg?sign=1721470592-WkmBC8-0-4d63acb1f01efabed6517bdded51c84c&imageMogr2/strip/format/webp/quality/80!')">
            <h3>乘龙·聚宝船 安琪拉</h3>
        </div>
        <div class="picture"
            style="background-image: url('https://lcmimage.ecology.smoba.qq.com/public/fa6c560ee4fdeab982f2504409a3a906.jpg?sign=1721470692-3dZjl2-0-5a663d548c28173b3206b4b7f521d0b7&imageMogr2/strip/format/webp/quality/80!')">
            <h3>时之魔女 小乔</h3>
        </div>
		<!-- 由于图片分辨率较高,且不是保存在本地,故图片刚渲染时卡顿时正常的情况,缓存一会就好了 -->
    </div>
</body>

</html>

 感谢点赞、收藏加关注~

 

  • 13
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaScript是一种流行的脚本语言,常用于开发网页应用。要实现一个伪王者荣耀游戏源码,我们需要运用JavaScript的基本语法和一些Web开发技术。 首先,我们需要创建一个HTML页面,用于展示游戏的界面和玩家的操作。可以使用HTML的canvas元素来绘制游戏场景和角色。通过JavaScript,我们可以使用canvas的API对场景和角色进行控制和绘制。 其次,我们需要设计游戏的角色和规则。伪王者荣耀源码中可能涉及到英雄的选择、技能的释放、游戏得分等方面。我们可以使用JavaScript的面向对象编程来创建角色类和技能类,并定义相应的属性和方法。通过监听玩家的操作事件,我们可以实现角色的移动、技能的释放等效果。 另外,我们需要处理游戏的逻辑和交互。通过JavaScript,我们可以实现游戏的循环,不断更新游戏的状态和检测碰撞。可以使用定时器和循环来控制游戏的进行,并通过监听键盘事件或者鼠标事件来响应玩家的操作。 最后,我们需要美化游戏的界面和优化性能。可以使用CSS来设置页面元素的样式和布局,使游戏界面更加美观。通过优化JavaScript代码,可以提高游戏的性能和流畅度。 总之,实现伪王者荣耀的游戏源码涉及到HTML、JavaScript和CSS等技术的综合运用。通过合理的设计和编程,我们可以实现一个基于Web的伪王者荣耀游戏,提供给玩家一个与真实游戏相似的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小陈从不熬夜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值