Javascript 固定粘性导航栏时,绝对定位div将隐藏
当myJavascript 固定粘性导航栏时,绝对定位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
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示例
按钮下拉列表
只是为了填补这一页
只是为了填补这一页
只是为了填补这一页
只是为了填补这一页
只是为了填补这一页
只是为了填补这一页
只是为了填补这一页
只是为了填补这一页
只是为了填补这一页
只是为了填补这一页
只是为了填补这一页