2014-08-30 66 views
2

考慮這個元素層次隱藏元素的文本,但不子文本

<div> 
    A 
    <div>B</div> 
</div> 

是否有可能隱藏文本A但不B與CSS?佈局應該也不會留下任何空的空間,其中A會是。

我的嘗試:

  • 設置visibilityhidden和重置它的孩子離開空白
  • 設置font-size0對父母和復位兒童在iOS
在FF但不是WebKit的作品

這是一個JSFiddle的問題

+0

不,這不是一個欺騙 – 2014-08-30 11:41:36

+0

檢查我的答案埃裏克 – 2014-08-30 11:47:43

回答

6

您可以嘗試使用visibility:collapse

body > span{ 
    visibility:collapse; 
} 
span > span { 
    visibility:visible; 
} 

Fiddle Demo

而且這一點也適用visibility:hidden;

body > span{ 
    visibility:hidden; 
} 
span > span { 
    visibility:visible; 
} 

Fiddle Demo

+0

這是否有任何瀏覽器限制?在Opera中,它仍然爲我留下了一個空白區域(確切地說是A的位置)。 – Harry 2014-08-30 11:20:57

+0

'visibility:collapse'聲明僅對錶格單元格有效,即使在那裏也不起作用。例如,請參閱http://css-tricks.com/almanac/properties/v/visibility/。引用該帖子:「基本上:不要使用這個。」 – Emil 2014-08-30 11:22:12

+0

如果你用'div'或其他東西來替換'span's,則不起作用。 – 2014-08-30 11:23:27

0

是的,我認爲你是在正確的軌道與知名度上stuff:這是唯一一個顯示不覆蓋子元素可見性的屬性(display: none不能在子元素上重寫)。

請注意visibility: collapse只適用於表格單元格(即使在那裏效果很差):visibility: hidden就是您所追求的。

爲了對抗可見性切換的非摺疊性,您可以試着擺弄絕對位置。

退房這個演示的基本思想:http://jsbin.com/hetis/2/edit

2

試試這個:

用你的同一個概念像這樣

CSS:

 #a { 
      visibility:hidden; 
      font-size:0px 
     } 
     #b { 
      visibility:visible; 
      font-size:10px 
     } 

HTML:

<span id="a">A 
    <span id="b">B</span> 
     </span> 

DEMO1

DEMO2

對於這個HTML:

<div id="a">A 
    <div id="b">B</div> 
     </div> 

DEMO UPDATED