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 相关文章推荐
aspx中利用js实现确认删除代码
Jul 22 Javascript
登陆成功后自动计算秒数执行跳转
Jan 23 Javascript
JavaScript数据类型检测代码分享
Jan 26 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
May 14 Javascript
jquery实现无刷新验证码的简单实例
May 19 Javascript
jQuery图片轮播插件——前端开发必看
May 31 Javascript
Vue自定义指令使用方法详解
Aug 21 Javascript
教你用Cordova打包Vue项目的方法
Oct 17 Javascript
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
教你如何用node连接redis的示例代码
Jul 12 Javascript
jquery 动态遍历select 赋值的实例
Sep 12 jQuery
详解vue父子组件关于模态框状态的绑定方案
Jun 05 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
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php代码书写习惯优化小结
2013/06/20 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
jquery 表单进行客户端验证demo
2009/08/24 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
Node学习记录之cluster模块
2017/05/31 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
python 布尔操作实现代码
2013/03/23 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python+pyqt5编写md5生成器
2019/03/18 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
database面试题
2013/03/28 面试题
程序员经常用到的UNIX命令
2015/04/13 面试题
《理想》教学反思
2014/02/17 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
个人违纪检讨书
2014/09/15 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
早上好问候语大全
2015/11/10 职场文书