Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 隐藏两个导航元素,直到其水平滚动到页面的70像素_Javascript_Jquery_Html_Css_Navigation - Fatal编程技术网

Javascript 隐藏两个导航元素,直到其水平滚动到页面的70像素

Javascript 隐藏两个导航元素,直到其水平滚动到页面的70像素,javascript,jquery,html,css,navigation,Javascript,Jquery,Html,Css,Navigation,我在页面的左上角有一个徽标,在页面的右上角有一个搜索栏。我有一个位置:固定导航栏位于该徽标和搜索栏下方,当徽标部分向下滚动时,它将作为固定导航栏 现在的问题是,当我向下滚动logo部分时,搜索栏和另一个元素应该进入导航栏的可见模式 这是 请帮我做这件事,我找了很多,但这耗尽了我的一天 window.onscroll = changePos;function changePos() { var header = document.getElementById("header"); if (wind

我在页面的左上角有一个徽标,在页面的右上角有一个搜索栏。我有一个位置:固定导航栏位于该徽标和搜索栏下方,当徽标部分向下滚动时,它将作为固定导航栏

现在的问题是,当我向下滚动logo部分时,搜索栏和另一个元素应该进入导航栏的可见模式

这是

请帮我做这件事,我找了很多,但这耗尽了我的一天

window.onscroll = changePos;function changePos() {
var header = document.getElementById("header");
if (window.pageYOffset > 70) {
    header.style.position = "fixed";
    header.style.top = "0";
} else {
    header.style.position = "";
    header.style.top = "";
}}
您可以尝试以下方法:

  • 首先添加一个类以隐藏元素:

     <li class="hiden"> <a href="#">Logo</a></li>
     <li class="hiden"> <a href="#">Search</a></li>
    
     .wrapper #nav li.hiden {
        display:none;
     }
    

演示

我会将徽标和搜索放在标题中,只要标题不固定,就让它们处于绝对/相对位置。这意味着我不会直接用JS修复它,而是给头一个CSS类,该类具有fixed属性

我写了全新的东西,因为我对HTML进行了一点重构,因为我认为没有必要写多余的HTML。一个jsfiddle在文章的末尾

HTML:

还有CSS的东西:

html, body { margin: 0; padding: 0; }
body { font-family: sans-serif; }

#top-space {
    height: 70px;
}
#navigation {
    top: 0;
    width: 100%;
    position: static;
    height: 40px;
    line-height: 40px;
    vertical-align: middle;

    background: black;
}

#navigation.fixed {
    position: fixed;
}

#navigation a {
    display: inline-block;
    text-decoration: none;
    color: white;
    padding: 0 1em;
}

#logo {
    position: absolute;
    float: left;
}
#search {
    position: relative;
    float: right;
}

#domain-name, #search {
    margin-top: -70px;
}

#navigation.fixed #domain-name,
#navigation.fixed #search {
    position: static;
    color: white;
    margin-top: 0;
}
或者只是在JSFIDLE中查找它

你是说像这样的事吗


你能提供一些代码吗?@NathanLee是的,现在我用Jquery这样做了吗?@Danko嘿,就是这样,非常感谢。我将应用它。@fastto是否为这两个元素添加类。。。如果你能把这个问题复制成fiddle@Fastnto添加一个类是错误的。。您有
class=“nav\u search”class=“hiden”
副本无效,它必须是
class=“nav\u search hiden”
,并且类之间有空格
<div id="top-space"></div>
<div id="navigation">
    <span id="logo">Logo</span>
    <span id="search">Search</span>

    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
    <a href="#">Link 3</a>
    <a href="#">Link 4</a>
</div>

<div id="content">...</div>
window.onscroll = changePos;

function changePos () {
    var header = document.getElementById("navigation");

    if (window.pageYOffset > 70) {
        header.className = 'fixed';
    } else {
        header.className = '';
    }
}
html, body { margin: 0; padding: 0; }
body { font-family: sans-serif; }

#top-space {
    height: 70px;
}
#navigation {
    top: 0;
    width: 100%;
    position: static;
    height: 40px;
    line-height: 40px;
    vertical-align: middle;

    background: black;
}

#navigation.fixed {
    position: fixed;
}

#navigation a {
    display: inline-block;
    text-decoration: none;
    color: white;
    padding: 0 1em;
}

#logo {
    position: absolute;
    float: left;
}
#search {
    position: relative;
    float: right;
}

#domain-name, #search {
    margin-top: -70px;
}

#navigation.fixed #domain-name,
#navigation.fixed #search {
    position: static;
    color: white;
    margin-top: 0;
}