JS实现的简单折叠展开动画效果示例


Posted in Javascript onApril 28, 2018

本文实例讲述了JS实现的简单折叠展开动画效果。分享给大家供大家参考,具体如下:

<!DOCTYPE = html>
<html>
 <head>
  <title>3water.com JS折叠展开动画</title>
  <style>
  body{
   margin: 0px;
   padding: 0px;
  }
  .red{
   background-color:red;
   width:200px;
   height:200px;
   position:relative;
   left:-200px;
   top:0px;
  }
  .blue{
   background:blue;
   width:20px;
   height:50px;
   position:absolute;
   left:200px;
   top:75px;
  }
  </style>
 </head>
 <body>
  <div class="red" id="cf1"><div class="blue" id="cf">分享</div></div>
  <script>
  window.onload = function(){
   var onDiv = document.getElementById("cf1");
   onDiv.onmouseover = function(){
    startmove(0);
   }
   onDiv.onmouseout = function(){
    startmove(-200);
   }
  }
  var timer ;
  function startmove(target){
   clearInterval(timer);//清除定时器,以免多次触发定时器导致速度越来越快而不是匀速前进
   var onDiv1 = document.getElementById("cf1");
   timer = setInterval(function(){
   var speed = 0;
   if(onDiv1.offsetLeft<target){
    speed = 10;
   }else{
    speed = -10;
   }
   if(onDiv1.offsetLeft==target){
    clearInterval(timer);
   }
   else{
   onDiv1.style.left = onDiv1.offsetLeft+speed+'px';
   }
   },30)
  }
  </script>
 </body>
</html>

运行效果:

JS实现的简单折叠展开动画效果示例

小结:

一、css部分:

1、别忘记样式初始化;
2、复习css文件的引用方式;(类引用方式)
3、复习绝对定位和相对定位关系(父关系用relative;子关系用absolute

二、js部分:

1、element.style.left & element.offsetLeft区别:

① 前者单位是px,是字符串;后者单位是数值;
② 其他参见:https://3water.com/article/43981.htm

2、思路开始不够清晰,未能抽象出鼠标放上和移开关键变量——目标位置不同而已

3、函数参数尽可能少(在能达成目标的情况下)

4、鼠标作用对象设置为父级div最好,不然会出现闪烁情况(刚调用onmouseover,目标移除,又调用了onmouseout

5、注意清除定时器(①、防止移动时速度不稳定 ②、到目标位置停止运动)

三、其他:

Q:谷歌浏览器解除禁止弹出窗口?

A:设置——高级设置——隐私设置——内容设置——弹出式窗口,进行相关设置。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScipt基本教程之前言
Jan 16 Javascript
15 个 JavaScript Web UI 库
May 19 Javascript
浅谈JavaScript函数节流
Dec 09 Javascript
jQuery实现可用于博客的动态滑动菜单
Mar 09 Javascript
用jquery快速解决IE输入框不能输入的问题
Oct 04 Javascript
js实现页面刷新滚动条位置不变
Nov 27 Javascript
教你一步步用jQyery实现轮播器
Dec 18 Javascript
根据Bootstrap Paginator改写的js分页插件
Dec 25 Javascript
关于foreach循环中遇到的问题小结
May 08 Javascript
基于js 本地存储(详解)
Aug 16 Javascript
AngularJS 的$timeout服务示例代码
Sep 21 Javascript
微信小程序如何使用canvas二维码保存至手机相册
Jul 15 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
Apr 28 #Javascript
详解Angular5路由传值方式及其相关问题
Apr 28 #Javascript
详解Angular5 路由传参的3种方法
Apr 28 #Javascript
深入理解Vue nextTick 机制
Apr 28 #Javascript
jQuery实现的电子时钟效果完整示例
Apr 28 #jQuery
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 #jQuery
Vue实现PopupWindow组件详解
Apr 28 #Javascript
You might like
隐性调用php程序的方法
2009/03/09 PHP
php高级编程-函数-郑阿奇
2011/07/04 PHP
destoon之一键登录设置
2014/06/21 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
用python实现的线程池实例代码
2018/01/06 Python
python使用pycharm环境调用opencv库
2018/02/11 Python
Python聊天室程序(基础版)
2018/04/01 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
Python 控制终端输出文字的实例
2019/07/12 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
销售总监工作职责
2013/11/21 职场文书
安踏广告词改编版
2014/03/21 职场文书
电钳工人个人求职信
2014/05/10 职场文书
企业文化演讲稿
2014/05/20 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书