首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js实现加载动画

基础概念

加载动画(Loading Animation)是一种在应用程序或网页中显示的视觉效果,用于指示内容正在加载中。它通常用于提高用户体验,让用户知道系统正在处理请求,而不是处于无响应状态。

相关优势

  1. 提升用户体验:通过视觉反馈告知用户系统正在工作,减少用户的焦虑感。
  2. 防止用户重复操作:避免用户在内容加载过程中重复点击按钮或提交表单。
  3. 美观性:设计良好的加载动画可以增加应用的吸引力。

类型

  1. 旋转图标:常见的圆形旋转图标。
  2. 进度条:显示加载进度的条形图。
  3. 骨架屏:模拟页面布局的半透明占位符。
  4. 动画文字:显示加载状态的文字提示。

应用场景

  • 网页加载:在页面完全加载前显示。
  • 数据请求:在发送API请求并等待响应时显示。
  • 复杂计算:在执行耗时操作时提供反馈。

示例代码

以下是一个简单的JavaScript实现加载动画的示例,使用CSS动画和JavaScript控制显示与隐藏。

HTML

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Loading Animation</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div id="loading" class="loading-overlay">
        <div class="spinner"></div>
    </div>
    <button onclick="startLoading()">Start Loading</button>
    <button onclick="stopLoading()">Stop Loading</button>
    <script src="script.js"></script>
</body>
</html>

CSS (styles.css)

代码语言:txt
复制
.loading-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.8);
    z-index: 9999;
}

