首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修复滚动条抖动后的div

问修复滚动条抖动后的div
EN

Stack Overflow用户
提问于 2017-04-11 17:10:45
回答 1查看 1.1K关注 0票数 0

我正在尝试创建一个简单的jQuery函数,当窗口向下滚动超过某个点时,该函数会使导航栏div固定。我已经将这个点设置为标题div的高度,因为每当您滚动经过这个div时,导航栏就会变成固定的。它工作得很好,除了当我点击并拖动窗口滚动条并将其放置在div应该固定的位置时,它会上下抖动。这可能是什么原因造成的?

这是我的HTML代码:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
    <head>
        <link rel='stylesheet' type='text/css' href='css/styles.css'>
        <script src='js/jquery.js'></script>
        <script src='js/main.js'></script>
    </head>

    <body>
        <div class='header'></div>
        <div class='navbar'></div>
        <div class='about'></div>
    </body>

</html>

这是我的CSS代码: body {空白区: 0;}

代码语言:javascript
复制
.header
{
    margin: 0;
    height: 100vh;
    background-color: yellow;
}

.navbar
{
    margin: 0;
    height: 10vh;
    width: 100%;
    background-color: pink;
}

.about
{
    margin: 0;
    height: 200vh;
    background-color: red;
}

这是我的jQuery代码:

代码语言:javascript
复制
$(window).scroll(function(e){
    if ($(this).scrollTop() >= $('.header').height() && $('.navbar').css('position') != 'fixed')
    {
        $('.navbar').css('background-color', 'blue');
        $('.navbar').css({
            'position': 'fixed',
            'top': '0'
        });
    }
    else if ($(this).scrollTop() < $('.header').height() && $('.navbar').css('position') != 'relative')
    {
        $('.navbar').css('background-color', 'pink');
        $('.navbar').css({
            'position': 'relative'
        })
    }
})

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2017-04-11 18:01:00

​

代码语言:javascript
复制
$(window).scroll(function() {
	    if ($(window).scrollTop() > 30){
	        $('nav').addClass('sticky');
	    }
	    else if ($(window).scrollTop() < 30){
	        $('nav').removeClass('sticky');
	    }
	});
代码语言:javascript
复制
*{
  box-sizing: border-box;
  padding:0;
  margin:0;
}
body{
  min-height: 800px;
}
.wrapper{
   min-height: 50px;
   margin-top:30px;
   
 }
 nav{
        background-color: #f1f1f1;
        color: #000;
        padding: 15px;
        transition: all .3s;
        height: 50px;
    }
    
nav ul li{
        display:inline;
      }
      nav ul li a{
        padding: 8px;
      }
    .sticky{
        width: 100%;
        top: 0;
        left:0;
        position:fixed;
    }
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
<nav>
    <ul class="nav">
        <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
        </li>
        <li class="nav-item">
            <a class="nav-link disabled" href="#">Disabled</a>
        </li>
    </ul>
</nav>
</div>

​

以下是代码片段中的工作演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43341505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档