javascript - 在视口(viewport)内显示一个 div

标签 javascript jquery html css

我有10个div元素,宽高都是500px;

<div class="cont_1">a lots of content here..</div>
<div class="cont_2">a lots of content here..</div>
<div class="cont_3">a lots of content here..</div>
<div class="cont_4">a lots of content here..</div>
<div class="cont_5">a lots of content here..</div>
<div class="cont_6">a lots of content here..</div>
<div class="cont_7">a lots of content here..</div>
<div class="cont_8">a lots of content here..</div>
<div class="cont_9">a lots of content here..</div>
<div class="cont_10">a lots of content here..</div>

和我的CSS

div{
width:500px;
height:500px;
background:#f0f0f0;
border:1px solid #ccc;
margin:10px;
padding:10px;
}

我的第七个 div 是用 display:none 隐藏的。一旦用户滚动到该元素,我该如何显示它?

最佳答案

您必须将滚动事件附加到页面以在滚动后检查每个元素的位置:

function CheckIfVisible(elem){
var ElemPos = elem.getBoundingClientRect().top;
elem.style.display = (ElemPos > 0 && ElemPos < document.body.parentNode.offsetHeight)?"block":"none";
}

window.addEventListener("onscroll", function(){
var elem = document.getElementsByClassName("cont_1")[0];
CheckIfVisible(elem);
});

window.addEventListener("onscroll", function(){
var elem = document.getElementsByClassName("cont_2")[0];
CheckIfVisible(elem);
});

window.addEventListener("onscroll", function(){
var elem = document.getElementsByClassName("cont_3")[0];
CheckIfVisible(elem);
});

等等...

关于javascript - 在视口(viewport)内显示一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38405916/

相关文章:

javascript - getSelection 不会在自定义文本输入中为我找到选定的文本

javascript - 如果选中一个复选框,如何取消选中另一个复选框?

javascript - 将 ruby​​ 哈希转换为命名值的 javascript 数组

javascript - 如何将输入日期与 RZSlider 集成作为时间选择器 Angular Js?

javascript - node.js 会编译 JavaScript 吗?

javascript - 计算总金额(含增值税百分比)

javascript - jQuery .load()/.ajax() 在附加后不在返回的 HTML 中执行 javascript

html - 4 图像 float 中心

javascript - $(document).height 和 $(window).height 都返回相同的值 - 使用正确的文档类型

php - 如何将 html 页面保存到数据库?