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 相关文章推荐
用javascript实现给出的盒子的序列是否可连为一矩型
Aug 30 Javascript
JS 无限级 Select效果实现代码(json格式)
Aug 30 Javascript
jQuery事件 delegate()使用方法介绍
Oct 30 Javascript
用js调用迅雷下载代码的二种方法
Apr 15 Javascript
子页向父页传值示例
Nov 27 Javascript
JavaScript动态改变表格单元格内容的方法
Mar 30 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
Jul 01 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
May 13 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
Oct 18 Javascript
Vue源码探究之状态初始化
Nov 14 Javascript
JQuery 实现文件下载的常用方法分析
Oct 29 jQuery
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 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
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
使用迭代器 遍历文件信息的详解
2013/06/08 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
PHP中phar包的使用教程
2017/06/14 PHP
javascript类继承机制的原理分析
2009/09/12 Javascript
js 多浏览器分别判断代码
2010/04/01 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
vue实现文件上传功能
2018/08/13 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
python 统计代码行数简单实例
2017/05/04 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
Python的缺点和劣势分析
2019/11/19 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
python安装sklearn模块的方法详解
2020/11/28 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
助理政工师申报材料
2014/06/03 职场文书
运动会拉拉队口号
2014/06/09 职场文书
工程合作意向书范本
2015/05/09 职场文书
KTV员工管理制度
2015/08/06 职场文书
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP