仅当 html 内容高度大于视口高度时,如何才能使元素在页面上可见?
How can I make an element visible on a page only when the html content height is bigger than the viewport height?
我有这个页面,它基本上是一个待办事项列表,您可以在其中添加无限数量的各种任务,当然,如果您添加很多任务,页面的高度将会增加更大,并且 scollbar 将出现。我也把这个按钮固定在了页面的右下角,它唯一的作用就是让你回到页面的顶部。
我想做的是仅在页面高度不大于视口高度(因此无法滚动)的情况下将按钮的显示设置为 none,因为在这种情况下它就没用了,然后将其显示设置为阻止,以防页面高于 100vh。
我还没有测试过,但我很确定这可以通过@media 查询来完成:
.topbutton {
display: none;
}
@media screen and (min-height: 100vh) {
.topbutton {
display: block;
}
}
一个简单的方法是检查 window.scrollY
位置值是否为 0
。如果不是,您可以假设页面内容比视口高并且页面是滚动的,因此您可以相应地 show/hide 一个“返回顶部”按钮。例如:
Javascript
window.addEventListener('scroll', () => {
const toTopLink = document.getElementById('toTopLink');
if (window.scrollY > 0) {
toTopLink.classList.remove('hidden');
} else {
toTopLink.classList.add('hidden');
}
});
HTML
<ul>
<li>List Item</li>
<li>List Item</li>
<li>...</li>
</ul>
<a id="toTopLink" class="hidden" href="#">Scroll to Top</a>
CSS
#toTopLink {
display: block;
position: fixed;
/* ... */
}
#toTopLink.hidden {
display: none;
}
这里是一个 fiddle 显示此解决方案的实际操作(请注意,您需要相应地调整 window 高度以查看滚动行为):
https://jsfiddle.net/dwq4h82x/8/
按钮的平滑滚动和淡入淡出 in/out
对于一些额外的好处,你可以做这样的事情而不是切换 display: none
:
我有这个页面,它基本上是一个待办事项列表,您可以在其中添加无限数量的各种任务,当然,如果您添加很多任务,页面的高度将会增加更大,并且 scollbar 将出现。我也把这个按钮固定在了页面的右下角,它唯一的作用就是让你回到页面的顶部。 我想做的是仅在页面高度不大于视口高度(因此无法滚动)的情况下将按钮的显示设置为 none,因为在这种情况下它就没用了,然后将其显示设置为阻止,以防页面高于 100vh。
我还没有测试过,但我很确定这可以通过@media 查询来完成:
.topbutton {
display: none;
}
@media screen and (min-height: 100vh) {
.topbutton {
display: block;
}
}
一个简单的方法是检查 window.scrollY
位置值是否为 0
。如果不是,您可以假设页面内容比视口高并且页面是滚动的,因此您可以相应地 show/hide 一个“返回顶部”按钮。例如:
Javascript
window.addEventListener('scroll', () => {
const toTopLink = document.getElementById('toTopLink');
if (window.scrollY > 0) {
toTopLink.classList.remove('hidden');
} else {
toTopLink.classList.add('hidden');
}
});
HTML
<ul>
<li>List Item</li>
<li>List Item</li>
<li>...</li>
</ul>
<a id="toTopLink" class="hidden" href="#">Scroll to Top</a>
CSS
#toTopLink {
display: block;
position: fixed;
/* ... */
}
#toTopLink.hidden {
display: none;
}
这里是一个 fiddle 显示此解决方案的实际操作(请注意,您需要相应地调整 window 高度以查看滚动行为):
https://jsfiddle.net/dwq4h82x/8/
按钮的平滑滚动和淡入淡出 in/out
对于一些额外的好处,你可以做这样的事情而不是切换 display: none
: