Javascript 固定粘性导航栏时,绝对定位div将隐藏

Javascript 固定粘性导航栏时,绝对定位div将隐藏,javascript,html,css,menu,sticky,Javascript,Html,Css,Menu,Sticky,当mynavbar触摸屏幕顶部时,下拉菜单的链接将消失 我已经使用w3schools教程和示例创建了我的页面。特别是: 这就是我的问题的例子: window.onscroll=function(){ myFunction() }; var navbar=document.getElementById(“navi”); var sticky=navbar.offsetTop; 函数myFunction(){ 如果(window.pageYOffset>=粘性){ navbar.class

当my
navbar
触摸屏幕顶部时,下拉菜单的链接将消失

我已经使用w3schools教程和示例创建了我的页面。特别是:

这就是我的问题的例子:

window.onscroll=function(){
myFunction()
};
var navbar=document.getElementById(“navi”);
var sticky=navbar.offsetTop;
函数myFunction(){
如果(window.pageYOffset>=粘性){
navbar.classList.add(“粘性”)
}否则{
navbar.classList.remove(“粘性”);
}
}
#navi{
溢出:隐藏;
背景色:#333;
字体系列:Arial;
}
.放下{
浮动:左;
溢出:隐藏;
}
.放下.放下按钮{
字体大小:16px;
边界:无;
大纲:无;
颜色:白色;
填充:20px 25px;
背景色:继承;
字体家族:继承;
保证金:0;
}
#导航栏a:悬停,
.drop:悬停.drop按钮{
背景色:#25aa25;
}
.链接{
显示:无;
位置:绝对位置;
背景色:#f9f9f9;
最小宽度:210px;
盒影:0px 8px 16px 0px rgba(0,0,0,0.2);
z指数:1;
}
.链接a{
浮动:无;
颜色:黑色;
填充:12px 16px;
文字装饰:无;
显示:块;
文本对齐:左对齐;
}
.链接a:悬停{
背景色:#ddd;
}
.drop:悬停.links{
显示:块;
}
.粘的{
位置:固定;
排名:0;
宽度:100%;
}
.粘性+文章{
填充顶部:60px;
}

StackOverflow示例
按钮下拉列表
只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页


正确的问题是“当
导航栏不在屏幕顶部时,为什么我们可以看到下拉菜单?”

navbar
将CSS属性
overflow
设置为
hidden
,以防止超出其边界的内容可见。但是包含下拉链接(
.links
)的
div
已将
位置设置为
绝对值
,因此它不在文档流中

发件人:

绝对值

该元素将从正常文档流中删除,并且不会在页面布局中为该元素创建空间。它相对于其最近的祖先(如果有的话)定位;否则,它将相对于初始包含块放置

由于
.links
没有任何定位的祖先,因此其位置相对于初始包含块

但是当
导航栏
触及屏幕顶部时,
.sticky
类将被应用。其主要功能是将
position
CSS属性设置为
fixed
(位于文档流之外,并相对于视口建立的初始包含块进行定位)

应用
.sticky
时,
.links
相对于
导航栏定位,因此它会受到
溢出:隐藏的影响

由于在应用
时不需要隐藏它。因此,在出现这种情况时,请将
导航栏的
溢出属性设置为
可见

在CSS中,
id
属性优先于
,因此有两个选项。更新
.sticky
类:

.sticky {
  ...
  overflow: visible !important;
} 
这迟早会导致一场战争。或者更好的方法是,创建一个包含两个选择器的新规则,赋予其更高的优先级:

#navi.sticky {
  overflow: visible;
}
window.onscroll=function(){
myFunction()
};
var navbar=document.getElementById(“navi”);
var sticky=navbar.offsetTop;
函数myFunction(){
如果(window.pageYOffset>=粘性){
navbar.classList.add(“粘性”)
}否则{
navbar.classList.remove(“粘性”);
}
}
#navi.sticky{
溢出:可见;
} 
#纳维{
溢出:隐藏;
背景色:#333;
字体系列:Arial;
}
.放下{
浮动:左;
溢出:隐藏;
}
.放下.放下按钮{
字体大小:16px;
边界:无;
大纲:无;
颜色:白色;
填充:20px 25px;
背景色:继承;
字体家族:继承;
保证金:0;
}
#导航栏a:悬停,
.drop:悬停.drop按钮{
背景色:#25aa25;
}
.链接{
显示:无;
位置:绝对位置;
背景色:#f9f9f9;
最小宽度:210px;
盒影:0px 8px 16px 0px rgba(0,0,0,0.2);
z指数:1;
}
.链接a{
浮动:无;
颜色:黑色;
填充:12px 16px;
文字装饰:无;
显示:块;
文本对齐:左对齐;
}
.链接a:悬停{
背景色:#ddd;
}
.drop:悬停.links{
显示:块;
}
.粘的{
位置:固定;
排名:0;
宽度:100%;
}
.粘性+文章{
填充顶部:60px;
}

StackOverflow示例
按钮下拉列表
只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页

只是为了填补这一页