当前位置:首页 > JavaScript

js实现加载效果

2026-02-02 22:26:59JavaScript

使用CSS动画实现加载效果

通过CSS定义旋转动画,结合JavaScript动态添加或移除加载元素。以下是一个简单的旋转加载动画实现:

<style>
.loader {
  border: 5px solid #f3f3f3;
  border-top: 5px solid #3498db;
  border-radius: 50%;
  width: 50px;
  height: 50px;
  animation: spin 1s linear infinite;
}

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

<div id="loader" class="loader" style="display:none;"></div>

<script>
function showLoader() {
  document.getElementById('loader').style.display = 'block';
}

function hideLoader() {
  document.getElementById('loader').style.display = 'none';
}
</script>

使用Promise模拟异步加载

结合Promise和setTimeout模拟异步操作时的加载效果:

function simulateAsyncOperation() {
  showLoader();

  return new Promise((resolve) => {
    setTimeout(() => {
      hideLoader();
      resolve('Operation completed');
    }, 2000);
  });
}

// 调用示例
simulateAsyncOperation().then(result => {
  console.log(result);
});

进度条加载效果

实现一个从0%到100%的进度条加载动画:

<div id="progress-container" style="width:100%;background:#ddd;">
  <div id="progress-bar" style="width:0%;height:30px;background:#4CAF50;"></div>
</div>

<script>
function startProgress() {
  let progress = 0;
  const bar = document.getElementById('progress-bar');
  const interval = setInterval(() => {
    progress += 1;
    bar.style.width = progress + '%';

    if(progress >= 100) {
      clearInterval(interval);
    }
  }, 50);
}
</script>

骨架屏加载效果

创建内容加载前的占位骨架:

<style>
.skeleton {
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}

@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
</style>

<div class="skeleton" style="width:100%;height:100px;"></div>

使用第三方库实现复杂效果

引入第三方库如Spin.js创建更丰富的加载动画:

js实现加载效果

<script src="https://cdnjs.cloudflare.com/ajax/libs/spin.js/2.3.2/spin.min.js"></script>

<div id="spinner-container"></div>

<script>
const opts = {
  lines: 12,
  length: 30,
  width: 14,
  radius: 42,
  scale: 1,
  corners: 1,
  color: '#000',
  fadeColor: 'transparent',
  speed: 1,
  rotate: 0,
  animation: 'spinner-line-fade-quick',
  direction: 1
};

const target = document.getElementById('spinner-container');
const spinner = new Spinner(opts).spin(target);

// 停止旋转
// spinner.stop();
</script>

标签: 加载效果
分享给朋友:

相关文章

uniapp实现懒加载

uniapp实现懒加载

uniapp实现懒加载的方法 在uniapp中实现懒加载可以通过多种方式,以下是几种常见的方法: 使用uni.lazyLoad组件 uniapp提供了内置的懒加载组件,适用于图片等资源的懒加载。在页…

h5实现左右滚动效果

h5实现左右滚动效果

使用CSS实现横向滚动 在HTML5中实现左右滚动效果,可以通过CSS的overflow-x属性配合white-space或flex布局实现。以下是一个基础示例: <div class="sc…

vue加载实现分页

vue加载实现分页

Vue 实现分页加载的方法 使用 Element UI 的分页组件 安装 Element UI 后,可以直接使用其分页组件。在模板中添加分页组件,并绑定相关事件和数据。 <template&g…

vue实现玻璃效果

vue实现玻璃效果

实现玻璃效果的方法 在Vue中实现玻璃效果(毛玻璃或磨砂玻璃)可以通过CSS的backdrop-filter属性结合Vue的动态样式绑定来实现。以下是具体步骤: 使用CSS backdrop-fil…

vue实现折叠效果

vue实现折叠效果

使用 v-show 或 v-if 实现基础折叠 通过 Vue 的指令 v-show 或 v-if 控制元素的显示与隐藏。v-show 通过 CSS 的 display 属性切换,v-if 直接操作 D…

vue实现弹窗效果

vue实现弹窗效果

使用 Vue 实现弹窗效果 组件化弹窗实现 创建独立的弹窗组件 Modal.vue,通过 v-if 或 v-show 控制显示状态: <template> <div class…