JS+CSS实现网页加载中的动画效果


Posted in Javascript onOctober 27, 2017

本文实例为大家分享了JS实现网页加载中效果的具体代码,供大家参考,具体内容如下

需要材料:

一张loading动画的gif图片

基本逻辑:

模态框遮罩 + loading.gif动图,
默认隐藏模态框
页面开始发送Ajax请求数据时,显示模态框
请求完成,隐藏模态框

下面我们通过Django新建一个web应用,来简单实践下

实践

1.新建一个Django项目,创建应用app01, 配置好路由和static,略。将gif动图放到静态文件夹下,结构如下:

JS+CSS实现网页加载中的动画效果

2.视图中定义一个函数,它返回页面test.html:

def test(request):
 return render(request, 'test.html')

3.test.html页面如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <!-- 导入css样式 -->
 <link rel="stylesheet" href="/static/css/loading.css" rel="external nofollow" >
 <!-- 导入jquery 和 js文件 -->
 <script src="/static/plugins/jquery-3.2.1.js"></script>
 <script src="/static/js/loading.js"></script>
</head>
<body>

<h1>你好啊,朋友!</h1>
<hr>

<div id="content">
 <p>正在请求服务器数据....</p>
</div>

<!-- 模态框部分 -->
<div class="loading hide">
 <div class="gif"></div>
</div>

</body>
</html>

4.CSS样式如下:

/* 模态框样式 */
.loading {
 position: fixed;
 top: 0;
 bottom: 0;
 right: 0;
 left: 0;
 background-color: black;
 opacity: 0.4;
 z-index: 1000;
}

/* 动图样式 */
.loading .gif {
 height: 32px;
 width: 32px;
 background: url('/static/img/loading.gif');
 position: fixed;
 left: 50%;
 top: 50%;
 margin-left: -16px;
 margin-top: -16px;
 z-index: 1001;
}

说明:

  • 通过设置position: fixed,并令上下左右为0,实现模态框覆盖整个页面;
  • 设置gif动态图为背景,居中,来显示加载效果;
  • 通过设置z-index值,令gif图悬浮在模态框上面;
  • background-color: black;是为了看着明显,具体使用时可以设为white;

5.JS文件如下:

$(function () {
 //准备请求数据,显示模态框
 $('div.loading').show();

 $.ajax({
  url: "/ajax_handler.html/",
  type: 'GET',
  data: {},
  success: function (response) {
   var content = response.content;
   $('#content').html(content);

   //请求完成,隐藏模态框
   $('div.loading').hide();
  },
  error: function () {
   $('#content').html('server error...');

   //请求完成,隐藏模态框
   $('div.loading').hide();
  }
 })
});

说明:

页面载入后,开始发送Ajax请求,从服务端ajax_handler视图请求数据,这时显示模态框
请求完成后,不论成功与否,隐藏模态框

6.ajax_handler视图如下,它模拟网络延迟,并返回一些字符串:

from django.http import JsonResponse
from django.utils.safestring import mark_safe # 取消字符串转义

def ajax_handler(request):
 # 模拟网络延迟
 import time
 time.sleep(3)

 msg = ''' XXX ''' # 这里你可以随便放入一些字符串

 return JsonResponse({"content": mark_safe(msg)})

效果如下:

JS+CSS实现网页加载中的动画效果

JS+CSS实现网页加载中的动画效果

如果显示不了gif动图,可能是浏览器缓存问题。项目完整代码在这里:https://github.com/Ayhan-Huang/Loading

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 编程引入命名空间的方法
Jun 29 Javascript
从零开始学习jQuery (二) 万能的选择器
Oct 01 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
Sep 06 Javascript
js setTimeout()函数介绍及应用以倒计时为例
Dec 12 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
Dec 19 Javascript
JavaScript常用标签和方法总结
Sep 01 Javascript
javascript类型系统——undefined和null全面了解
Jul 13 Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 Javascript
Node.js学习入门
Jan 03 Javascript
JS图片预加载三种实现方法解析
May 08 Javascript
js实现鼠标切换图片(无定时器)
Jan 27 Javascript
详解JavaScript中Arguments对象用途
Aug 30 Javascript
vue-resource拦截器设置头信息的实例
Oct 27 #Javascript
Vue-resource拦截器判断token失效跳转的实例
Oct 27 #Javascript
vue2里面ref的具体使用方法
Oct 27 #Javascript
初学者AngularJS的环境搭建过程
Oct 27 #Javascript
JavaScript中Require调用js的实例分享
Oct 27 #Javascript
JavaScript自执行函数和jQuery扩展方法详解
Oct 27 #jQuery
Popup弹出框添加数据实现方法
Oct 27 #Javascript
You might like
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
php 8小时时间差的解决方法小结
2009/12/22 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
使用Apache的rewrite
2021/03/09 Servers
[对联广告] JS脚本类
2006/08/27 Javascript
JS获取父节点方法
2009/08/20 Javascript
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
vue实现记事本功能
2019/06/26 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
python中pygame模块用法实例
2014/10/09 Python
使用Python的判断语句模拟三目运算
2015/04/24 Python
python如何对实例属性进行类型检查
2018/03/20 Python
python用requests实现http请求代码实例
2019/10/31 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
安纳塔拉酒店度假村及水疗官方网站:Anantara Hotel
2016/08/25 全球购物
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
为什么要做架构设计
2015/07/08 面试题
最新的大学生找工作自我评价
2013/09/29 职场文书
运动会获奖感言
2014/02/11 职场文书
银行内勤岗位职责
2014/04/09 职场文书
2015年科协工作总结
2015/05/19 职场文书
网吧温馨提示
2015/07/17 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
Python制作动态字符画的源码
2021/08/04 Python
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL