Javascript:两个元素之间的垂直间距
Javascript: Vertical Spacing between two elements
我的网站由一个导航栏(类.nav-primary
)、一个小部件框(id #mw-panel
)和一篇文章组成。最近,我尝试将小部件框移到顶部,方法是对我的CSS文件进行以下更改:
.mw-panel{top: 50px;}
这个选项的问题是,我的元素被固定在一个特定的位置。相反,我希望小部件元素在菜单栏下正好是100px(当我向下滚动页面时会移动)。很快,我就知道JavaScript将是解决这个问题的正确方法。
因为我没有成功,我问了StackOverflow社区,这对我帮助很大。
所附代码片段的JS部分中的JavaScript代码部分由我完成,但它并不能正常工作。
有人能解释一下我需要更改什么才能让JS代码正常工作吗?同样,#mw-panel
必须精确地定位在.nav-primary
下方100px处。
var menu = document.getElementsByClassName("nav-primary")[0];
var widget = document.getElementById("mw-panel");
var difference = widget.offsetTop - menu.offsetBottom;
if (difference > 100) {
document.getElementById("mw-panel").style.top = (menu.offsetBottom + 100) + "px";
}
.content .entry {
margin-top: 40px;
padding-bottom: 400px;
}
<body class="full-width-content">
<link rel="stylesheet" id="child-theme-css" href="http://vocaloid.de/wp-content/themes/Vuturize/style.css" type="text/css" >
<div class="site-container">
<nav class="nav-primary">
<div class="wrap">
<ul class="menu genesis-nav-menu menu-primary">
<li class="menu-item"><a href="#">Home</a>
</li>
<li class="menu-item"><a href="#">News</a>
</li>
<li class="menu-item"><a href="#">Ranking</a>
</li>
</ul>
</div>
</nav>
</div>
<div class="site-inner">
<div class="content-sidebar-wrap">
<main class="content">
<article class="page entry">
<div>
<h1>Test Article</h1>
</div>
</article>
</main>
</div>
</div>
<div id="mw-panel">
<div>
<h3>Navigation</h3>
<div>
<ul>
<li><a href="#">Letzte Änderungen</a>
</li>
</ul>
</div>
</div>
<h3>Werkzeuge</h3>
<div>
<ul>
<li><a href="#">Datei hochladen</a>
</li>
<li><a href="#">Spezialseiten</a>
</li>
</ul>
</div>
</div>
</body>
没有offsetBottom
这样的属性。重做您的代码,只考虑offsetTop
+offsetHeight
来获得底部数字。
示例:
var menu = document.getElementsByClassName("nav-primary")
var TrueOffset=menu[0].offsetTop+menu[0].offsetHeight;
由于没有offsetBottom
属性,您将收到错误。
在chrome中执行console.log(menu)
以查看对象可用属性
**更新:
将此添加到您的css:
.mw-panel{
position: absolute;
}
正在运行
更新的代码在行动
重读您的问题后,我遗漏了一个关键细节:您正在尝试使用JavaScript。这是你的问题。
如果我理解正确的话,您有三个项目:导航、文章和小部件框。您希望小部件框位于导航下方100像素,然后在滚动时随页面移动。
如果是这种情况(如果不是,请纠正我),那么你只需要做几件事:
-
保持你的导航原样。干得好。
-
我假设您想要文章旁边的小部件(在左边?)。因此,您需要制作两列(某种容器,每个容器为
height: 100%
)。您的小部件容器将具有属性position: fixed;
,文章将具有position: static;
(或relative
,由您决定)。 -
每个容器都有一个宽度,例如,您可以为小部件容器选择30%,为文章选择70%。
-
现在您有两列,其中一列将随着页面的滚动而移动。
这里有一些链接可以让你开始:
在HTML/CSS 中实现列的最佳方法
https://css-tricks.com/guide-responsive-friendly-css-columns/
http://www.456bereastreet.com/lab/developing_with_web_standards/csslayout/2-col/
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- JavaScript中的函数和对象之间没有区别吗?
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Jquery在函数之间传递表行
- 根据某些条件在视图之间切换
- 在控制器和数据对象之间同步数据
- d3中堆栈函数和嵌套函数之间的差异
- JQuery:在页面之间滑动
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 操作放置在画布上的元素之间的连接
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- javascript+语义ui:垂直菜单与项目之间的对话框,如何
- Javascript:两个元素之间的垂直间距
- 对于大量的元素,行内块元素之间的垂直间距
- 减少垂直对齐的输入范围之间的间距
- 如何在jQuery对话框中的两个按钮之间垂直居中对齐文本
- 锚点之间的垂直和水平平滑滚动
- 自动折叠垂直间距的帖子之间的网格主题