javascript - 使用滚动折叠一个 div 直到某个点

标签 javascript jquery html css

我想在用户向下滚动页面时折叠一个 div。

当用户加载页面时,div 的高度为 500px,当他滚动时,div 动态地降低他的高度直到达到 200px,然后 div 不再降低高度,一直停留在页面顶部并且页面的其他内容在此 div 下方流动。

抱歉我的英语不好,我的母语是西类牙语。

非常感谢!

最佳答案

你可以使用.css()

$(document).ready(function(){
   $(window).on('scroll' , function(){
     var windowTop = $(window).scrollTop();
     if(windowTop > 500){
         $('.header').css({'position':'fixed','height': '200px'});
     }else{
         $('.header').css({'position':'relative','height': '500px'});
     }
   });
});
html,body{
	margin: 0;
	padding: 0;
}
.content{
	width: 100%;
	height: 200px;
	background-color: red;
	color: white;
	border: 1px solid black;
}
.header{
	width: 100%;
	height: 500px;
	background-color: blue;
	color: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="header">
	<h1>Heading</h1>
</div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>

您还可以在 css 中使用 add/removeClass 和 transition-duration

$(document).ready(function(){
   $(window).on('scroll' , function(){
     var windowTop = $(window).scrollTop();
     if(windowTop > 500){
         $('.header').addClass('scrolled');
     }else{
         $('.header').removeClass('scrolled');
     }
   });
});
html,body{
	margin: 0;
	padding: 0;
}
.content{
	width: 100%;
	height: 200px;
	background-color: red;
	color: white;
	border: 1px solid black;
}
.header{
	width: 100%;
	height: 500px;
	background-color: blue;
	color: white;
    transition-duration : 1s;
}

.header.scrolled{
  position : fixed;
  top:0;
  left:0;
  right:0;
  height : 200px;
  transition-duration : 1s;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="header">
	<h1>Heading</h1>
</div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>

关于javascript - 使用滚动折叠一个 div 直到某个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34996268/

相关文章:

javascript - 如何制作饼图聚合数据源?

javascript - 如何更改innerHTML的innerHTML

jquery - 为什么我的固定导航栏需要很长时间才能向下滚动?

Javascript专用web worker按需发送消息

html - 在标题 [CSS] 上显示图像的完整尺寸

c# - 如何将 C# 数组传递给 JavaScript 数组

javascript - 在 PC 浏览器上模拟触摸事件

jquery 根据下拉列表中选定的值显示隐藏字段

javascript - jQuery .get() 循环所有 href

php - 从帖子文本中删除 block 引号 - Wordpress