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 相关文章推荐
学习ExtJS(一) 之基础前提
Oct 07 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
Mar 10 Javascript
JQuery对checkbox操作 (循环获取)
May 20 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
Dec 10 Javascript
js查找某元素中的所有图片地址的方法
Jan 16 Javascript
AngularJS用户选择器指令实例分析
Nov 04 Javascript
通过AngularJS实现图片上传及缩略图展示示例
Jan 03 Javascript
Gulp实现静态网页模块化的方法详解
Jan 09 Javascript
echarts整合多个类似option的方法实例
Jul 10 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
Aug 08 Javascript
jQuery 查找元素操作实例小结
Oct 02 jQuery
webpack+vue-cil 中proxyTable配置接口地址代理操作
Jul 18 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提交后跳转
2013/06/23 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
Add a Formatted Table to a Word Document
2007/06/15 Javascript
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
2018/05/22 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
Python Nose框架编写测试用例方法
2017/10/26 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
python输出决策树图形的例子
2019/08/09 Python
解决Python安装cryptography报错问题
2020/09/03 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
学校食品安全实施方案
2014/06/14 职场文书
2014年新教师工作总结
2014/11/08 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
具结保证书
2015/01/17 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python