当前位置: 首页 > 知识库问答 >
问题:

使用vanilla JavaScript滚动时显示div

姜磊
2023-03-14

我使用的是vanilla JavaScript,我想找出一种隐藏div容器的方法,但是当用户滚动到div容器的50%时,就是div完全可见的时候。有点像渐变效应。这是我目前所掌握的:

null

// delays scroll affects
function debounce(func, wait = 20, immediate = true) {
  var timeout;
  return function() {
    var context = this,
      args = arguments;
    var later = function() {
      timeout = null;
      if (!immediate) func.apply(context, args);
    };
    var callNow = immediate && !timeout;
    clearTimeout(timeout);
    timeout = setTimeout(later, wait);
    if (callNow) func.apply(context, args);
  };
}

// adds animation for section cards 
function cardActive(e) {
  const cards = document.querySelectorAll('.slide-in');
  // checks if image is half shown from bottom
  cards.forEach(card => {
    const slideInAt = (window.scrollY + window.innerHeight) - card.height / 2;
    if (slideInAt > card.offsetTop) {
      card.classList.add('active')
    } else {
      card.classList.remove('active');
    }
  })
};

window.addEventListener('scroll', debounce(cardActive));
.slide-in {
  opacity: 50%;
  transition: opacity 0.8s;
}

.slide-in.active {
  transition: opacity 0.8s;
  opacity: 100%;
  visibility: visible !important;
}

.placeholder {
  margin-top: 400px;
}

.icon {
  width: 100px;
}
<div class="placeholder"></div>

<div class="mission-1 slide-in">
  <div class="section-card">
    <img class="icon" src="https://image.flaticon.com/icons/svg/869/869767.svg" alt="icon">
    <h6 class="mission-card-title">Title 1</h6>
    <p class="p-special">Lorem Ipsum.</p>
  </div>
</div>

<div class="placeholder"></div>

null

共有1个答案

申屠弘图
2023-03-14

你需要做两个小小的改变:

>

  • 您需要将JS文件中的Card.height替换为Card.offsetheight

    在CSS文件中使用转换,您不需要动画来使渐变生效:

    .slide-in {
       opacity: 0%;
       transition: opacity 0.8s;
    }
    
    .active {
       transition: opacity 0.8s;
       opacity: 100%;
       visibility: visible !important;
    }
    

  •  类似资料:
    • 滚动显示是一个 JQuery 插件,根据滚动的距离来执行回调函数。我们将展示很多的示例来告诉你怎么使用。 jQuery 插件初始化 var options = [ {selector: '.class', offset: 200, callback: customCallbackFunc } }, {selector: '.other-class', offset: 200, ca

    • 问题内容: 我一直在尝试使此scrollview滚动,但这样做没有任何运气。我尝试了多种修复程序,但似乎无法正常工作。我希望能够在选择一个编辑框并且键盘占据一半屏幕的情况下滚动浏览我的页面。这样,我可以导航到其余的编辑框和页面底部的接受按钮,而不必每次都手动隐藏键盘。 这是我的xml代码: (请有人帮我弄清楚这件事,它使我发疯!!)。我还要提及的是,我曾与遇到类似问题的人一起尝试过大多数修复程序,

    • 我总是很难让布局与一起工作。我肯定我错过了什么。基本上,我有一个由并排的两列组成的网页。右边的列包含一个固定宽度为的正方形。左边的列应该是可扩展的。由两列组成的页面内容的最大宽度应为400px。当屏幕宽度在和之间时,左边的列应该缩小,但右边的列应该总是。 问题是左列中有一些文本由一个没有空格的长单词组成。这个词恰好是一个URL,但它可能是任何东西,只要它没有任何空格。它似乎可以防止左列收缩。我尝试

    • 我正在使用Recyclerview显示项目列表。现在每次都可以有一些照片/多张照片,我需要在一行中水平滚动显示。 我目前正在使用画廊小部件来显示照片,但因为它现在已被弃用,所以我想用一些其他的东西来显示与画廊相同的功能水平图像。你能帮帮我吗? 非常感谢你的帮助。

    • 这个标题可能有点误导人,我不知道从哪里开始,甚至不知道该搜索什么 我有一个页面,上面有10个div元素(比如div1、div2、div3等) 我希望能够有一个jquery函数以滚动的方式显示它们 例如开始显示div1、div2、div3、div4 10秒后,显示div2、div3、div4、div5 10秒后,显示div3、div4、div5、div6 ...等循环 10秒后,显示div8、div

    • 我目前有一个UISearchBar(下面的代码),它工作得很好,但是我正在努力使它在我的UITableView中滚动时,我的UISearchBar不会消失。我读到的内容之一是使用以下代码行将searchController嵌入到视图控制器中: