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 相关文章推荐
[原创]静态页面也可以实现预览 列表不同的显示方式
Oct 14 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
Aug 13 Javascript
script标签属性用type还是language
Jan 21 Javascript
JavaScript中的函数声明和函数表达式区别浅析
Mar 27 Javascript
JavaScript观察者模式(经典)
Dec 09 Javascript
精通JavaScript的this关键字
May 28 Javascript
jQuery验证插件validate使用方法详解
Sep 13 Javascript
JS代码实现table数据分页效果
May 26 Javascript
JavaScript原型对象原理与应用分析
Dec 27 Javascript
详解滑动穿透(锁body)终极探索
Apr 16 Javascript
小程序中的箭头函数的具体使用
Jun 19 Javascript
基于JavaScript实现简单的轮播图
Mar 03 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语法(1)
2006/10/09 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
python增加矩阵维度的实例讲解
2018/04/04 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
自主实习接收函
2014/01/13 职场文书
教师申诉制度
2014/01/29 职场文书
建筑设计专业求职自我评价
2014/03/02 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
计划生育工作汇报
2014/10/28 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