向下滚动页面后固定标题跳转

时间:2014-07-05 12:02:09

标签: javascript jquery html css css3

我发现了一些与此相似的问题,但无法帮助我。 当我向下滚动页面时,页眉/导航栏不会与页面“平滑”地移动。当我在页面上达到一定数量后,标题会“跳”,但之后就没问题了。 我有一个固定标题的代码:

$(window).scroll(function(){
    if ($(window).scrollTop() >= 147) {
    $("#top_nav").addClass("fixed");
    $("#top_nav").css("position", "fixed");
    $("#top_rule").hide();
    $("#bottom_rule").hide();
    } 
    else {
    $("#top_nav").removeClass("fixed");
    $("#top_nav").css("position", "initial");
    $("#top_rule").show();
    $("#bottom_rule").show();
    }
 });

我的CSS:

.fixed {
    width: 100%;
    background: white;
    border-bottom: 1px solid black;
    box-shadow: 0 0 20px #000000;
    top: 0px;
    padding-top: 15px;
    padding: 10px;
}

我的CSS中没有position: fixed,因为某些原因它不起作用,所以我使用jQuery将位置设置为固定。

我在jsfiddle.net上发布了我的其余页面 http://jsfiddle.net/5n4pF/ 如果我没有解释推进器,请询问,我会尝试更好地解释:) 提前致谢

修改的 当我达到147px时,它一定不能跳跃。它看起来好像是“隐藏和显示”。相反,当您向下滚动页面时,它必须顺利移动。

2 个答案:

答案 0 :(得分:2)

您应该将标题置于绝对位置。并给新闻一个边距 - 标题的大小。 你的职位:固定不起作用的原因是因为你把它固定在一个相对元素里面。它被固定在该元素内部(这不是您想要的,因为您希望它固定在页面顶部)。

它因为你将元素从静态更改为固定而跳转。突然间你错过了布局中53个像素的高度。这让它跳了起来。

在这个小提琴中:http://jsfiddle.net/5n4pF/3/

* {
    margin: 0px;
    padding: 0px;
}

header {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    text-align: center;
}

#black_top {
    background: black;
    font-size: 5px;
    display:block;
    width: 100%;
    height: 5px;
}

#logo_header {
    margin-top: 20px;
}

.list_item {
    list-style-type: none;
    display: inline-block;
    font: 16px Arial;
    padding: 10px 30px 10px 30px;
    text-align: center;
}

#top_nav {
    font: Arial 30px;
    display: block;
     width: 100%;
}

.nav_links {
    text-decoration: none;
    color: black;
}

hr {
    margin-right: 30px;
    margin-left: 30px;
    color: #f00;
    opacity: 0.3;
}

.nav_bullets {
    color: #D6D6D6;
}

::-moz-selection {
    background: #93E6E5;
}

::selection {
    background: #b3d4fc;
}

#news_block {
    /*Chrome & Safari*/
    -webkit-column-count: 3;
    -webkit-column-gap: 40px;
    /*Firefox*/
    -moz-column-count:3;
    -moz-column-gap: 40px;
    margin: 20px;
    position: absolute;
    top: 249px;
    width: 100%;
    box-sizing: border-box;
}

#search_field {
    font-size: 25px;
}

.fixed {
    width: 100%;
    box-sizing: border-box;
    background: white;
    border-bottom: 1px solid black;
    box-shadow: 0 0 20px #000000;
    top: 0;
    position: fixed;
    padding-top: 15px;
    padding: 10px;
}

给出了正确的代码。它仍然有点宽松的东西。但是一般来说代码并不是很整洁。所以我会把那部分留给你。希望这对你有用。

答案 1 :(得分:-1)

我今天正在努力,我找到了解决方案。 从

更改CSS
.fixed-header .main-header {
    display: none;
}

.fixed-header .main-header {
    display: inline;
}