.spinner {
    border: 16px solid #f3f3f3;
    border-radius: 50%;
    border-top: 16px solid #3498db;
    width: 120px;
    height: 120px;
    animation: spin 2s linear infinite;
    margin: auto;
    position: absolute;
    top: 0; left: 0; bottom: 0; right: 0;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

JavaScript (script.js)

代码语言:txt
复制
function startLoading() {
    document.getElementById('loading').style.display = 'block';
}

function stopLoading() {
    document.getElementById('loading').style.display = 'none';
}

可能遇到的问题及解决方法

  1. 动画卡顿
    • 原因:可能是由于页面其他元素的重绘和回流导致的性能问题。
    • 解决方法:优化CSS动画,使用will-change属性或者将动画放在单独的图层上。
  • 加载动画不显示
    • 原因:可能是JavaScript代码错误或者CSS选择器不正确。
    • 解决方法:检查控制台是否有错误信息,确保CSS选择器和JavaScript逻辑正确。
  • 动画结束后不隐藏
    • 原因:可能是因为没有正确调用隐藏动画的函数。
    • 解决方法:确保在适当的时机调用stopLoading函数,例如在数据加载完成后。

通过以上方法,可以有效实现并管理页面的加载动画,提升用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • CSS实现最简洁的加载动画

    纯CSS能实现的功能越来越多了,能用css实现的就别用js,今天教大家用最短的代码实现下面这个加载动画,这个加载动画的优势不仅是短小,而且不需要额外的dom元素就可实现,因此在那些异步加载的dom身上使用非常方便...,比如、、等,实现了【样式-结构-数据】的分离,大大提升了开发和运行的效率。...,但是为了控制动画的生命周期,统一用JS来做吧: // 条纹厚度 const w = 3; // 加载动画的容器 const loading = document.getElementById('loading...`repeating-linear-gradient(-30deg, white 0, white ${w}mm, black ${w}mm, black ${w * 2}mm)`; // 开始动画...animation.cancel(); 而且,可以根据原型图的要求调整样式,无论如何也不会超过20行CSS就能轻松实现,何必去使用那么大的第三方库呢?

    1.2K20

    网站页面滚动加载动画JS特效(二)

    昨天发布了网站页面滚动加载动画JS特效,但是加载的页面并不怎么完美,文章页面不能直接加载出来,需要滚动条继续下来,可能是没有调节js导致的,所以今天又重新测试了wow.js,感觉这个不错,很喜欢,有兴趣的可以测试下...页面在向下滚动的时候,有些元素会产生细小的动画效果。虽然动画比较小,但却能吸引你的注意。比如刚刚发布的 iPhone 6 的页面(查看)。如果你希望你的页面也更加有趣,那么你可以试试 WOW.js。...WOW.js 依赖 animate.css,所以它支持 animate.css 多达 60 多种的动画效果,能满足您的各种需求。 ?...浏览器兼容 IE10+ Chrome Firefox Opera Safari IE6、IE7 等老旧浏览器不支持 CSS3 动画,所以没有效果;而 wow.js 也使用了 querySelectorAll...是否在移动设备上执行动画 live 布尔值 true 异步加载的内容是否有效 这个跟上次的不太一样,引入了css+script其他步骤相同,其他功能未测,大家可以自己DIY。

    7.4K30

    js动画效果_js动画函数

    一、setTimeout VS. requestAnimationFrame 传统js动画实现一般使用setTimeout/setInterval等定时方式执行一个动画更新操作,但这种方式在使用中存在一些问题...例如,显示器是10ms,则interval就是10ms;如果是16.7ms,则interval自动是16.7ms 浏览器优化动画绘制 浏览器可以合并requestAnimationFrame的动画操作...、CSS动画、CSS变换等各种动画效果到一次渲染周期中完成。...并且在页面不可见时,可以选择不进行动画渲染的执行(似乎是暂停动画),节约资源、电量。...三、浏览器兼容性 目前,有些低版本浏览器不支持requestAnimationFrame,这种情况下为了进行兼容,还是需要使用setTimeout/setInterval来实现动画。

    30.9K30

    5分钟实现漂亮的CSS加载动画,纯CSS实现加载动画

    2.6 CSS3动画(animation) 动画是 CSS3 中最具颠覆性的特征之一,可通过设置多个节点来精确的控制一个或者一组动画,从而实现复杂的动画效果。...动画的基本使用: 1 定义动画 2 调用定义好的动画 定义动画语法 @keyframes 动画名称 { 0% { width: 100px; } 100% { width:...: 持续时间; } 动画序列 0% 是动画的开始,100 % 是动画的完成,这样的规则就是动画序列 在 @keyframs 中规定某项 CSS 样式,就由创建当前样式逐渐改为新样式的动画效果 动画是使元素从一个样式逐渐变化为另一个样式的效果...值 描述 linear 动画从头到尾的速度是相同的。 ease 默认。动画以低速开始,然后加快,在结束前变慢。 ease-in 动画以低速开始。 ease-out 动画以低速结束。...DOCTYPE html> 加载动画:公众号AlbertYang <link

    2.3K10

    (九)使用js实现动画

    使用 JavaScript 实现动画 说明 因为 css 不能实现较为复杂的动画,如数字变化动画,或者 canvas 形变动画等 认识 js 动画 市面上有很多优秀的 js 库 如下面这个 GreenSock...我们需要在合适的地方切入 js 动画,具体参数如下图 这些回调函数需要以当前 组件作为实例调用,方便对接 js 库操作 DOM 实例 enter 和 leave 还接收第二个参数 done 需要手动调用通知...vue 动画执行完成可以正式卸载挂载组件了 function lave(el, done) { done() } 禁用组件自带的 6 个 css 动画 使用 v-bind:css="fasle"...简写 :css="fasle" 使用 web animation Api 来实现动画 web...}) // animate 会返回一个animation实例,通过他我们可以监听动画的执行阶段,可以手动暂停,或者播放动画 fadeIn.onfinis = () => { done

    5.2K20

    网站页面滚动加载动画JS特效

    终于尘埃落定了,前段时间忙的不可开交,结婚,工作,因为婚假+年假一起休的,导致很长时间没有更新博客了,今天抽空给大家带来了一个js特效,网站模块延迟加载的动画,假期之前就想着制作这个功能,页面滚动加载...简介 和 WOW.js 一样,scrollReveal.js 也是一款页面滚动显示动画的 JavaScript,能让页面更加有趣,更吸引用户眼球。...不同的是 WOW.js 的动画只播放一次,而 scrollReveal.js 的动画可以播放一次或无限次;WOW.js 依赖 animate.css,而 scrollReveal.js 不依赖其他任何文件...container'); container.innerHTML(data.newElementHTML); scrollReveal.init(); 其中高级自定义可以在后期加入,目前本站只是简单的加载动画...如果不喜欢这个可以试试wow.js,网站页面滚动加载动画JS特效(二)。

    11.5K20
    领券