jQuery滚动Div高度
jQuery Scrolling Div Heights
我有一个简单的div头(如下面的代码所示),当我向下滚动时,我不希望窗口本身滚动,但使div高度降低。
<html>
<head>
<title>Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="javascripts/headani.js"></script>
</head>
<body>
<div id="pageTop"></div>
<div id="pageArticle">
<div class="siteDesc">
<p id="hello"></p>
</div>
</div>
</body>
</html>
CSS是:
body {
margin: 0 0 0 0;
background-color: beige;
}
#pageTop {
width: 100%;
height: 450px;
background-color: tan;
}
#pageArticle {
width: 100%;
height: 1000px;
background-color: rgba(0,0,0,0);
}
#siteDesc {
height: 500px;
background-color: black;
width: 1000px;
margin: auto;
}
最后我的jQuery是:(记住这只是一个粗略的模型,一些测试变量可能仍然在那里,所以如果变量没有被使用,或者一个函数没有按预期使用,那么我可以为没有做一些维护而道歉)
$(document).ready( function() {
var headHeight = $('#pageTop').height();
$(window).scroll(function() {
if (headHeight > 50) {
$(document).bind("scroll", function(e) {
e.preventDefault;
})
headHeight = (headHeight - 1);
$('#pageTop').css('height', headHeight);
}
$('#hello').html($(document).scrollTop() + "<br/>" + headHeight);
})
});
我得到了它的工作,以尽量减少上下滚动上的div(我将完成使较小的向下滚动和较大的向上滚动),但我的问题是,我不想身体滚动,直到pageTop的高度是50!我只是想知道实现这一点的最好方法是什么?正如你所看到的,我试图绑定滚动,但失败了!
看起来滚动事件在滚动发生后直接触发,所以您不能阻止事件默认操作,因为操作已经发生了(它滚动了)。因此,您可以做的是监听wheel
事件和keydown
事件以停止操作。
$.fn.scrollEvent = function(handler) {
this.on('wheel', function(e) {
handler(e);
});
this.on('keydown', function(e) {
if (e.which === 40) {
handler(e);
}
});
};
$(document).ready(function() {
var headHeight = $('#pageTop').height();
window.scrollEvent
$(window).scrollEvent(function(e) {
if (headHeight > 50) {
e.preventDefault();
e.stopPropagation();
headHeight = (headHeight - 30);
$('#pageTop').css('height', headHeight);
}
$('#hello').html($(document).scrollTop() + "<br/>" + headHeight);
return false;
});
});
body {
margin: 0 0 0 0;
background-color: beige;
}
#pageTop {
width: 100%;
height: 450px;
background-color: tan;
}
#pageArticle {
width: 100%;
height: 1000px;
background-color: rgba(0, 0, 0, 0);
}
#siteDesc {
height: 500px;
background-color: black;
width: 1000px;
margin: auto;
}
<html>
<head>
<title>Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="javascripts/headani.js"></script>
</head>
<body>
<div id="pageTop"></div>
<div id="pageArticle">
<div class="siteDesc">
<p id="hello"></p>
</div>
</div>
</body>
</html>
相关文章:
- 当DIV的高度低于某个数字时,隐藏DIV的正确逻辑是什么
- 检测 DIV 的高度何时变化,而无需轮询或突变观察者
- Div 高度不会根据子控件自动扩展
- Div 设置为视口高度,即使调整屏幕大小也是如此
- imgAreaSelect JQuery插件可调整大小的Div's最小's宽度和高度
- '高度:切换'在JQuery's'animate'使Div不断切换
- 三个垂直堆叠的 Div,动态高度
- Div 高度不会在附加任何元素时增加
- 如何以固定高度容纳 DIV 的内容
- Div 不会自动计算高度
- 带有样式显示的 Div:表格的高度错误
- 具有不同高度 DIV 的块网格
- Div 没有任何高度
- 使推特小部件的高度与 DIV 相同
- 如何使用jQuery将所有HTML元素包装在DIV中,具体取决于这些HTML元素的总高度
- 如何根据背景图像的高度和宽度设置 DIV 尺寸
- 单击链接时,如何切换 DIV 的大小以扩展其高度
- 确定 DIV 的高度以百分比而不是像素设置
- 强制下一个内容位于可变高度DIV以下
- 移除高度Div与height: Auto?JS / CSS