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的with语句使用方法
Sep 21 Javascript
js实现网站首页图片滚动显示
Feb 04 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
Aug 09 Javascript
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
Oct 11 Javascript
jQuery队列操作方法实例
Jun 11 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
Apr 17 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
Jun 01 Javascript
JS刷新父窗口的几种方式小结(推荐)
Nov 09 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
Dec 13 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
Sep 28 Javascript
vue脚手架中配置Sass的方法
Jan 04 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
动态加载js的几种方法
2006/10/23 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
Python设计模式之工厂模式简单示例
2018/01/09 Python
Python随机函数random()使用方法小结
2018/04/29 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
品管员岗位职责
2013/11/10 职场文书
环境工程专业个人求职信
2013/12/05 职场文书
数学国培研修感言
2014/02/13 职场文书
企业出纳岗位职责
2014/03/12 职场文书
个人创业事迹材料
2014/12/30 职场文书
生活委员竞选稿
2015/11/21 职场文书
Redis性能监控的实现
2021/07/09 Redis