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 加号(+)运算符号
Dec 06 Javascript
dess中一个简单的多路委托的实现
Jul 20 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
Aug 03 Javascript
JS模板实现方法
Apr 03 Javascript
Javascript玩转继承(二)
May 08 Javascript
jQuery判断复选框是否勾选的原理及示例
May 21 Javascript
再JavaScript的jQuery库中编写动画效果的指南
Aug 13 Javascript
jQuery绑定事件on()与弹窗的简要概述
Apr 27 Javascript
mui back 返回刷新页面的实例
Dec 06 Javascript
vue实现条件判断动态绑定样式的方法
Sep 29 Javascript
Three.JS实现三维场景
Dec 30 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
Jul 19 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
2019十大人气国漫
2020/03/13 国漫
DIY实用性框形天线
2021/03/02 无线电
php xml文件操作代码(一)
2009/03/20 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
深入理解python中sort()与sorted()的区别
2018/08/29 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
如何用python免费看美剧
2020/08/11 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
极简的HTML5模版
2015/07/09 HTML / CSS
环境工程毕业生自荐信
2013/11/17 职场文书
要账委托书范本
2014/09/15 职场文书
会计试用期自我评价
2015/03/10 职场文书
水浒传读书笔记
2015/06/25 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
Python如何识别银行卡卡号?
2021/06/10 Python