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的FileUploadField文件上传出现了两个上传按钮
Apr 29 Javascript
EasyUi datagrid 实现表格分页
Feb 10 Javascript
javascript实现俄罗斯方块游戏的思路和方法
Apr 27 Javascript
JavaScript与jQuery实现的闪烁输入效果
Feb 18 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
Aug 17 Javascript
详解javascript事件绑定使用方法
Oct 20 Javascript
AngularJS select设置默认值的实现方法
Aug 25 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
Nov 19 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 Javascript
详解React 条件渲染
Jul 08 Javascript
js实现无缝轮播图插件封装
Jul 31 Javascript
通过实例解析JavaScript常用排序算法
Sep 02 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
php5中类的学习
2008/03/28 PHP
PHP 一个页面执行时间类代码
2010/03/05 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
一些Python中的二维数组的操作方法
2015/05/02 Python
ubuntu安装sublime3并配置python3环境的方法
2018/03/15 Python
python实现百度语音识别api
2018/04/10 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
社区端午节活动方案
2014/01/28 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
关于召开会议的通知
2015/04/15 职场文书
六一活动主持词
2015/06/30 职场文书
交通安全学习心得体会
2016/01/18 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书