层的展开与关闭,带有运动缓冲效果

2008-10-17 09:56:00 | 【
点击下面的层,看看有什么效果:

这是一个段落,点击看看有什么效果
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到

Hello World!
这是第二步段落,同样点击看看

使用此功能可以将部分内容隐藏起来,只显示标题,用户需要查看详细内容,点击标题,层展开显示全部内容,再次点击关闭层。

查看全部代码 View Code

第一步:
在<head>区添加以下脚本定义

<script type="text/javascript">

        /*****************************************************
         *  Share JavaScript (http://www.ShareJS.com)
         * 使用此脚本程序,请保留此声明
         * 获取此脚本以及更多的JavaScript程序,请访问 http://www.ShareJS.com
         ******************************************************/
    
/*
    函数名称: Scroll
    Scroll(obj, h, s)
    参数说明:
        obj,[object]  id值或对象.     必需
          h,[height]  展开后的高度.   可选(默认为200px)
          s,[speed]   展开速度,值越小展开速度越慢. 可选(默认为1.2){建议取值为1.1到2.0之间[例如:1.17]}.
    函数返回值:
        true    展开(对象的高度等于展开后的高度)
        false   关闭(对象的高度等于原始高度)
*/
function Scroll(obj, h, s){
    if(obj == undefined){return false;}
    var h = h || 200;
    var s = s || 1.2;
    var obj = typeof(obj)=="string"?document.getElementById(obj):obj;
    var status = obj.getAttribute("status")==null;
    var oh = parseInt(obj.offsetHeight);
    obj.style.height = oh;
    obj.style.display = "block";
 obj.style.overflow = "hidden";
    if(obj.getAttribute("oldHeight") == null){
        obj.setAttribute("oldHeight", oh);
    }else{
        var oldH = Math.ceil(obj.getAttribute("oldHeight"));
    }
    var reSet = function(){
        if(status){
            if(oh < h){
                oh = Math.ceil(h-(h-oh)/s);
                obj.style.height = oh+"px";
            }else{
                obj.setAttribute("status",false);
                window.clearInterval(IntervalId);
            }
        }else{
            obj.style.height = oldH+"px";
            obj.removeAttribute("status");
            window.clearInterval(IntervalId);
        }
    }
    var IntervalId = window.setInterval(reSet,10);
 return status;
}
window.onload= function(){
    document.getElementById('detail').onclick = function(){
        Scroll('detail', 300, 1.3);
    }
    document.getElementById('text').onclick = function(){
        Scroll('text');
    }
}
</script>




第二步:
在<body>区添加以下代码
<!--标准奸商注释:设置样式display:block;overflow:hidden 隐藏层中部分内容,等到展开后才能看到-->
<p id="detail" style="border:1px dashed #f00;height:18px;display:block;overflow:hidden">这是一个段落,点击看看有什么效果<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
</p>

<div id="text" style="border:1px solid #0f0">Hello World!<br/>这是第二步段落,同样点击看看</div>

<button onclick="Scroll('text', 400, 1.2)">点击我也能达到同样的效果</button>


注释:
<p id="detail" style="border:1px dashed #f00;height:18px;display:block;overflow:hidden">这是一个段落,点击看看有什么效果<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
哈哈哈,我们是sharejs.com隐藏的内容,层展开后才能看到<br>
</p>
 


上面代码中id="detail" 为层的编号,需要与<head>区定义的脚本代码对应。
层的样式:style="border:1px dashed #f00;height:18px;display:block;overflow:hidden" 定义了层的高度,超出范围的内容为隐藏

下载"层的展开与关闭,带有运动缓冲效果"

  • 本地下载
  • 本地下载2

相关资源