【发布时间】:2020-04-14 09:11:29
【问题描述】:
我想在图像位于顶部时显示标题,而当它们不再位于顶部时我想隐藏它们。它有点工作,但它不再隐藏元素并且弹出有点不可预测。我怎样才能使这段代码更好地工作?
我的这种方法的来源:sitepoint 和 stack overflow
我使用此代码检查图像在屏幕上的位置:
$(document).scroll(function() {
$(".grid-item").each(function() {
var el = $(this);
var top = el.offset().top - $(document).scrollTop();
if (top < 200 && top > 0) {
document.getElementById("p" + el.attr("id")).style.visibility = "visible";
return;
};
if (top > 200 && top < 0) {
document.getElementById("p" + el.attr("id")).style.visibility = "hidden";
return;
};
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="sidenav">
<h1>{{page.titel}}</h1>
<p>{{page.technik}},<br>{{page.datum}}</p>
<div class="textp1">{{page.beschreibung}}</div>
<div class="werk">
</div>
<div id="main">
<button class="openbtn" onclick="openNav()">☰ </button>
</div>
<div id="mySidebar" class="sidebar">
<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">×</a>
{% for projekt in site.projekte%}
<a href="{{projekt.url}}">{{projekt.titel}} </a>
{% endfor%}
</div>
{% for desc in page.descs%}
<div class="desc"; id="p{{forloop.index}}">
<p> {{desc}}</p>
</div>
{% endfor%}
</div>
<div class="grid-container">
<div class="floater"></div>
{% assign someVar = 0 %}
{% for image in site.static_files %}
{% if image.path contains '04_Skizzenbuch' %}
{% assign someVar = someVar | plus: 1 %}
<div class="grid-item"; id="{{someVar}}"><img class="resize"; src="{{ site.baseurl }}{{ image.path }}" alt="{{forloop.index0}}" /></div>
{% endif %}
{% endfor %}
</div>
【问题讨论】:
-
如果您显示您的 HTML 结构也会有所帮助。
-
为什么不
$(document).scroll(function(){ $(".grid-item").each(function(){ var el = $(this); var top = el.offset().top - $(document).scrollTop(); $("p"+el.attr("id")).toggle(top < 200 && top > 0) })}) -
添加了 HTML 结构
-
请看我们制作的sn-p。使用来自 placeholder.com 或类似网站的图片并创建 minimal reproducible example
-
同时清理你的 HTML,你的代码中有无效的
;。
标签: javascript jquery offset