打印

仿YAHOO的一个小效果!看看吧,也许对你有用!

看看吧!一个简单的效果!

 提示:您可以先修改部分代码再运行
复制内容到剪贴板
代码:
<!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-Type" content="text/html; charset=gb2312" />
<title>隐藏/显示层</title>
<style type="text/css">
<!--
body{
    background: #FFF;
    color: #000;
    font: normal 12px 宋体,arial,sans-serif;
    margin: 0;
    padding: 0;
    text-align: left;
}
div,form,ul,ol,li,span,p {
    border: 0;
    margin: 0;
    padding: 0;
}
/*清除float*/
.clear{
    clear: both;
    font-size: 1px;
    visibility: hidden;
}
/*分类标题*/
.class_title{
    margin: 0 auto;
    width: 504px;
    height: 17px;
    border: 1px solid #9EB1C0;
    padding: 1px;
    background:url(http://www.east-dragon.cn/files/sw/images/title_bg.gif);
}
.class_title h2{
    margin: 0;
    padding: 2px 0 2px 18px;
    height: 12px;
    color: #16387C;
    font: bold 13px 宋体,arial,sans-serif;
    cursor:pointer;
    letter-spacing: 2px;
    text-align: left;
}
#tabclass1{
background:url(http://www.east-dragon.cn/files/sw/images/tab_drop1.gif) 6px center no-repeat;
}
/*分类列表(模块一)*/
#class_cnt1{
    background: url(http://www.east-dragon.cn/files/sw/images/class_cntbg.gif) left bottom repeat-x;
    border: solid #9EB1C0;
    border-width: 0 1px 1px 1px;
    height: 287px;
    margin: 0 auto;
    text-align: left;
    width: 506px;
    display: block;
  overflow:hidden;
}
#class_cnt1 p{
   margin:0;
   padding:3px;
   line-height:150%;
}
-->
</style>
<script language="javascript" type="text/javascript">
<!--
//=======================================================
//函数名称:getObject(objectId)
//          参数objectId:控件的ID值
//函数功能:获得控件的ID值
//返 回 值:ture(获得ID值) false(获取ID失败)
//=======================================================
function getObject(objectId) {
    if(document.getElementById && document.getElementById(objectId)) {
    // W3C DOM
    return document.getElementById(objectId);
    } else if (document.all && document.all(objectId)) {
    // MSIE 4 DOM
    return document.all(objectId);
    } else if (document.layers && document.layers[objectId]) {
    // NN 4 DOM.. note: this won't find nested layers
    return document.layers[objectId];
    } else {
    return false;
    }
}
// 显示列表框
function displayList(){   
          var h = getObject('class_cnt1').offsetHeight;  // 内容容器class_cnt1的初始高度(这时高度为:0)
          var max_h = 287; // 容器的最大高度
          
          var anim = function(){            
                    h += 50; // 每次递增50像素
                    //如果增加的高度开始超过容的最大高度
                    if(h >= max_h){
                    getObject('class_cnt1').style.height = "287px"; // 工期高度为287px(因为我们只希望容器这么高)
                    getObject('tabclass1').style.backgroundImage="url(http://www.east-dragon.cn/files/sw/images/tab_drop1.gif)"; // 让图片标签改变背景          
                    if(tt){window.clearInterval(tt);} // 如果高度在每2毫秒递减,则清楚改行为(如果不清楚,程序将一直自动运行高度每2毫秒递减)
                    }
                    else{ // 如果增加中的容器高度没有超过287px
                getObject('class_cnt1').style.display="block"; // 让容器可见(这样我们才能够看到容器在增高的效果)
                getObject('class_cnt1').style.height = h + "px"; // 容器高度不断的以50px递增
                    }
            }
               
              var tt = window.setInterval(anim,2);  // 设置每2毫秒循环一次(每2毫秒,运行一次anim[容器的高度递减50px])    
}
// 隐藏列表框
function hiddenList(){
       var h = getObject('class_cnt1').offsetHeight; // 内容容器class_cnt1的初始高度(这时高度为:287px)
           var anim = function(){
                 h -= 50; // 每次递减50像素
                 
                 if(h <= 5){
                 getObject('class_cnt1').style.display="none"; // 内容容器不可见(当容器高度小于5px)
                   getObject('tabclass1').style.backgroundImage="url(http://www.east-dragon.cn/files/sw/images/tab_drop2.gif)";
                   if(tt){window.clearInterval(tt);}
               }
               else{
                   getObject('class_cnt1').style.height = h + "px"; // // 容器高度不断的以50px递减
               }
           }
             
           var tt = window.setInterval(anim,2); // 设置每2毫秒循环一次(每2毫秒,运行一次anim[容器的高度递减50px])
}
//=======================================================
//函数名称:showClassList()
//函数功能:隐藏-显示级分类列表框(class_cnt1)
//返 回 值:无
//=======================================================
function showClassList(){
   // 如果内容容器为不可见的display:none
   if(getObject('class_cnt1').style.display == "none"){
       displayList(); // 显示内容框
   }
   else{ // 如果内容容器为可见的display:block
         hiddenList(); // 隐藏内容框
     }
}
-->
</script>
</head>
<body>
    <div class="class_title">
         <h2 id="tabclass1" onclick="showClassList()" title="隐藏/显示信息">分类信息</h2>        
    </div>        
    <div id="class_cnt1">
    <p>
    1111111<br />
    111111111<br />
    1111111<br />
    111111111<br />
    1111111<br />
    111111111<br />
    1111111<br />
    111111111<br />
    1111111<br />
    111111111<br />
    1111111<br />
    111111111<br />
    111111111<br />
    </p>
    </div>
