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 相关文章推荐
js函数的引用, 关于内存的开销
Sep 17 Javascript
巧用replace将文字表情替换为图片
Apr 17 Javascript
解析JavaScript的ES6版本中的解构赋值
Jul 28 Javascript
AngularJS $injector 依赖注入详解
Sep 14 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 Javascript
JavaScript实现多栏目切换效果
Dec 12 Javascript
谈谈Vue.js——vue-resource全攻略
Jan 16 Javascript
JavaScript输入框字数实时统计更新
Jun 17 Javascript
VUE实现一个分页组件的示例
Sep 13 Javascript
前端把html表格生成为excel表格的实例
Sep 19 Javascript
layui多iframe页面控制定时器运行的方法
Sep 05 Javascript
详解Node.js如何处理ES6模块
May 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
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
不要轻信 PHP_SELF的安全问题
2009/09/05 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
php多进程应用场景实例详解
2019/07/22 PHP
jquery中ajax学习笔记3
2011/10/16 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
JavaScript通过事件代理高亮显示表格行的方法
2015/05/27 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
wxPython框架类和面板类的使用实例
2014/09/28 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
python任务调度实例分析
2015/05/19 Python
python批量修改图片后缀的方法(png到jpg)
2018/10/25 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
python数据挖掘需要学的内容
2019/06/23 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
Django中template for如何使用方法
2021/01/31 Python
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
教师专业技术工作总结2015
2015/05/13 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
幼儿园六一主持词
2015/06/30 职场文书
Python实现照片卡通化
2021/12/06 Python
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android