内容收起、展开的JS代码javascript
演示效果:
特效说明:
内容收起、展开的JS特效代码,利用层来实现本效果,目前应用广泛,默认只显示三行内容,点击“展开”后会显示更多,再次点击会收缩,挺实用的代码。
实现代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>内容收起、展开的JS特效代码</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Author" content="Sheneyan" />
<script type="text/javascript">
window.onload = function ()
{
var aDiv = document.getElementsByTagName("div");
var i = 0;
for (i = 0; i < aDiv.length; i++)
{
(function ()
{
var oDiv = aDiv[i];
var oH5 = oDiv.getElementsByTagName("h5")[0];
var aP = oDiv.getElementsByTagName("p");
var iHeight = oH5.offsetHeight + aP[0].offsetHeight * aP.length;
var iLimitH = oH5.offsetHeight + aP[0].offsetHeight * 3;
var bShow = false;
if (aP.length > 3)
{
oDiv.style.height = iLimitH + "px";
oH5.innerHTML = "展开↓";
}
else
{
oH5.innerHTML = "收起↑"
}
oH5.onclick = function ()
{
bShow = !bShow;
doMove(oDiv, bShow ? iHeight : iLimitH);
oH5.innerHTML = bShow ? "收起↑" : "展开↓"
};
})()
}
function doMove(obj, iTarget, callback)
{
clearInterval(obj.timer);
obj.timer = setInterval(function ()
{
var iSpeed = (iTarget - obj.offsetHeight) / 5;
iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
iTarget == obj.offsetHeight ? (clearInterval(obj.timer), callback && callback()) : obj.style.height = iSpeed + obj.offsetHeight + "px"
}, 30)
}
}
</script>
<style type="text/css">
div.xx{border:solid 1px;overflow:hidden;}
div p{margin:0;line-height:50px;}
div.xx h5{border:solid 1px;border-width:0 0 1px;padding:0;margin:0;height:30px;line-height:30px;cursor:pointer;background:#eee;}
</style>
</head>
<body>
<div class="xx"><h5>收起</h5>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
</div>
<div class="xx"><h5>收起</h5>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
</div>
</body>
</html>
上一篇:常见Js复制代码
我要评论