javascript – 在滚动上动态定位元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在滚动上动态定位元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3956字,纯文字阅读大概需要6分钟。
内容图文
![javascript – 在滚动上动态定位元素](/upload/InfoBanner/zyjiaocheng/771/6e00d2730f7d479b8c3ce7f2f4292266.jpg)
目标
在最初加载时使页面导航位于页面下方较低的位置.所以它看起来如下图所示.
背景
我创建了一个使用Headroom.js来控制其位置的导航元素.该库的要点是,当用户向下滚动时,它会将所需的导航项移出视图,以便您可以看到更多内容.然后,当您向上滚动以便于点击链接时,如果您需要这样做,则会显示该项目.
当前状态
我有这个当前的demo on codepen.
该导航项位于页面顶部,但位于较低的z-index上.所以最初不可见.
向下滚动时,元素不在视野范围内.
但是当你向上滚动时,它就是它需要的地方
码
HTML
<nav id="page-menu" class="link-header header--fixed slide slide--reset" role="banner">
<ul>
<li><a href="#">Products</a></li>
<li><a href="#">Features</a></li>
<li><a href="#">Testimonials</a></li>
<li><a href="#">Cases</a></li>
</ul>
</nav>
CSS
#page-menu {
background-color: #BA222B;
list-style-type: none;
width: 100%;
z-index:10;
}
#page-menu ul {
list-style-type: none;
margin: 0;
position: absolute;
bottom: 5px;
right: 10px;
}
#page-menu ul li {
display: inline-block;
margin-left: 10px;
}
#page-menu ul li a {
text-decoration: none;
color: #fff;
}
.link-header {
background-color:#292f36;
height: 100px;
}
.header--fixed {
position:fixed;
z-index:10;
right:0;
left:0;
top:0px;
}
jQuery的
(function() {
new Headroom(document.querySelector("#page-menu"), {
tolerance: 5,
offset : 150,
classes: {
initial: "slide",
pinned: "slide--reset",
unpinned: "slide--up"
}
}).init();
}());
codepen完整演示.
解决方法:
目标:
根据您的描述,您希望读取导航在页面加载时显示为:
当用户滚动时,用灰色条移动,然后向下移动,直到它的截止点到达灰色条的底部.然后你想让事情进入,让红色条向上滑动并离开视野,然后根据滚动向上和向下滑动.您希望转换顺利进行.
方法:
要平稳过渡要记住的是,您有两种状态:顶级状态和底部状态.你必须设计两者,你必须弄清楚要改变的确切高度,你必须确保它们在那个位置是相同的,所以看起来是无缝的.
最高州:
我们这里不需要任何额外的定位.我们希望它实际上是静态的,听起来很奇怪.
底层国家:
我们想要固定定位.由于我们希望在红条触及窗口顶部时发生转换,因此固定标头中的CSS已经很完美了.
转换高度:
标题和灰色导航栏组合为180px,因此该数字将是我们的转换.
码:
1.国家变化
让我们向后工作并首先进行状态更改.您需要在很多地方从150px更改为180px.例如,您的JS代码:
现有的JS:
if ($(window).scrollTop() >= 150) {
...
(function() {
new Headroom(document.querySelector("#page-menu"), {
tolerance: 5,
offset : 150,
新JS:
if ($(window).scrollTop() >= 180) {
...
(function() {
new Headroom(document.querySelector("#page-menu"), {
tolerance: 5,
offset : 180,
您的标题将需要更新的高度,或完全删除高度.
现有的CSS:
header {
height:150px;
position: relative;
z-index:30;
}
新CSS:
header {
position: relative;
z-index:30;
}
2.顶级国家
弄乱你的一件大事是,由于某种原因你正在使用的库在页面加载时应用.header – fixed和link-header.我不知道如何防止这种情况,但我们可以通过从CSS中删除它们来中和.
删除此CSS:
.link-header {
background-color:#292f36;
height: 100px;
}
.header--fixed {
position:fixed;
z-index:10;
right:0;
left:0;
top:0px;
}
其次,我们需要调整红色导航中的ul.
现有的CSS:
#page-menu ul {
list-style-type: none;
margin: 0;
position: absolute;
bottom: 5px;
right: 10px;
}
新CSS:
#page-menu ul {
list-style-type: none;
margin: 0 auto;
padding:0;
width:960px;
max-width:100%;
text-align:right;
}
3.底层国家
除了固定标题类也被添加到灰色导航中之外,其他所有功能都非常好.我们需要调整我们的jQuery选择器位.
现有的JS:
if ($(window).scrollTop() >= 180) {
$('nav#page-menu').addClass('fixed-header');
}
else {
$('nav#page-menu').removeClass('fixed-header');
}
NewJS:
if ($(window).scrollTop() >= 180) {
$('header nav').addClass('fixed-header');
}
else {
$('header nav').removeClass('fixed-header');
}
4.杂项清理
这里的一切看起来都很不错,除了我们的两个导航中的lis没有对齐.我们需要修正一些保证金权利以使其符合预期.
现有的CSS:
#page-menu ul li {
display: inline-block;
margin-left: 10px;
}
新CSS:
#page-menu ul li {
display: inline-block;
margin-left: 10px;
margin-right: 10px;
}
最后,我注意到HTML中的灰色导航中缺少右括号.它没有太大的伤害,但它可以:
<nav>
<ul>
<li><a href="/dentist/">Dentists</a></li>
<li><a href="/lab/">Labs</a></li>
<li><a href="/patient/">Patients</a></li>
<ul> <--- ( Should be </ul> )
</nav>
最终结果:
http://codepen.io/anon/pen/qIrhx
内容总结
以上是互联网集市为您收集整理的javascript – 在滚动上动态定位元素全部内容,希望文章能够帮你解决javascript – 在滚动上动态定位元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。