js实现的侧边栏展开收缩效果

原文地址:http://www.softwhy.com/forum.php?mod=viewthread&tid=12246

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<title>侧边栏展开收缩</title>
<style type="text/css">
#thediv{
  width:150px;
  height:200px;
  background:#999999;
  position:absolute;
  left:-150px;//div初始位置
}
span{
  width:20px;
  height:100px;
  line-height:23px;
  background:#09C;
  position:absolute;
  right:-20px;
  top:70px;
}
</style>
<script>
window.onload=function(){
  var odiv=document.getElementById(‘thediv‘);
  odiv.onmouseover=function (){startmove(0,10);}
  odiv.onmouseout=function (){startmove(-150,-10);}
}
var timer=null;
function startmove(target,speed){
  var odiv=document.getElementById(‘thediv‘);
  clearInterval(timer);
  timer=setInterval(function (){
    if(odiv.offsetLeft==target){
      clearInterval(timer);
    }
    else{
      odiv.style.left=odiv.offsetLeft+speed+‘px‘;
    }
  },30)
}
</script>
</head>
<body>
<div id="thediv">
<span>侧边栏展开收缩</span>
</div>
</body>
</html>

以上代码实现了我们的要求,鼠标悬浮于侧边栏可以实现展开,离开实现收缩功能,下面介绍一下实现过程。
一.代码注释:
1.window.onload=function(){},文档结构内容完全加载完毕再去执行函数中的代码。
2.var odiv=document.getElementById(‘thediv‘),获取指定元素对象。
3.odiv.onmouseover=function (){startmove(0,10);},为odiv对象注册onmouseover事件处理函数。
4.odiv.onmouseout=function (){startmove(-150,-10);},为odiv对象注册onmouseout事件处理函数。
5.var timer=null,声明一个timer作为定时器函数的标识。
6.function startmove(target,speed){}此函数是展开和折叠的核心函数,第一个参数是left的目标值,speed是速度。
7. var odiv=document.getElementById(‘thediv‘),获取元素对象。
8.clearInterval(timer),停止前一个定时器函数的执行,可以防止多个定时器函数同时执行造成干扰。
9.timer=setInterval(function (){},30),每隔30毫秒执行一次函数。
10.if(odiv.offsetLeft==target){clearInterval(timer);},如果div元素距离body左边缘等于规定的尺寸,就停止定时器函数。
11.else{odiv.style.left=odiv.offsetLeft+speed+‘px‘;},否则继续设置left属性值。
二.相关阅读:
1.onmouseover事件可以参阅javascript的onmouseover事件一章节。 
2.onmouseout事件可以参阅javascript的onmouseout事件详解一章节。 
3.clearInterval()函数可以参阅window对象的clearInterval()方法一章节。 
4.setInterval()函数可以参阅setInterval()函数用法详解一章节。 
5.offsetLeft属性可以参阅js的offsetTop好offsetLeft属性用法详解一章节。

时间: 2024-10-28 11:59:29

js实现的侧边栏展开收缩效果的相关文章

展开/收缩效果切换

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>展开/收缩效果切换</title> <style> #box .hid{display:none;} #box .show{display:block;} #tog{cursor: pointer} li{list-style: none} &l

jQuery 侧边栏展开收起效果

jQuery文件: <script type="text/javascript">    $(function(){                var tit= $(".boxBar dl dt");        var con= $(".boxBar dl dd");        var list=$("dt:gt(4)");        var conBox=$("dd:gt(4)"

点击UITableView的cell展开收缩

首先要理解UITableView代理方法调用的先后顺序. 当初始化UITableView后,代理回调顺序如下 1://返回cell个数 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 2://返回每行的高度 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPat

Cell展开&amp;&amp;收缩全垒打

Cell展开&&收缩全垒打 引言 最近想把UITableView(表视图)全面熟悉一遍,接触到两个实例方法 - (void)beginUpdates; - (void)endUpdates; 经过一番研究后发现这两个方法除了用来批量操作Cell,还有改变动态更新行高的作用.官方文档给出了这样的说明: You can also use this method followed by the endUpdates method to animate the change in the row

jquery实现后台系统左侧菜单的点击展开/收缩二级菜单效果

html: <div class="col-sm-3 col-md-2 sidebar"> <div class="totalt"><a>系统管理系统</a></div> <ul class="menu"> <li class="title"> <a class="item item1"><span cla

实用js+css多级树形展开效果导航菜单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

jquery实现可展开收缩的首页大图广告展示方式 泰山压顶代码js V1.0

html主题代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="

jQuery弹性展开收缩菜单插件gooey.js

分享一款基于jQuery弹性展开收缩菜单插件gooey.js.这是一款基于gooey.js插件实现的弹性菜单特效代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <header class="plugin-demo-header"> <h1>Gooey Menu</h1> <nav id="gooey-upper"> <input type="checkbox" cla

HTML5每日一练之details展开收缩标签的应用

details标签的出现,为我们带来了更好的用户体验,不必为这种收缩展开的效果再编写JS来实现.注:目前仅Chrome支持此标签. details有一个新增加的子标签——summary,当鼠标点击summary标签中的内容文字时,details标签中的其他所有元素将会展开或收缩. detalis标签: 案例1: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" conte