jquery - 滚动时不透明度返回负值
问题描述
.overlay
我有以下代码,当用户距离屏幕底部 100vh 时,它会尝试淡化 div 的不透明度。但是,当屏幕随着元素变高而改变宽度时,它不起作用,不透明度函数会生成一个负数。
if 语句逻辑没问题,就是 opacity 函数。有任何想法吗?
$(window).scroll(function() {
// Start to adjust footer opacity at 100vh
if ($(window).scrollTop() + $(window).height() >= $(document).height() - $(window).height()) {
var scrollTop = $(this).scrollTop();
$('.overlay').css({
opacity: function() {
var elementHeight = $(this).height();
return 1 + (elementHeight - scrollTop) / elementHeight;
}
});
} else {
$('.overlay').css({
opacity: function() {
return 1;
}
});
}
});
header {
background: blue;
}
main {
background: white;
}
footer {
background: blue;
position: relative;
}
header,
main,
footer {
min-height: 100vh;
}
.overlay {
position: absolute;
top: 0;
right: 0;
left: 0;
right: 0;
height: 100%;
width: 100%;
background-color: #000;
}
.add-height{
min-height: 1200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header></header>
<main>
<div class="add-height">Hello</div>
</main>
<footer id="footer">
<div class="overlay"></div>
</footer>
解决方案
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() >= $(document).height() - $(window).height()) {
var opacity = ($(document).height() - $(window).scrollTop()) / $(window).height() - 1;
$('.overlay').css({
opacity: function() {
return opacity;
}
});
}
});
推荐阅读
- excel - 在 Excel 中仅删除 PDF 对象
- html - 对齐上面的 CSS 对象
标签 - c# - 使用 ADOMDClient 将 Azure 分析响应解析为 Azure 函数中的 JSON
- android - 查看模型变量被多次观察
- amazon-web-services - EC2 实例服务器不接受 HTTPS 请求
- python - Python OpenCV - 过滤掉不在附近的轮廓
- javascript - 将sql查询转换为sequelize查询
- python-3.x - ModuleNotFoundError:在 venv 中安装 django 时没有名为“django”的模块
- ios - UIActivityViewController 将 2 个 PDF 副本保存到文件应用程序
- javascript - 构建一个应用程序,给我一些我可以点击的网页标题