js定时器+简单的动画效果实例


Posted in Javascript onNovember 10, 2017

1.向下滑动

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>向下滑动</title>
 <style>
  body {
   margin: 0px;
  }
  #show {
   width: 200px;
   /* 高度为 0 */
   height: 100px;
   background-color: lightcoral;
   margin: 0 auto;
   /* 设置为隐藏 */
   /*display: none;*/
  }

 </style>
</head>
<body>
<div id="show"></div>
<script>
 var show = document.getElementById('show');
 /*show.style.display = 'block';

 var t = setInterval(function(){
  var style = window.getComputedStyle(show,null);
  var height = parseInt(style.height);
  // 判断当前的高度是否为 400
  if (height >= 400){
   clearInterval(t);
  } else {
   height++;
   show.style.height = height + 'px';
  }
 },50);*/

 slideDown(show,400);

 /*
  将上述实现的向下滑动效果,封装在一个固定的函数中
  * 设计当前实现向下滑动效果函数的形参
   * elem - 表示实现向下滑动效果的元素
   * maxHeight - 表示元素向下滑动的最大高度值
  * 函数的逻辑与默认设置CSS样式属性的值无关
  */
 function slideDown(elem, maxHeight){
  // 操作的元素默认的display值为none
  elem.style.display = 'block';
  elem.style.height = '0px';

  var t = setInterval(function(){
   var style = window.getComputedStyle(elem,null);
   var height = parseInt(style.height);
   // 判断当前的高度是否为 400
   if (height >= maxHeight){
    clearInterval(t);
   } else {
    height++;
    elem.style.height = height + 'px';
   }
  },50);
 }


</script>
</body>
</html>

2.移动效果

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>移动效果</title>
  <style>
    body {
      margin: 0px;
    }
    #box {
      width: 100px;
      height: 100px;
      background-color: lightcoral;

      position: absolute;
      left: 100px;
      top: 100px;
    }
  </style>
</head>
<body>
<div id="box"></div>
<script>
  var box = document.getElementById('box');
  box.onclick = function(){
    clearInterval(t);
  }
  /*
    * 向右移动
     * 当前元素移动到页面的最右边时 -> 向左移动
    * 向左移动
     * 当前元素移动到页面的最左边时 -> 向右移动
   */
  var flag = false;// 默认表示向右
  var speed = 1;// 表示每次变化的值
  t = setInterval(function(){
    //speed += 0.01;
    // 获取当前页面的宽度
    var WIDTH = window.innerWidth;
    var style = window.getComputedStyle(box,null);
    var left = parseInt(style.left);
    var width = parseInt(style.width);
    // 判断当前元素移动的方向
    if (flag){// 向左移动
      left -= speed;
    } else {// 向右移动
      left += speed;
    }
    // 判断什么情况下,向左移动;判断什么情况下,向右移动
    if ((left + width) >= WIDTH){// 向左移动
      flag = true;
    } else if (left <= 0){// 向右移动
      flag = false;
    }
    box.style.left = left + 'px';
  },10);

</script>
</body>
</html>

3.事件与动画结合

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>事件与动画结合</title>
  <style>
    body {
      margin: 0px;
    }
  </style>
</head>
<body>
<script>
  // 获取<body>元素
  var body = document.body;
  // 当页面加载完毕后,设置当前<body>元素的高度为当前浏览器窗口的高度
  window.onload = function(){
    setHeight(body);
  };
  // 当用户改变浏览器窗口的大小时,重新设置<body>元素的高度(等于当前窗口的高度)
  window.onresize = function(){
    setHeight(body);
  };
  // 定义函数 - 设置<body>元素的高度等于当前窗口的高度
  function setHeight(elem){
    elem.style.height = window.innerHeight + 'px';
  }

  var width = 100,height = 100;
  // 为<body>元素绑定click事件
  body.onclick = function(event){
    var x = event.clientX;
    var y = event.clientY;
    // 创建<div>元素,显示的位置在鼠标当前的坐标值
    var div = document.createElement('div');
    div.setAttribute('class','circle');
    body.appendChild(div);
    // rgb(0,0,0)格式 -> 颜色随机
    var r = parseInt(Math.random()*255);
    var g = parseInt(Math.random()*255);
    var b = parseInt(Math.random()*255);

    div.style.width = width + 'px';
    div.style.height = height + 'px';
    div.style.backgroundColor = 'rgb('+r+','+g+','+b+')';
    div.style.borderRadius = '50%';
    div.style.opacity = 1;
    div.style.position = 'absolute';
    div.style.left = x - width/2 + 'px';
    div.style.top = y - height/2 + 'px';

    animate(div);
  }
  // 定义函数 -> 实现动画效果
  function animate(elem){
    var style = window.getComputedStyle(elem,null);
    /*var width = parseInt(style.width);
    var height = parseInt(style.height);
    var left = parseInt(style.left);
    var top = parseInt(style.top);
    width++;
    height++;
    elem.style.width = width + 'px';
    elem.style.height = height + 'px';
    elem.style.left = (left - 0.5) + 'px';
    elem.style.top = (top - 0.5) +'px';*/

    var opacity = style.opacity;

    if (opacity <= 0){
      clearTimeout(t);
      // 删除当前元素
    }

    opacity -= 0.01;
    elem.style.opacity = opacity;

    // 设定定时器
    var t = setTimeout(function(){
      animate(elem);
    },50);
  }

</script>
</body>
</html>

以上这篇js定时器+简单的动画效果实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
页面中iframe相互传值传参
Dec 13 Javascript
jQuery中fadeOut()方法用法实例
Dec 24 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
Apr 25 Javascript
javascript中的previousSibling和nextSibling的正确用法
Sep 16 Javascript
jQuery对象的链式操作用法分析
May 10 Javascript
Javascript基础学习笔记(菜鸟必看篇)
Jul 22 Javascript
基于jQuery实现仿微博发布框字数提示
Jul 27 Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
Feb 09 Javascript
element-ui使用导航栏跳转路由的用法详解
Aug 22 Javascript
微信小程序实现简单表格
Feb 14 Javascript
vue+elementui 对话框取消 表单验证重置示例
Oct 29 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
Nov 10 #Javascript
angular之ng-template模板加载
Nov 09 #Javascript
深入理解Vue 单向数据流的原理
Nov 09 #Javascript
node.js基于express使用websocket的方法
Nov 09 #Javascript
angular2系列之路由转场动画的示例代码
Nov 09 #Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
Nov 09 #Javascript
基于vue配置axios的方法步骤
Nov 09 #Javascript
You might like
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
Zend的AutoLoad机制介绍
2012/09/27 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
小程序实现搜索框
2020/06/19 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
python二维键值数组生成转json的例子
2019/12/06 Python
Python Numpy,mask图像的生成详解
2020/02/19 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
python异步Web框架sanic的实现
2020/04/27 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
《美丽的小路》教学反思
2014/02/26 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
单位法人授权委托书范本
2014/10/09 职场文书