div显示隐藏

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">

</HEAD>

<BODY>
<span onclick="ShowHide('${item.roomid}')" style="cursor=hand">点击</span>
<div id="${item.roomid}" style="display:block">
<table width="200" border="1">
  <tr>
    <td>&nbsp;aaaaaaaaaa</td>
    <td>&nbsp;bbbb</td>
  </tr>
  <tr>
    <td>&nbsp;ccccccc</td>
    <td>&nbsp;dddddddd</td>
  </tr>
  <tr>
    <td>&nbsp;eeeeee</td>
    <td>&nbsp;fffffffff</td>
  </tr>
</table>
</div>
<table width="200" border="1">
  <tr>
    <td>&nbsp;aaaaaaaaaa</td>
    <td>&nbsp;bbbb</td>
  </tr>
  <tr>
    <td>&nbsp;ccccccc</td>
    <td>&nbsp;dddddddd</td>
  </tr>
  <tr>
    <td>&nbsp;eeeeee</td>
    <td>&nbsp;fffffffff</td>
  </tr>
</table>
<script>
  //取得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.display="none";
        }
        $(ele).style.height = h + "px";
    },60)
}
//判断显隐
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>

<think>好的,我现在需要帮助用户解决关于如何使用div实现显示隐藏的问题。首先,用户之前询问过Vue和Element UI中使用Switch切换表格和文本,现在的问题可能是在更基础的层面,即如何用普通的HTML/CSS或者结合JavaScript来控制div显示隐藏。 用户可能是刚接触前端开发,需要基础的实现方法。他们可能已经了解了一些Vue的知识,但这次的问题可能更偏向原生技术。我需要先回顾一下常见的显示隐藏方法,比如CSS的display属性、visibility属性,以及使用JavaScript或者jQuery来操作这些属性。 然后,考虑到用户之前使用过Vue,可能需要提到Vue的条件渲染指令,比如v-if和v-show,这和他们之前的Switch切换表格的例子有关联。不过用户这次的问题没有明确提到框架,所以需要同时覆盖原生方法和Vue的方法。 用户的需求可能包括简单的切换效果,比如点击按钮显示隐藏div。需要给出不同方法的示例代码,并解释它们的区别,比如display:none会完全从文档流中移除元素,而visibility:hidden只是隐藏元素但仍占位。此外,可能需要提到过渡动画,让显示隐藏更平滑。 另外,用户可能关心不同场景下的适用情况。比如,频繁切换时使用v-show可能更好,因为v-if会销毁和重建元素,影响性能。而如果元素一开始不需要显示,使用v-if可以减少初始加载时间。 还需要考虑代码的兼容性和响应式设计,比如在移动端是否正常工作。另外,可能需要提到使用class来管理样式,而不是直接操作style属性,这样更易于维护。 最后,要确保回答结构清晰,步骤明确,代码示例正确,并且给出不同方法的优缺点,帮助用户根据具体情况选择最合适的方案。</think>在Web开发中,通过控制`<div>`的显示隐藏是常见交互需求,以下是不同技术方案的具体实现: --- ### 一、基础CSS控制方案 #### 1. display属性方案 ```html <button onclick="toggleDisplay()">切换显示</button> <div id="myDiv">这是要显示/隐藏的内容</div> <script> function toggleDisplay() { const div = document.getElementById('myDiv') div.style.display = div.style.display === 'none' ? 'block' : 'none' } </script> ``` **特点**: - ✅ 完全从文档流移除(隐藏不占位) - ❌ 无法添加过渡动画 #### 2. visibility属性方案 ```css .hidden { visibility: hidden; opacity: 0; transition: all 0.3s ease; } ``` ```html <div id="myDiv" class="hidden">渐变隐藏的内容</div> ``` **特点**: - ✅ 保留元素占位空间 - ✅ 支持过渡动画 --- ### 二、jQuery实现方案 ```html <!-- 需先引入jQuery --> <button id="toggleBtn">滑动切换</button> <div id="content" style="background:#f0f0f0; padding:20px"> 这是可滑动切换的内容 </div> <script> $('#toggleBtn').click(function() { $('#content').slideToggle(300) // 300ms动画时长 }) </script> ``` **特点**: - ✅ 内置滑动动画效果 - ✅ 支持`toggle()`/`fadeToggle()`等多种效果 --- ### 三、Vue框架方案 #### 1. v-if 条件渲染 ```vue <template> <div> <button @click="show = !show">条件切换</button> <div v-if="show" class="content-box"> 需要销毁/重建的内容(适合低频切换) </div> </div> </template> <script> export default { data() { return { show: true } } } </script> ``` #### 2. v-show 显示控制 ```vue <template> <div> <button @click="show = !show">显示切换</button> <div v-show="show" class="content-box"> 仅修改CSS显示状态(适合高频切换) </div> </div> </template> ``` **对比选择**: | 特性 | v-if | v-show | |--------------------|---------------|--------------| | DOM操作 | 销毁/重建元素 | 仅切换CSS | | 初始渲染开销 | 高 | 低 | | 切换开销 | 高 | 低 | | 适用场景 | 低频切换 | 高频切换 | --- ### 四、高级技巧方案 #### 1. 带过渡动画 ```vue <template> <div> <button @click="show = !show">带动画切换</button> <transition name="fade"> <div v-if="show" class="animated-box"> 渐变显示的内容(支持CSS过渡) </div> </transition> </div> </template> <style> .fade-enter-active, .fade-leave-active { transition: opacity 0.5s; } .fade-enter, .fade-leave-to { opacity: 0; } </style> ``` #### 2. 响应式媒体查询 ```css /* 移动端自动隐藏 */ @media (max-width: 768px) { .responsive-div { display: none; } } ``` --- ### 五、最佳实践建议 1. **性能优化** - 高频切换时使用`v-show`或`opacity`方案 - 复杂内容建议使用`display:none` 2. **可访问性** ```html <div aria-hidden="true" v-show="show">屏幕阅读器可识别状态</div> ``` 3. **状态持久化** ```js // 配合localStorage保存状态 mounted() { this.show = localStorage.getItem('divState') === 'true' }, watch: { show(newVal) { localStorage.setItem('divState', newVal) } } ``` 根据具体场景选择合适方案,常规项目推荐优先使用Vue的`v-show`+CSS过渡的组合方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值