点击侧边栏展开和收缩代码实例

快乐打工仔 分类:实例代码

点击侧边栏展开和收缩代码实例属于前端实例代码,有关更多实例代码大家可以查看

本章节分享一段代码实例,它实现了点击展开和收缩侧边栏效果。

代码实例如下:

<!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()一章节。

点击侧边栏展开和收缩代码实例,这样的场景在实际项目中还是用的比较多的,关于点击侧边栏展开和收缩代码实例就介绍到这了。

回复

我来回复
  • 暂无回复内容