有啥方法可以隐藏 div 的内容而不是 div 本身?

Posted

技术标签:

【中文标题】有啥方法可以隐藏 div 的内容而不是 div 本身?【英文标题】:Is there any way to hide a div's contents but not the div itself?有什么方法可以隐藏 div 的内容而不是 div 本身? 【发布时间】:2013-07-16 14:32:48 【问题描述】:

这就是我希望以最简化的形式做的事情。我想在页面上出现一个框,当你将鼠标悬停在它上面时,它的内容是可见的,否则它们是隐藏的。例如,假设我们有这个:

<style type="text/css">
#box 
    background-color:red;
    width:100px;
    height:100px;

</style>

<div id="box">
    <img src="smileyface.png" />
</div>

大多数时候,图像是隐藏的,看起来像一个红色框,但是当 div 悬停在图像上时,图像就会出现。有没有办法用 CSS 而不是 javascript 来做到这一点。我知道使用 javascript 我们可以删除元素并将其添加回来,但我只想显示并隐藏它。想法?

*必须符合 IE 8,因为我很喜欢惩罚。*

【问题讨论】:

为什么你的 CSS 在脚本块中? @j08691 是对的。你应该把你的 CSS 放在 @j08691 哎呀!我从不使用内联 CSS,所以我只是在那里很愚蠢。 【参考方案1】:

这很容易。只需在#box 悬停时更改图像的显示属性

#box > img 
  display: none;


#box:hover > img 
  display: block;

【讨论】:

很酷,但是让我们假设 div 中不仅仅是一个图像。如果有标题、段落和图像怎么办? 用visibility:hidden不是更合适吗?在这里,以便保留空间? 要么为它们每个设置一个规则,要么将它们放在一个包装器 div 中。 @StefanSurkamp 这也是可能的,但我没有在这种情况下展示这一点,因为他已经将#box 定义为具有固定大小。【参考方案2】:

你可以在任何你想要的标签上使用 :hover

#box 
    background-color:red;
    width:100px;
    height:100px;


#box:hover 
    background-image: src('smileyface.png');

【讨论】:

PS:IE 从版本 7 开始正确解释伪类(如 :hover)。

以上是关于有啥方法可以隐藏 div 的内容而不是 div 本身?的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏滚动间谍中的其他内容而不是滚动到特定位置

隐藏链接的方法

使用 C# 代码隐藏将 div 内容复制到另一个 div 内容

在div中加载fancybox内容?

“显示/隐藏”一个带有javascript而不是jquery的div,而不是display:none

在 div 中使用背景图片而不是经典的 <img> 来创建带有链接的图片有啥好处? [复制]