Javascript:两个元素之间的垂直间距
我的网站由一个导航栏(classJavascript:两个元素之间的垂直间距,javascript,html,css,Javascript,Html,Css,我的网站由一个导航栏(class.nav primary)、一个小部件框(id#mw panel)和一篇文章组成。最近,我尝试通过对CSS文件应用以下更改,将小部件框上移到顶部: .mw-panel{top: 50px;} 这个选项的问题是,我的元素被固定到了一个特定的位置。相反,我希望widget元素正好位于菜单栏下的100px(并且在向下滚动页面时移动)。很快,我就知道JavaScript将是解决这个问题的正确方法 因为我没有成功,我问了一个问题,这对我帮助很大 所附代码片段JS部分中的J
.nav primary
)、一个小部件框(id#mw panel
)和一篇文章组成。最近,我尝试通过对CSS文件应用以下更改,将小部件框上移到顶部:
.mw-panel{top: 50px;}
这个选项的问题是,我的元素被固定到了一个特定的位置。相反,我希望widget元素正好位于菜单栏下的100px(并且在向下滚动页面时移动)。很快,我就知道JavaScript将是解决这个问题的正确方法
因为我没有成功,我问了一个问题,这对我帮助很大
所附代码片段JS部分中的JavaScript代码部分是由我完成的,但它不能正常工作
有人能告诉我,为了让这个JS代码正常工作,我需要改变什么吗?同样,#mw面板
必须精确定位在.nav primary
下方100px处
var menu=document.getElementsByClassName(“导航主”)[0];
var widget=document.getElementById(“mw面板”);
变量差异=widget.offsetTop-menu.offsetBottom;
如果(差异>100){
document.getElementById(“mw面板”).style.top=(menu.offsetBottom+100)+“px”;
}
.content.entry{
边缘顶端:40px;
填充底部:400px;
}
-
-
-
韦克泽格
-
-
重新阅读您的问题后,我遗漏了一个关键细节:您正在尝试使用JavaScript。这是你的问题
如果我理解正确,您有三项:导航、文章和小部件框。您希望小部件框位于导航下方100px,然后在滚动时随页面移动
如果是这种情况(如果不是,请纠正我),那么您只需要做几件事:
高度:100%
)。您的小部件容器将具有属性position:fixed
和文章将具有位置:静态代码>(或相对,由您决定)
重新阅读您的问题后,我错过了一个关键细节:您正在尝试使用JavaScript。这是你的问题 如果我理解正确,您有三项:导航、文章和小部件框。您希望小部件框位于导航下方100px,然后在滚动时随页面移动 如果是这种情况(如果不是,请纠正我),那么您只需要做几件事:
高度:100%
)。您的小部件容器将具有属性position:fixed
和文章将具有位置:静态代码>(或相对,由您决定)
没有像
offsetBottom
这样的属性。重做代码时,只需考虑offsetTop
+offsetHeight
,即可获得底部数字
例如:
var menu = document.getElementsByClassName("nav-primary")
var TrueOffset=menu[0].offsetTop+menu[0].offsetHeight;
您收到错误是因为没有offsetBottom
属性
在chrome中执行console.log(菜单)
,查看可用的对象属性
**更新:
将此添加到css中:
.mw-panel{
position: absolute;
}
没有像
offsetBottom
这样的属性。重做代码时,只需考虑offsetTop
+offsetHeight
,即可获得底部数字
例如:
var menu = document.getElementsByClassName("nav-primary")
var TrueOffset=menu[0].offsetTop+menu[0].offsetHeight;
您收到错误是因为没有offsetBottom
属性
在chrome中执行console.log(菜单)
,查看可用的对象属性
**更新:
将此添加到css中:
.mw-panel{
position: absolute;
}
尝试在所有DOM元素之后添加
标记,就在
之前。您的脚本可能没有正确加载DOM,这就是为什么它找不到#mw panel
或按照@AlexL中的描述放置脚本的原因。我想这并不是问题的原因。我在stackoverflow代码编辑器的右侧部分添加了JS代码,因此默认情况下它应该自动定位在末尾。在全视图中查看正在运行的代码段时,您可以看到它没有移到顶部。@OtakuKyon Chrome在我运行您的代码段时没有报告任何错误,您能验证错误是否消失了吗?@AlexL在将代码移到标记末尾后修复了DOM错误,但是脚本仍然不起作用尝试在所有DOM元素之后添加
标记,就在
之前。您的脚本可能没有正确加载DOM,这就是为什么它找不到#mw panel
或按照@AlexL中的描述放置脚本的原因。我想这并不是问题的原因。我在stackoverflow代码编辑器的右侧部分添加了JS代码,因此默认情况下它应该自动定位在末尾。