目录

一、效果图

二、代码部分

1.html结构

2.css样式部分

3.js部分

三、代码总结


一、效果图

可以看出,在悠方滚动条滚动的时候,当高度打到一定高度的时候就会出现一个div盒子,就好像刚加载出来一样

而且可以一直向下滚动。

二、代码部分

1.html结构

    <div class="box">content1</div><div class="box">content2</div><div class="box">content3</div><div class="box">content4</div>

因为主要是后面通过js添加节点,所以结构很简单

2.css样式部分

<style>* {padding: 0;margin: 0;}html,body {width: 100vw;overflow-x: hidden;display: flex;justify-content: center;align-items: center;flex-direction: column;}.box {width: 1200px;height: 500px;background-color: rgb(195, 135, 235);border-radius: 8px;font-size: 30px;text-align: center;line-height: 500px;margin-top: 20px;color: #fff;/* 添加过度效果 */transition: transform .5s ease;}/* 偶数 */.box:nth-child(even) {transform: translateX(-200%);}/* 奇数 */.box:nth-child(odd) {transform: translateX(200%);}.box.show-center {transform: translateX(0);}</style>

注意:因为是将div分别向左右移动了,所以在body的样式中,要加一个width:100vw;overflow-x:hidden,这样就不会出现横向滚动条。

最后写了一个 show-center的类名,当满足条件的时候添加这个类名,就能让当前div居中显示。

3.js部分

 <script>//在页面加载完毕后执行一次滚动加载函数window.onload = function () {scrollLoad()}//监听滚动window.addEventListener('scroll', scrollLoad)//定义数值var count = 5//滚动加载函数function scrollLoad() {// 1.获取所有的boxvar boxList = document.querySelectorAll('.box')//2. 定义一个目标值var targetValue = window.innerHeight * 0.8//3.获取每一个box距离浏览器顶部的值boxList.forEach(function (box) {var boxTop = box.getBoundingClientRect().topif (boxTop <= targetValue) {box.classList.add('show-center')} else {box.classList.remove('show-center')}})createBox()}//创建box函数function createBox() {//网页全文高度var pageHeight = document.documentElement.scrollHeight//滚动条被卷去的高度var stop = document.documentElement.scrollTop;//窗口高度var seeHeight = window.innerHeight//滚动条距离底部的高度var bottom = pageHeight - stop - seeHeight//如果高度小于200 就添加一个节点if (bottom <= 200) {var div = document.createElement('div')div.classList.add('box');div.innerHTML = 'content' + count;count++document.body.appendChild(div)}}</script>

1.在滚动函数:scrollLoad中 用到了getBoundingClientRect().top

getBoundingClientRect()  //获取元素位置,这个方法没有参数

该函数返回一个Object对象,该对象有6个属性:top,lef,right,bottom,width,height;

  1. top:元素上边到视窗上边的距离;

  2. right:元素右边到视窗左边的距离;

  3. bottom:元素下边到视窗上边的距离;

  4. left:元素左边到视窗左边的距离;

  5. width:是元素自身的宽

  6. height是元素自身的高

这里我们只关注它的top值,前面定了一个目标值targetValue为页面高度的80%,当当前元素的高度小于这个高度时,给它添加show-center类使它回到居中的位置,如果小于的话,就删除这个类。

2.createBox() 函数用来判断滚动条的高度,如果距离底部小于200px的话就创建一个新节点添加到body中。

这样一个一直滚动一直更新节点的效果就完成了。

三、代码总结

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {padding: 0;margin: 0;}html,body {width: 100vw;overflow-x: hidden;display: flex;justify-content: center;align-items: center;flex-direction: column;}.box {width: 1200px;height: 500px;background-color: rgb(195, 135, 235);border-radius: 8px;font-size: 30px;text-align: center;line-height: 500px;margin-top: 20px;color: #fff;/* 添加过度效果 */transition: transform .5s ease;}/* 偶数 */.box:nth-child(even) {transform: translateX(-200%);}/* 奇数 */.box:nth-child(odd) {transform: translateX(200%);}.box.show-center {transform: translateX(0);}</style>
</head><body><div class="box">content1</div><div class="box">content2</div><div class="box">content3</div><div class="box">content4</div><script>//在页面加载完毕后执行一次滚动加载函数window.onload = function () {scrollLoad()}//监听滚动window.addEventListener('scroll', scrollLoad)//定义数值var count = 5//滚动加载函数function scrollLoad() {// 1.获取所有的boxvar boxList = document.querySelectorAll('.box')//2. 定义一个目标值var targetValue = window.innerHeight * 0.8//3.获取每一个box距离浏览器顶部的值boxList.forEach(function (box) {var boxTop = box.getBoundingClientRect().topconsole.log(box.getBoundingClientRect());if (boxTop <= targetValue) {box.classList.add('show-center')} else {box.classList.remove('show-center')}})createBox()}//创建box函数function createBox() {//网页全文高度var pageHeight = document.documentElement.scrollHeight//滚动条被卷去的高度var stop = document.documentElement.scrollTop;//窗口高度var seeHeight = window.innerHeight//滚动条距离底部的高度var bottom = pageHeight - stop - seeHeight//如果高度小于200 就添加一个节点if (bottom <= 200) {var div = document.createElement('div')div.classList.add('box');div.innerHTML = 'content' + count;count++document.body.appendChild(div)}}</script>
</body></html>

感谢大家浏览!!!

用js实现滚动加载动画效果相关推荐

  1. 真是好东西!一组动感的页面加载动画效果

    如果您曾经访问过 Nicolas Zezuka 和 Active Theory 的出色的设计网站,你可能已经注意到在显示新内容之前动感的页面加载动画了.这种风格的动画效果最近非常流行,因此这篇文章想给 ...

  2. 【每日一练】118—一款评论留言加载动画效果

    写在前面 今天这个练习也是我们在开发中会经常遇到的一个实用场景,比方我们在开发个人主页或者企业营销主页时,对某人或者某物的推荐留言评论,都会应用到,这种效果也是我们在很多页面中经常见到的一种效果,好了 ...

  3. 模仿滴滴单车解锁的时候,从0%到90%的欺骗加载动画效果

    /**欺骗加载动画效果-*/var text = '已解锁{value}%';var interval;var __fakeLoading = function (callback, time, pe ...

  4. SAP UI的加载动画效果和幽灵设计(Ghost Design)

    这是Jerry 2021年的第 14 篇文章,也是汪子熙公众号总共第 285 篇原创文章. 在本篇文章之前,Jerry 印象最深的幽灵,应该要算<星际争霸I>里人族能够隐形的空中单位 Wr ...

  5. HTML5+CSS3小实例:简单又好看的加载动画效果

    HTML5+CSS3做一个简单又好看的加载动画效果,一个三色圆环转动,再加圆环内部文字转动,效果虽然简单,但第一次看到还是很惊艳的,最主要一点,代码真的超简单的. 效果: 源码: <!DOCTY ...

  6. 【web前端特效源码】使用HTML5+CSS3制作一个会动的音频loading加载动画效果~~适合初学者~超简单~ |前端开发|IT编程

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个会动的音频loading加载动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTY ...

  7. html实现图片加载动画效果,HTML5+javascript实现图片加载进度动画效果

    在网上找资料的时候,看到网上有图片加载进度的效果,手痒就自己也写了一个. 图片加载完后,隐藏loading效果. 想看加载效果,请ctrel+F5强制刷新或者清理缓存. 效果预览: 0% 代码如下: ...

  8. ios 自定义加载动画效果

    在开发过程中,可能会遇到各种不同的场景需要等待加载成功后才能显示数据.以下是自定义的一个动画加载view效果.      在UIViewController的中加载等到效果,如下 - (void)vi ...

  9. echarts加载动画效果_入门ae教程:科技类的加载动画,非常酷炫的效果,附带教程...

    效果图 今天这个教程属于初学者的教程,很简单,但是科技类的加载动画,我个人觉得都是非常酷的(每天5分钟,充实一整天) 教程 1. 首先打开我们的AE 2. 新建一个合成,1080*660px,持续时间 ...

最新文章

  1. Process finished with exit code -1073741819 (0xC0000005)
  2. I am beginning perl
  3. 如何降低SQL语句复杂度
  4. 浅谈 CSRF 攻击方式
  5. 优良中差五个等级英文表达_谈谈英文医学论文的文体特征和翻译技巧
  6. 工程实践中最常用的10大数据结构与算法讲解
  7. Stata15-Unicode:一次性转码解决中文乱码问题
  8. SVN的eclipse插件下载
  9. Sentaurus Process Refinement Boxes
  10. Android逆向Unity3D——XXX快跑破解
  11. 《老路用得上的商学课》46-50学习笔记
  12. STM32F107的SPI3不能使用的问题
  13. 企业安全实战】开源HIDS OSSEC部署与扩展使用
  14. 163邮箱的格式怎么写,如何申请电子邮箱?
  15. @程序员:今日七夕,宜找对象
  16. 树莓派zero刷系统并通过usb访问
  17. 一个合格数字IC设计工程师的知识结构
  18. Ubuntu 安装 vim
  19. 香港商报:高铁出行受港人热捧 逐渐融入市民生活
  20. 保弘实业|个人理财如何才能做到收益最高

热门文章

  1. 粒子群算法(PSO)——算法详解(一)
  2. 2023年全国最新道路运输从业人员精选真题及答案57
  3. Cluster Docker
  4. c语言编程求nba比赛,c语言获取直播吧最近一周nba比赛信息
  5. 入驻天猫需要哪些条件?
  6. python函数的装饰器
  7. 输入一个32位的有符号整数,需要将每位上的数字反转,例如:输入123 输出321 ,输入-123 输出-321
  8. 读《DevOps实践指南》笔记一
  9. Sql Server 语句美化工具
  10. LeetCode322.零钱兑换(一)