element隐藏或者显示

本文介绍了一种使用JavaScript实现网页元素渐显渐隐效果的方法。通过计算元素的实际高度并逐步调整其高度属性,可以平滑地展示或隐藏指定的HTML元素。此技巧适用于网页设计中需要动态控制元素可见性的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!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=utf-8" />
<style>
*{ font:20px/25px arial;}
</style>
<title>无标题文档</title>

</head>

<body>
<a href="#" onclick="ShowHide('testdiv')">点击逐渐展开或收缩</a>
<div id="testdiv" style="background:#ccc;">
  <p>a</p>
  <p>b</p>
  <p>sf</p>
  <p>fs</p>
  <p>fs</p>
  <p>fs</p>
  <p>fc</p>
</div>
<br/>
设计目的:将一个element隐藏或者显示<br/>
思路:<br/>
判断当前状态<br/>
隐藏状态(算出实际高度) -> 显示出来 -> 高度从0到实际高度<br/>
显示状态 -> 高度从实际高度到0 -> 隐藏


<script language="javascript" type="text/javascript">
//取得ID节点
function $(id){return(document.getElementById(id))}
//取得实际高度
function coculateOffset(ele){
    var node = $(ele);
    var orignalHeight = node.style.height;
    var orignalDisplay = node.style.display;
    node.style.height = "";
    node.style.display = "block";
    var h = node.offsetHeight;
    node.style.height = orignalHeight;
    node.style.display = orignalDisplay;
    return(h);
}
//显示元素
function showEle(ele){
    var h = coculateOffset(ele)
    var i = 1;
    var t = setInterval(function(){
        i += i;
        $(ele).style.height = i + "px";
  $(ele).style.display = ""; 
        if( i > h/2){
            $(ele).style.height = h + "px";
            clearInterval(t);
        }
    },35)
}
//隐藏元素
function hideEle(ele){
    var h = coculateOffset(ele);
    var t = setInterval(function(){
        if(h > 2){
            h = h/2;
        }else{
            h = 0;
            clearInterval(t);
        }
        $(ele).style.height = h + "px";
    },50)
}
//判断显隐
function ShowHide(ele){
    var currentHeight = $(ele).style.display == "none" ? 0 : $(ele).offsetHeight;
 $(ele).style.overflow = "hidden";
    if(currentHeight > 0){
        hideEle(ele);
    }else{
        showEle(ele);
    }
}
</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值