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 相关文章推荐
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
Apr 01 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
Mar 05 Javascript
如何将一个String和多个String值进行比较思路分析
Apr 22 Javascript
js判断两个日期是否相等的方法
Sep 10 Javascript
一个不错的字符串转码解码函数(自写)
Jul 31 Javascript
checkbox批量选中,获取选中项的值的简单实例
Jun 28 Javascript
几行js代码实现自适应
Feb 24 Javascript
AngularJS封装$http.post()实例详解
May 06 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
Feb 15 jQuery
小程序登录/注册页面设计的实现代码
May 24 Javascript
es6函数之箭头函数用法实例详解
Apr 25 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
Jul 28 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连接access数据库
2008/03/27 PHP
PHP编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
php摘要生成函数(无乱码)
2012/02/04 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
php实现encode64编码类实例
2015/03/24 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
原生js开发的日历插件
2017/02/04 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
python爬取NUS-WIDE数据库图片
2016/10/05 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
日语专业毕业生自荐书
2014/06/18 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
欠条范文
2015/07/03 职场文书
爱国之歌(8首)
2019/09/29 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
java实现面板之间切换功能
2022/06/10 Java/Android