</body>
</html>
简单的说明下:
复制内容到剪贴板
代码:
/*分类列表(模块一)*/
#class_cnt1{
    background: url(../images/class_cntbg.gif) left bottom repeat-x;
    border: solid #9EB1C0;
    border-width: 0 1px 1px 1px;
    height: 287px;
    margin: 0 auto;
    text-align: left;
    width: 506px;
    display: block;
                overflow:hidden; /*这里是要值得注意的*/
}
加了overflow:hidden后,的效果是什么呢?

大家也许知道,overflow:hidden的效果就是当容器的内容超过容器的规定尺寸,就是width和height的部分,隐藏起来,而我们这里的效果是定时改变高度.当高度改变了,而原来的内容肯定比改变后的高度大,所以就需要把包含的内容隐藏起来.

还有就是要使用到setInterval()方法和clearInterval()方法,这里就不详细说明了,大家看看注释或者去查JAVASCRIPT的相关文档,仔细研究下吧!

[ 本帖最后由 yaohaixiao 于 2006-10-13 23:15 编辑 ]
本帖最近评分记录
  • hutia 威望 +1 原创内容 2006-9-29 21:47
不错,收藏了!
3Q!!
www.5study.net www.websdeveloper.cn
这种滚动是匀速的吧?动感的效果好像有个加速度哦
------ 我的博客 ------
http://www.happyshow.org

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
无限级算法thread-2780498-1-6.html 2780498-1-1.html

TOP

雅虎哪个有刷新记录的.

TOP

鼓励一下

TOP

没看出是什么效果阿? 有什么啊?
- 回帖取义,发帖成仁... -

TOP

引用:
原帖由 dknt 于 2006-9-30 01:28 发表
没看出是什么效果阿? 有什么啊?
点左上的小三角

TOP

收下了!谢谢楼主啊!

TOP

看不出有什么效果啊~
希望能够帮到你……

TOP

js写的不错!能否把js部分详细加点注释?
另:css写的不兼容,js比css兼容...

TOP

再看看,我做了详细的注释了!!!

对JS和CSS都优化了下,CSS的兼容性也更好了。JS看上去条理也更清晰.

[ 本帖最后由 yaohaixiao 于 2006-10-13 23:13 编辑 ]

TOP

yahoo有現成的    yui

TOP

不错,写的代码很标准,小强!!!

不错,写的代码很标准,小强!!!

TOP

不错,写的好详细!

TOP

问下楼主,那几个调用的HTML文件我因为是用别的文件生成的新闻,所以是GB2312的编码,但是这里调用后就是乱码了,怎么改?

我不懂JS

TOP

不错
多加其他关闭什么的功能就更好了
努力学习中。。。

TOP

把拖動加上去就更好

TOP

有点太不显眼了
不说根本不知道

TOP

如果是这样的话好像就失效了,这要怎样改呢?



 提示:您可以先修改部分代码再运行
好像有两个DIV的话就没失效了,永远都只是有一个DIV在动而已。
我的MSN SPACE
spaces.msn.com/danielchen59/
团队的MSN SPACE
spaces.msn.com/51wdgroup/

TOP

不错,要是能拖动就好了
熏精求瑞,沉冥多问

TOP

不错!收藏了。非常感谢!

TOP

这是加速的
<!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-Type" content="text/html; charset=gb2312" />
<title>隐藏/显示层</title>
<style type="text/css">
<!--
body{
       background: #FFF;
       color: #000;
       font: normal 12px 宋体,arial,sans-serif;
       margin: 0;
       padding: 0;
       text-align: left;
}

div,form,ul,ol,li,span,p {
       border: 0;
       margin: 0;
       padding: 0;
}

/*清除float*/
.clear{
       clear: both;
       font-size: 1px;
       visibility: hidden;
}

