简体   繁体   English

固定位置的平滑滚动页眉

[英]Smooth scroll header with fixed position

How to create smooth scroll when I change the position to fixed. 将位置更改为固定时如何创建平滑滚动。 I try to add the animation but it does not work. 我尝试添加动画,但是它不起作用。 Better use jquery animation(); 更好地使用jquery animation();

 $(window).scroll(function() { var sticky = $('.mobile-menu'), scroll = $(window).scrollTop(); if (scroll >= 40) sticky.addClass('fixed'); else sticky.removeClass('fixed'); }); 
 header { padding: 20px 40px; background: gray; width: 100%; -webkit-transition: position 10s; -moz-transition: position 10s; -ms-transition: position 10s; -o-transition: position 10s; transition: position 10s; } section { height: 150vh; } .fixed { position: fixed; top: 0; left: 0; width: 100%; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <header class="mobile-menu">Text here</header> <section>Sugar plum muffin cookie pastry oat cake icing candy canes chocolate. Gummi bears chupa chups fruitcake dessert jelly. Muffin cookie ice cream soufflé pastry lollipop gingerbread sweet. Unerdwear.com bonbon candy marzipan bonbon gummies chocolate cake gummi bears powder. Unerdwear.com tart halvah chocolate cake dragée liquorice. Sugar plum chocolate bar pastry liquorice dragée jelly powder. Jelly tootsie roll applicake caramels. Marzipan candy tootsie roll donut. Gummies ice cream macaroon applicake.</section> 

You can use @keyframes to add some transition effects to the scroll. 您可以使用@keyframes向滚动添加一些过渡效果。

 $(window).scroll(function() { var sticky = $('.mobile-menu'), scroll = $(window).scrollTop(); if (scroll >= 40) { sticky.addClass('fixed'); } else { sticky.removeClass('fixed'); } }); 
 header { padding: 20px 40px; background: gray; width: 100%; -webkit-transition: all 0.5s ease; -moz-transition: position 10s; -ms-transition: position 10s; -o-transition: position 10s; transition: all 0.5s ease; } section { height: 150vh; } .fixed { position: fixed; top: 0; left: 0; animation: smoothScroll 1s forwards; } @keyframes smoothScroll { 0% { transform: translateY(-40px); } 100% { transform: translateY(0px); } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <header class="mobile-menu">Text here</header> <section>Sugar plum muffin cookie pastry oat cake icing candy canes chocolate. Gummi bears chupa chups fruitcake dessert jelly. Muffin cookie ice cream soufflé pastry lollipop gingerbread sweet. Unerdwear.com bonbon candy marzipan bonbon gummies chocolate cake gummi bears powder. Unerdwear.com tart halvah chocolate cake dragée liquorice. Sugar plum chocolate bar pastry liquorice dragée jelly powder. Jelly tootsie roll applicake caramels. Marzipan candy tootsie roll donut. Gummies ice cream macaroon applicake.</section> 

EDITED based on comment. 根据评论进行编辑。

If you change position to fixed while scrolling, it will generate undesired jump behavior. 如果在滚动时将position更改为“ fixed ,则会产生不希望的跳跃行为。

Your best bet would be to prevent positioning while scrolling, setting fixed after 40px or from the start is pretty much the same, so I'd suggest you remove this part on your jQuery, and make your header fixed from the start: 最好的选择是防止滚动时定位,在40px之后或从一开始就fixed 40px几乎相同,所以我建议您在jQuery上删除此部分,并从头开始fixed header

//if (scroll >= 40) sticky.addClass('fixed');
//else sticky.removeClass('fixed');

Snippet below: 以下代码段:

 $(window).scroll(function() { var sticky = $('.mobile-menu'), scroll = $(window).scrollTop(); }); 
 body { position: relative; } header { padding: 20px 40px; background: gray; width: 100%; -webkit-transition: position 10s; -moz-transition: position 10s; -ms-transition: position 10s; -o-transition: position 10s; transition: position 10s; } section { height: 150vh; position: relative; top: 60px; } .fixed { position: fixed; z-index: 1; top: 0; left: 0; right: 0; width: 100%; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <header class="mobile-menu fixed">Text here</header> <section>Sugar plum muffin cookie pastry oat cake icing candy canes chocolate. Gummi bears chupa chups fruitcake dessert jelly. Muffin cookie ice cream soufflé pastry lollipop gingerbread sweet. Unerdwear.com bonbon candy marzipan bonbon gummies chocolate cake gummi bears powder. Unerdwear.com tart halvah chocolate cake dragée liquorice. Sugar plum chocolate bar pastry liquorice dragée jelly powder. Jelly tootsie roll applicake caramels. Marzipan candy tootsie roll donut. Gummies ice cream macaroon applicake.</section> 

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

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