点击侧边栏展开和收缩代码实例
分类:实例代码
点击侧边栏展开和收缩代码实例属于前端实例代码,有关更多实例代码大家可以查看。
本章节分享一段代码实例,它实现了点击展开和收缩侧边栏效果。
代码实例如下:
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.pipipi.net/" /> <title>犀牛前端部落</title> <style type="text/css"> * { padding: 0; margin: 0; } body, html { height: 100%; width: 100%; } .box-flex { height: 100%; width: 100%; display: flex; } #box { height: 100%; width: 300px !important; background: #282828; position: relative; margin-left: -300px; float: left; } #box span { height: 30px; width: 30px; position: absolute; top: 0; right: -30px; background: #ccc; } #box ul { padding: 0; margin: 0; width: 100%; height: 100%; } #box ul li { list-style-type: none; height: 40px; line-height: 40px; font-family: Arial; font-size: 16px; text-align: center; } #box ul li.menu-header { height: 200px; width: 100%; line-height: 200px; color: white; font-size: 50px; font-family: "微软雅黑"; } #box ul li a { color: #fff; text-decoration: none; display: block; height: 100%; width: 100%; } #box ul li a:hover { background: #404040; } .antzone { height: 100%; width: 100%; background: green; float: left; padding-left: 50px; font-size: 30px; color: white; font-family: "微软雅黑"; } </style> <script type="text/javascript"> window.onload = function() { var oBox = document.getElementById('box'); var oBtn = document.getElementById('btn'); function addEveent(ele, type, fn) { if (ele.addEventListener) { ele.addEventListener(type, fn, false) } else if (ele.attachEvent) { ele.attachEvent("on" + type, fn) } else { ele['on' + type] = fn; } } addEveent(oBtn, 'click', fnMove); function fnMove() { var oLeft = parseInt(oBox.offsetLeft); if (oLeft == -300) { animate(10); } else { animate1(-10); } } function animate(speed) { var t = setInterval(function() { var oLeft = parseInt(oBox.offsetLeft); if ((oLeft = -300 && oLeft < 0)) { oBox.style["margin-left"] = oBox.offsetLeft + speed + 'px'; } else { clearInterval(t) } }, 10) } function animate1(speed) { var t = setInterval(function() { var oLeft = parseInt(oBox.offsetLeft); if (oLeft <= 0 && oLeft > -300) { oBox.style["margin-left"] = oBox.offsetLeft + speed + 'px'; } else { clearInterval(t) } }, 10) } } </script> </head> <body> <div class="box-flex"> <div id="box"> <span id='btn'></span> <ul> <li class="menu-header">犀牛前端部落</li> <li><a href="#">犀牛前端部落一</a></li> <li><a href="#">犀牛前端部落二</a></li> <li><a href="#">犀牛前端部落三</a></li> <li><a href="#">犀牛前端部落四</a></li> <li><a href="#">犀牛前端部落五</a></li> <li><a href="#">犀牛前端部落六</a></li> <li><a href="#">犀牛前端部落七</a></li> <li><a href="#">犀牛前端部落八</a></li> <li><a href="#">犀牛前端部落九</a></li> <li><a href="#">犀牛前端部落十</a></li> </ul> </div> <div class='antzone'>本站的url是pipipi.net</div> </div> </body> </html>
上面的代码实现了我们的要求,下面介绍一下它的实现过程。
一.代码注释:
window.onload = function() { //code }
当文档内容完全加载完毕再去执行函数中的代码。
var oBox = document.getElementById('box'); var oBtn = document.getElementById('btn');
获取指定id的元素对象。
function addEveent(ele, type, fn) { if (ele.addEventListener) { ele.addEventListener(type, fn, false) } else if (ele.attachEvent) { ele.attachEvent("on" + type, fn) } else { ele['on' + type] = fn; } }
兼容所有浏览器的事件处理函数注册封装。
addEveent(oBtn, 'click', fnMove)
为按钮注册click事件处理函数,点击此按钮就会执行fnMove(),进行展开和收缩操作。
function fnMove() { var oLeft = parseInt(oBox.offsetLeft); if (oLeft == -300) { animate(10); } else { animate1(-10); } }
此函数实现了展开和收缩功能。
var oLeft = parseInt(oBox.offsetLeft)获取oBox元素距离body左侧的距离。
然后判断如果这个距离是-300,也就是折叠状态,就执行animate(10)函数,也就是展开;
否则执行animate1(-10),也就是执行折叠操作。
function animate(speed) { var t = setInterval(function() { var oLeft = parseInt(oBox.offsetLeft); if ((oLeft = -300 && oLeft < 0)) { oBox.style["margin-left"] = oBox.offsetLeft + speed + 'px'; } else { clearInterval(t) } }, 10) }
很简单就是通过定时器函数,不断修改侧边栏的左外边距,最终实现了动画方式的展开效果。
二.相关阅读:
(1).addEventListener()参阅JavaScript addEventListener()一章节。
(2).parseInt()参阅JavaScript parseInt()一章节。
(3).offsetLeft参阅JavaScript offsetleft一章节。
(4).setInterval()参阅JavaScript setInterval()一章节。
点击侧边栏展开和收缩代码实例,这样的场景在实际项目中还是用的比较多的,关于点击侧边栏展开和收缩代码实例就介绍到这了。