/*分类标题*/
.class_title{
       margin: 0 auto;
       width: 504px;
       height: 17px;
       border: 1px solid #9EB1C0;
       padding: 1px;
       background:url(http://www.east-dragon.cn/files/sw/images/title_bg.gif);
}

.class_title h2{
       margin: 0;
       padding: 2px 0 2px 18px;
       height: 12px;
       color: #16387C;
       font: bold 13px 宋体,arial,sans-serif;
       cursor:pointer;
       letter-spacing: 2px;
       text-align: left;
}

#tabclass1{
background:url(http://www.east-dragon.cn/files/sw/images/tab_drop1.gif) 6px center no-repeat;
}

/*分类列表(模块一)*/
#class_cnt1{
       background: url(http://www.east-dragon.cn/files/sw/images/class_cntbg.gif) left bottom repeat-x;
       border: solid #9EB1C0;
       border-width: 0 1px 1px 1px;
       height: 287px;
       margin: 0 auto;
       text-align: left;
       width: 506px;
       display: block;
  overflow:hidden;
}

#class_cnt1 p{
   margin:0;
   padding:3px;
   line-height:150%;
}
-->
</style>

<script language="javascript" type="text/javascript">
<!--
//=======================================================
//函数名称:getObject(objectId)
//          参数objectId:控件的ID值
//函数功能:获得控件的ID值
//返 回 值:ture(获得ID值) false(获取ID失败)
//=======================================================
function getObject(objectId) {
    if(document.getElementById && document.getElementById(objectId)) {
       // W3C DOM
       return document.getElementById(objectId);
    } else if (document.all && document.all(objectId)) {
       // MSIE 4 DOM
       return document.all(objectId);
    } else if (document.layers && document.layers[objectId]) {
       // NN 4 DOM.. note: this won't find nested layers
       return document.layers[objectId];
    } else {
       return false;
    }
}

// 显示列表框
function displayList(){   
             var h = getObject('class_cnt1').offsetHeight;  // 内容容器class_cnt1的初始高度(这时高度为:0)
             var max_h = 287; // 容器的最大高度
                      var a=50;
             var anim = function(){                     
                                h += a; // 每次递增50像素
                                                                    a= a-5;
                                //如果增加的高度开始超过容的最大高度
                                                                   if (a <5)
{a=5;}
                                if(h >= max_h){
                          getObject('class_cnt1').style.height = "287px"; // 工期高度为287px(因为我们只希望容器这么高)
                          getObject('tabclass1').style.backgroundImage="url(http://www.east-dragon.cn/files/sw/images/tab_drop1.gif)"; // 让图片标签改变背景             
                          if(tt){window.clearInterval(tt);} // 如果高度在每2毫秒递减,则清楚改行为(如果不清楚,程序将一直自动运行高度每2毫秒递减)
                                }
                                else{ // 如果增加中的容器高度没有超过287px
                getObject('class_cnt1').style.display="block"; // 让容器可见(这样我们才能够看到容器在增高的效果)
                getObject('class_cnt1').style.height = h + "px"; // 容器高度不断的以50px递增
                                }
                  }
                        
                       var tt = window.setInterval(anim,2);  // 设置每2毫秒循环一次(每2毫秒,运行一次anim[容器的高度递减50px])       
}

// 隐藏列表框
function hiddenList(){
             var b=50;
       var h = getObject('class_cnt1').offsetHeight; // 内容容器class_cnt1的初始高度(这时高度为:287px)
                 var anim = function(){
                          h -= b; // 每次递减50像素
                          b=b-5;
if (b<5)
{b=5;}
                          if(h <= 5){
                    getObject('class_cnt1').style.display="none"; // 内容容器不可见(当容器高度小于5px)
                         getObject('tabclass1').style.backgroundImage="url(http://www.east-dragon.cn/files/sw/images/tab_drop2.gif)";
                         if(tt){window.clearInterval(tt);}
                     }
                     else{
                         getObject('class_cnt1').style.height = h + "px"; // // 容器高度不断的以50px递减
                     }
                 }
                   
                 var tt = window.setInterval(anim,2); // 设置每2毫秒循环一次(每2毫秒,运行一次anim[容器的高度递减50px])
}

//=======================================================
//函数名称:showClassList()
//函数功能:隐藏-显示级分类列表框(class_cnt1)
//返 回 值:无
//=======================================================
function showClassList(){
   // 如果内容容器为不可见的display:none
   if(getObject('class_cnt1').style.display == "none"){
       displayList(); // 显示内容框
   }
   else{ // 如果内容容器为可见的display:block
            hiddenList(); // 隐藏内容框
        }
}
-->
</script>
</head>
<body>
       <div class="class_title">
               <h2 id="tabclass1" onclick="showClassList()" title="隐藏/显示信息">分类信息</h2>              
       </div>              
       <div id="class_cnt1">
       <p>
       1111111<br />
       111111111<br />
       1111111<br />
       111111111<br />
       1111111<br />
       111111111<br />
       1111111<br />
       111111111<br />
       1111111<br />
       111111111<br />
       1111111<br />
       111111111<br />
       111111111<br />
       </p>
       </div>
</body>
</html>

TOP