DIV display与visibility

本文详细解释了CSS中display和visibility属性的区别与用法。visibility用于控制元素的可见性,即使元素不可见仍保留其占位;display则改变元素的布局特性,设置为none时元素完全不占空间。

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

div的display和visibility上差别还是挺大的。
visibility属性:
确定元素显示还是隐藏;
visibility="visible|hidden",visible 显示,hidden 隐藏。
当visibility被设置为"hidden"的时候,元素虽然被隐藏了,但它仍然占据它原来所在的位置。
例如:

<script language="javascript">
function toggleVisibility(me)
{
if (me.style.visibility=="hidden")
{
    me.style.visibility="visible";
}
else
{   
    me.style.visibility="hidden";   
}
}
</script>
<div οnclick="toggleVisibility(this)" style="position:relative">
第一行文本将会触发"hidden"和"visible"属性,注意第二行的变化。
</div>
<div>因为visibility会保留元素的位置,所以第二行不会移动.</div>
看到第一行: 由于"hidden"和"visible"的影响会。因为visibility会保留元素的位置,所以第二行不会移动.
注意到,当元素被 隐藏之后,就不能再接收到其它事件了,所以在第一行代码成为"hidden"的时候,就不能再接收响应到事件了,因此也就无法通过鼠标点击第一段文本令其显示出来。

display属性:

就有一点不同了。visibility属性是 隐藏元素但保持元素的浮动位置,而display实际上是设置元素的浮动特征。
block:
当display被设置为block(块)时,容器中所有的元素将会被当作一个单独的块,就像<div>元素一样,它会在那个点被 放入到页面中。(实际上你可以设置<span>的display:block,使其可以像<div>一样工作。
inline:
将display设置为inline,将使其行为和元素inline一样---即使它是普通的块元素如<div>,它也将会被组合成像<span>那样的输出流。
none:
最后是display被设置:none,这时元素实际上就从页面中被移走,它下面所在的元素就会被自动跟上填充。
例如:

下面看我实例的代码和效果:
例:
<script language="javascript">
function toggleDisplay(me){
    if (me.style.display=="block"){
     me.style.display="inline";
     alert("文本现在是:'inline'.");
     }
    else {
     if (me.style.display=="inline"){
      me.style.display="none";
      alert("文本现在是:'none'. 3秒钟后自动重新显示。");
      window.setTimeout("blueText.style.display='block';",3000,"javascript");
      }
     else {
      me.style.display="block";
      alert("文本现在是:'block'.");
      }
     }
    }
</script>
<div>在<span id="blueText" οnclick="toggleDisplay(this)"
style="color:blue;position:relative;cursor:hand;">蓝色</span>文字上点击来查看效果.</div>
### HTML CSS `div` 的 `display` 属性用法 #### 使用场景与基础语法 在网页布局中,`display` 是一个重要的 CSS 属性,用于控制元素如何呈现以及它们与其他元素的关系。常见的取值包括: - **none**: 完全移除该元素及其内部的内容,不占用任何空间[^1]。 ```html <style> .hidden { display: none; } </style> <div class="hidden">这段文字不会被显示</div> ``` - **block**: 将元素作为块级元素处理,默认情况下独占一行并可以设置宽度高度等尺寸属性。 ```html <style> .box { display: block; width: 200px; height: 100px; background-color: lightblue; } </style> <div class="box"></div> ``` - **inline-block**: 类似于行内元素的行为但是允许设定宽高和其他块状特性。 ```html <style> .icon { display: inline-block; width: 50px; height: 50px; margin-right: 10px; background-color: tomato; } </style> <span><img src="#" alt="" class="icon"/></span>一段文本 ``` - **flex / grid**: 创建弹性盒模型容器或网格布局容器来管理子项排列方式。 ```css .container { display: flex; /* 或者 'grid' */ } ``` #### 常见问题解答 当涉及到 `display:none` 和其他形式的隐藏时,开发者可能会遇到如下情况: - 当使用 `display:none` 后再切换回可见状态(比如通过 JavaScript),浏览器通常会重新计算样式树从而可能导致性能开销较大;而如果只是改变透明度或者颜色则相对轻量得多[^3]。 - 对比之下,`visibility:hidden` 只是让对象不可见但仍保留其占据的空间位置,这使得它适合某些特殊需求下的应用,如动画效果中的临时遮挡。 - 需要注意的是,虽然两者都能达到视觉上的“消失”,但在实际开发过程中应根据具体业务逻辑选择合适的方式以确保最佳用户体验和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值