gpt4 book ai didi

javascript - 为什么我的 JQuery 运行缓慢?

转载 作者:太空狗 更新时间:2023-10-29 16:00:21 25 4
gpt4 key购买 nike

我对 JQuery 非常陌生,我今天才开始研究它。我四处寻找可能导致这段代码不起作用的原因。当您向下滚动时,我希望 h1 移到一侧并出现一个菜单按钮。那行得通,但是当我再次向上滚动时,需要很长时间才能自行反转。我已经尝试对任何可能导致延迟或其他原因的问题进行罚款,但据我所知,没有任何问题。网站链接:http://www.dragonmath.net/rockets

这是我的代码:

HTML

    <!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="styles/main.css" />
<title>Rockets</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>
<body>
<header>
<img id="menu" src="images/menu1.png" />
<div id="headerdiv">
<h1>Rockets</h1>
<img id="logo" src="images/logo1.png" />
</div>
</header>
<nav>
<ul>
<li>
<a>Space Race</a>
</li>
<li>
<a>SpaceX</a>
</li>
</ul>
</nav>
<script>
$( document ).ready(function() {
var $menu = $('img#menu');
var $headerdiv = $("div#headerdiv")
var $nav = $('nav');


$(window).on('scroll', function () {
if ($(window).scrollTop() > 40) {
$headerdiv.addClass("testheaderdiv");
$menu.delay(800).slideDown(800);
$nav.addClass('testnav');
}
if ($(window).scrollTop() < 40) {
$menu.slideUp(800, function () {
$headerdiv.removeClass('testheaderdiv');
});
$nav.removeClass('testnav');
}
});
});
</script>
</body>
</html>

CSS

    * {
margin: 0px;
padding: 0px;
color: #00AAFF;
font-family: Arial;
}

body {
height: 800px;
}

header {
position: fixed;
top: 0px;
left: 0px;
height: 100px;
width: 100%;
background-color: #333;
z-index: 1;
}

div#headerdiv {
display: inline;
transition: all 1s;
}

h1 {
display: inline;
margin-left: 40px;
font-size: 40px;
}

header > img#menu {
position: fixed;
top: 20px;
left: 40px;
width: 40px;
height: 40px;
display: none;
}

header > div > img#logo {
display: inline;
width: 60px;
height: 60px;
position: relative;
top: 18px;
left: 20px;
transition: height 1s, width 1s;
}

nav {
position: relative;
top: 100px;
height: 40px;
width: 100%;
background-color: #333;
}

nav > ul {
list-style: none;
}

nav > ul > li {
display: inline-block;
height: 40px;
width: 200px;
text-align: center;
border-right: 1px solid #00AAFF;
}

nav > ul > li > a {
position: relative;
top: 6px;
}

.testheaderdiv {
margin-left: 80px;
transition: all 1s;
}

.testnav {
display: none;
}

最佳答案

我在代码中看到的主要问题是如何处理滚动,对于每个滚动事件,您都会向 menu 元素添加延迟。

那么试试

$(document).ready(function () {
var $menu = $('img#menu');
var $headerdiv = $("div#headerdiv")
var $nav = $('nav');


var flag;
$(window).on('scroll', function () {
if (flag !== 1 && $(window).scrollTop() > 40) {
$headerdiv.addClass("testheaderdiv");
$menu.stop(true, true).delay(800).slideDown(800);
$nav.addClass('testnav');
flag = 1;
}
if (flag !== 2 && $(window).scrollTop() < 40) {
$menu.stop(true, true).slideUp(800, function () {
$headerdiv.removeClass('testheaderdiv');
});
$nav.removeClass('testnav');
flag = 2;
}
});
});

关于javascript - 为什么我的 JQuery 运行缓慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30136693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com