2012-12-13 215 views
2

藏匿孩子,我有以下HTML:隐藏内容,而在CSS

  • 我想删除使用CSS
  • 的“Hello World”的字符串:

    游戏
    <span class="parent"> 
        Hello world 
        <a href="#">Link 1</a> 
        <a href="#">Link 2</a> 
    </span> 
    

    规则

  • <a>标签仍应可见
  • 我不能碰的HTML代码
  • 没有JavaScript的

因此,解决办法是只喜欢围绕着“Hello World”的字符串<span>元素上设置display:none。问题是没有这样的<span>,我不能创建一个。

回答

8

display:none;总是隐藏孩子并覆盖他们的display属性。

您可以尝试使用visibility代替:

.parent { visibility: hidden;} 
.parent a { visibility: visible;} 
+0

这实际上似乎工作,即使它在我看来是完全意外的行为 –

+1

这是行不通的,因为a元素仍然在一个不显示的父元素内。可见性只保留隐藏元素的已用位置。 –

+1

@Sven Bieder:它确实有效:http://jsfiddle.net/AJKeM/ 虽然'Hello World'部分仍然占用一些空间 (在Chrome和Firefox中测试过)。但就像我说的那样,这是完全意外的行为 –

2

那是不可能的。这就像你手中拿着一面旗帜,你期望当你坐在一个封闭的盒子里时,有人仍然能看到你手中的旗帜。你能达到这个目标的唯一方法就是把孩子从父母身边带走,并把他们安置在其他地方。这将是dom-manipulation(javascript)。

编辑: 经过深入研究了可见性属性和通缉行为的技术定义后,我发现这个答案是不正确的。 jfrej已经给出了正确的答案。

+0

+1为封闭的箱子类比。为了让你的比喻能够承受被接受的答案,你可以考虑当可见性设置为隐藏时盒子是透明的而不是消失(而不是当显示器被设置为无时盒子完全消失)。 –