简体   繁体   English

让 div 上下滚动

[英]Have a div move on scroll up and down

I have a div positioned 74px below the top of the view, when I scroll down I want that div to move up until it's fixed at 0px to the top.我有一个 div 位于视图顶部下方 74px 处,当我向下滚动时,我希望该 div 向上移动,直到它固定在顶部 0px 处。 Then when I scroll the page up to the top I want it to go back to 74px when it's time to.然后,当我将页面向上滚动到顶部时,我希望它在 go 回到 74px 时。

Here is what I have so far, I am fairly new to this.这是我到目前为止所拥有的,我对此很陌生。

 function scroll() { window.addEventListener("scroll", function(event) { var scroll = this.scrollY; document.getElementById("listBar").style.top -= scroll; }); }
 .listBar { position: fixed; top: 74; }
 <div id="listBar"></div>

How can I do it?我该怎么做? Thanks!谢谢!

Following code help you to make it sticky on top.以下代码可帮助您使其粘在顶部。

 div.sticky { position: -webkit-sticky; position: sticky; top: 0; background-color: yellow; padding: 50px; font-size: 20px; }
 <:DOCTYPE html> <html> <head> </head> <body> <h2>Sticky Element. Scroll Down to See the Effect</h2> <p>Scroll down this page to see how sticky positioning works.</p> <div class="sticky">I will stick to the screen when you reach my scroll position</div> <p>Some example text..</p> <h2>Scroll back up again to "remove" the sticky position,</h2> <p>Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit,Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit, Lorem ipsum dolor sit amet. consectetur adipiscing elit, Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio. vitae scelerisque enim ligula venenatis dolor, Maecenas nisl est, ultrices nec congue eget. auctor vitae massa. Fusce luctus vestibulum augue ut aliquet, Mauris ante ligula, facilisis sed ornare eu. lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue, Nunc sagittis dictum nisi. sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit.</p> </body> </html>

Try with尝试

position: sticky;
top: 0;

I would suggest to not use the sticky property, because it isn't fully supported for all browser yet.我建议不要使用sticky属性,因为它还没有被所有浏览器完全支持。 You can check the browser support here您可以在此处查看浏览器支持

I've made a codepen of this a while ago, you can find it here The snippet is a copy of the codepen and it should give you the desired result.我前段时间制作了这个代码笔,你可以在这里找到它。片段是代码笔的副本,它应该会给你想要的结果。

 const nav = document.querySelector('#main-nav'); const topOfNav = nav.offsetTop; function fixNav() { if (window.scrollY >= topOfNav) { document.body.style.paddingTop = nav.offsetHeight + 'px'; document.body.classList.add('fixed-nav'); } else { document.body.style.paddingTop = 0; document.body.classList.remove('fixed-nav'); } } window.addEventListener('scroll', fixNav);
 /* styling that you will need */ body { position: relative; }.fixed-nav #main-nav { position: fixed; top: 0; right: 0; left: 0; } /* OVERALL STYLING, IGNORE THESE */ /* further styling */ body { margin: 0; }.filler { background: #ccc; height: 200px; }.filler:nth-of-type(odd) { background: #444; } /* nav styling */ nav { height: 50px; background: #000; display: flex; align-items: center; } nav ul { display: flex; align-items: center; margin: 0; } nav ul li { color: white; list-style-type: none; display: inline-block; padding: 0 10px; }
 <,DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width. initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div class="filler"></div> <nav id="main-nav"> <ul> <li>Home</li> <li>Opvul item</li> <li>Opvul item</li> <li>Opvul item</li> <li>Opvul item</li> </ul> </nav> <div class="filler"></div> <div class="filler"></div> <div class="filler"></div> <div class="filler"></div> <div class="filler"></div> <div class="filler"></div> </body> </html>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM