导航菜单-宽度逐渐伸长缩短

本文介绍了一种使用纯JS和JQuery实现网页导航栏鼠标悬停时宽度平滑变化的方法。通过设置定时器逐步改变链接元素的宽度,并在鼠标移开时恢复原状,实现了美观且交互友好的导航菜单。该效果适用于多种浏览器环境。



//JS实现:

    <script>
        window.onload = function () {
            var aA = document.getElementsByTagName('a');
            for (var i = 0; i < aA.length; i++) {
                aA[i].onmouseover = function () {
                    clearInterval(this.time)
                    var This = this;
                    This.time = setInterval(function () {
                        This.style.width = This.offsetWidth + 8 + "px";
                        if (This.offsetWidth >= 180) {
                            clearInterval(This.time)
                        }
                    }, 30)
                }

                aA[i].onmouseout = function () {
                    clearInterval(this.time)
                    var This = this;
                    This.time = setInterval(function () {
                        This.style.width = This.offsetWidth - 8 + "px";
                        if (This.offsetWidth <= 100) {
                            clearInterval(This.time)
                        }
                    }, 30)
                }
            }
        }
    </script>

//JQ实现

  <script type="text/javascript" src="jquery-3.2.1.min.js"></script>
    <script>


        $(function () {
            $('a').hover(
                function () {
                    $(this).animate({ "width": "160px" }, 200);
                },
                 function () {
                     $(this).animate({ "width": "120px" }, 200);
                 }
          )


        })
    </script>

CSS样式

<style>
        * {
            margin: 0;
            font-size: 14px;
        }


        ul {
            list-style: none;
            height: 50px;
            border-bottom: 5px solid #000;
        }


        li {
            float: left;
            margin-top: 20px;
        }


        a {
            text-decoration: none;
            display: block;
            height: 30px;
            line-height: 30px;
            width: 100px;
            background-color: #CCC;
            margin-bottom: 1px;
            color: #000;
            text-align: center;
        }


            a:hover {
                background-color: #F30;
                color: #FFF;
            }
    </style>

<body>
    <form id="form1" runat="server">
        <ul>
            <li><a href="#">首页</a></li>
            <li><a href="#">新闻快讯</a></li>
            <li><a href="#">产品展示</a></li>
            <li><a href="#">售后服务</a></li>
            <li><a href="#">联系我们</a></li>
        </ul>
    </form>
</body>

### 实现虚幻引擎中 UI 控制物体缩放动画的脚本蓝图 在虚幻引擎中,通过蓝图可以实现用户界面(UI)控制物体的缩放动画。以下是具体实现方法和相关技术细节: #### 1. 创建 UMG 按钮并绑定事件 在虚幻引擎中,UMG 是用于创建用户界面的主要工具。需要创建一个按钮控件,并为其绑定点击事件以触发缩放逻辑。 - 打开 UMG 编辑器,创建一个新的 Widget Blueprint。 - 在 Widget 中添加一个 Button 控件,并设置其显示文本或图标。 - 右键点击 Button 控件,在“添加事件”菜单中选择“OnClicked”事件[^2]。 #### 2. 创建目标物体并设置可缩放属性 目标物体可以是一个 Static Mesh 或 Skeletal Mesh。为了实现缩放效果,需要确保物体的 Transform 属性可以通过蓝图动态修改。 - 在关卡中放置一个目标物体(例如 Cube 或 Sphere)。 - 确保该物体的 Transform 组件允许动态调整 Scale 属性。 #### 3. 使用关卡蓝图连接 UI 和物体 由于关卡蓝图是关卡唯一的全局事件脚本[^3],可以利用它将 UMG 的按钮事件与目标物体的缩放逻辑连接起来。 - 打开关卡蓝图。 - 将之前创建的 Widget Blueprint 添加到关卡中,并命名为 `MyWidget`。 - 在关卡蓝图中,拖拽 `MyWidget` 的按钮事件引脚,创建一个事件节点。 #### 4. 编写缩放逻辑 使用蓝图的 Timeline 节点来实现平滑的缩放动画。Timeline 是 Unity 中 Timeline 工具的类似功能,可以用来控制物体的属性变化[^1]。 ```blueprint // 创建 Timeline 节点 1. 在关卡蓝图中添加一个 Timeline 节点。 2. 设置 Timeline 的 Float Track,用于控制目标物体的 Scale 属性。 3. 在 Float Track 中定义关键帧:起始值为 1.0(初始缩放),结束值为 2.0(伸长后的缩放)。 4. 将 Timeline 的输出值连接到目标物体的 Scale 属性。 // 触发 Timeline 1. 将按钮的 OnClicked 事件连接到 Timeline 的 Play 输入端。 2. 当按钮被点击时,Timeline 开始播放,目标物体逐渐伸长。 ``` #### 5. 实现双向控制(伸长缩短) 为了实现物品的双向缩放伸长缩短),可以在蓝图中添加一个布尔变量 `IsExtended` 来记录当前状态。 ```blueprint // 布尔变量逻辑 1. 在关卡蓝图中创建一个布尔变量 IsExtended,默认值为 false。 2. 在按钮的 OnClicked 事件中检查 IsExtended 的值: - 如果为 false,则播放伸长动画,并将 IsExtended 设置为 true。 - 如果为 true,则反向播放动画(缩短),并将 IsExtended 设置为 false。 3. 使用 Timeline 的 Reverse 方法实现反向播放。 ``` #### 6. 测试和优化 完成上述步骤后,可以在编辑器中测试功能是否正常。如果需要进一步优化,可以调整 Timeline 的关键帧时间间隔或添加插值曲线以获得更自然的动画效果。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值