HTML中,使用3D动画效果后,按钮绑定事件的失效问题

文章描述了在主页导航栏中使用JavaScript进行页面重渲染时遇到的点击事件失效问题。问题出现在3D旋转动画后,点击事件不再触发。作者尝试了修改z-index和pointer-events属性,但未完全解决问题。最终,通过在li标签上直接使用onclick属性绑定JavaScript函数,成功解决了事件触发问题,但这也带来了新的挑战——避免页面跳转。解决方案是将JavaScript函数直接绑定到li标签的onclick属性上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计目标

我在主页上设计了一条导航栏,通过点击导航栏上的按钮之后,实现JavaScript的重新渲染(非网页跳转),以下是效果图。

 

发现问题:

        当我看到JavaScript成功渲染并且3D的旋转动画也在正常的进行后,很开心,毕竟目标实现了嘛。但是马上就开心不起来了。。。

        因为我发现,当我再次点击导航栏的时候,按钮的效果是被触发了的,但是按钮的点击事件没有触发。我清楚是因为3D动画的原因,因为没有添加3D动画之前我的导航栏全部都是正常的,hover伪类和点击事件都能正常地触发。

对了,先给大家看一下我的事件绑定代码:

HTML:

<ul>
    <li id="mainPage">首页</li>
    <li id="example">游戏示例</li>
    <li id="rules">游戏规则</li>
    <li id="download"><a href="./download/code.zip" download="spider.py">源码下载</a></li>
    <li id="about">关于本站</li>
</ul>

JavaScript:

function navigationInitialization() {
    document.getElementById("mainPage").onclick = mainPage
    document.getElementById("example").onclick = example
    document.getElementById("rules").onclick = rules
    // document.getElementById("download").onclick = download
    document.getElementById("about").onclick = about
}

寻找解决方法:

1、GPT

                a、修改了z-index

                        解决了部分问题,因为修改了z-index之后,我发现进入我的“游戏案例”后,导航栏  确实可以被点击了。但是点击回来之后,却无法再次点击游戏按钮,重新渲染进入界 (感觉很迷,我也不清楚为什么会这样)。        没有解决

                b、修改pointer-evnets

                        没有解决。

 2、百度

        (没有发现有用的建议)

        说法和GPT相似,可能是层叠样式的上下文混乱引起的。

3、苦思冥想

        怎么办,到这里的时候,我已经自闭了。

        因为这个问题让我摸不着头脑,因为如果是因为层叠样式的上下文混乱引起的,那么为什么的li的hover效果是可以被触发的,但是绑定在上面的按钮却不可以呢?

        

        怎么办呢?继续肝!

        观察发现,我的“源码下载”的按钮是可以被点击的,并且download的效果也是可以被触发的。这个按钮和其他的按钮有什么不一样的地方吗?

        有!在li里面有套了一个a,通过超链接来实现文件的下载。

        那我试试每个li都都套一个超链接是不是就可以了。修改了之后发现是可以的。我很高兴,但是突然发现了问题,我套了超链接标签a后,我每次点击都会发生网页的跳转,并且违背了我之前的想法:不进行网页的跳转,只进行JavaScript的渲染。所以还是失败了。

4、引入深思,解决问题

        上面的尝试,引起了我的思考,是不是JavaScript的问题?为什么我套了一个a标签,就可以了实现被点击了,为什么用JavaScript绑定的事件就无法触发呢?

        大胆(无理由)尝试,用标签的onclick属性绑定JavaScript函数,如图。竟然解决了!!!

<ul>
    <li id="mainPage" onclick="mainPage();">首页</li>
    <li id="example" onclick="example()">游戏示例</li>
    <li id="rules" onclick="rules()">游戏规则</li>
    <li id="download" onclick="download()"><a href="./download/code.zip" download="spider.py">源码下载</a></li>
    <li id="about" onclick="about()">关于本站</li>
</ul>

5、总结

        没太弄懂,感觉不可思议。

        可能是事件绑定失败吧,当时没有使用HTML 3D动画效果之前,我这样绑定都是没问题的。

        因为对JavaScript不太熟悉,也不敢多评论,不过希望解决问题的方法能够帮助到大家。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值