2011-04-13 94 views
6

可能重複:
What does a star-preceded property mean in CSS?*顯示在CSS中的含義是什麼?

我碰到這個瀏覽時用於顯示跨瀏覽器支持傳來:inline-block的...

selector { 
    display: -moz-inline-box; 
    display: inline-block; 
    zoom: 1; 
    *display: inline; 
} 

是什麼*顯示器嗎?

鏈接自: http://www.aarongloege.com/blog/web-development/css/cross-browser-inline-block/

+0

我懷疑-moz-inline-box是必要的,Gecko現在支持inline-block。 zoom:1也可能不必要,如display:inline-block;完成相同的任務。對於只有普通*無顯示的IE6:內聯;最後會優先考慮,對於其他IE,你可以在之後的另一個規則中使用*,但它的工作原理是一樣的。 (基本上,這篇博文總是有愚蠢的代碼,而且現在只比這更愚蠢。) – reisio 2011-04-13 19:48:25

回答

7
*property: value; 

這是一個黑客,所以我不建議你使用它。像這樣表現的樣式只能在IE 7及以下版本中解釋,所以其他瀏覽器完全忽略了這些樣式。

它是非標準(或有效)的CSS,但它有時用於擊敗IE提交。

0

*在前面爲IE瀏覽器,專門的版本和7和下方的黑客攻擊。您也可能會看到_display,其中前面的_對於IE版本6及以下版本是一種破解。那些CSS規則只適用於那些版本,並且被其他瀏覽器忽略。

0

補充到其他問題:

CSS規範說,不承認任何財產應被丟棄。這是由於未來的兼容性。

因此,對於大多數瀏覽器而言,*property不是有效的屬性,它們只是略過。

IE7,由於我不知道的原因,認爲*propertyproperty,他們處理它,而其他人不會。

6

其他都表示,這是IE7及以下

這一個黑客,你給出的例子是一個特定的黑客一點都不像你收到我不建議刪除評論它還沒有..你可以移動它或刪除它後,你讀了這個,不需要它;)

btw我同意-moz-inline-box可能不再需要,它是爲舊版本的Firefox

selector { 
    display: -moz-inline-box; 
    display: inline-block; 
    zoom: 1; 
    *display: inline; 
} 

是一個具體的h ack讓IE6/7顯示塊級元素作爲行內塊。雖然自V5.5 IE一直支持inline-block它並沒有在這種情況下,你需要做的就是給元素「佈局」是什麼(zoom: 1;)這樣做本身對塊級元素

所以,之後餵它display: inline

現在display:inline-block也給出了一個元素的佈局,所以如果你刪除display-inline規則到一個單獨的規則集(無論是在條件或砍死規則),您不再需要使用zoom: 1;

我首選的破解這個(爲演示)&因爲直列塊這樣破滅有用,&,因爲它是短是

selector { 
    display: inline-block; 
} 


selector { 
    display: inline !ie7; 
} 

!ie7,在顯示屬性之前做的一樣*,我t將該規則提供給IE7及其以下版本 - 您也可以在第二條規則中使用*版本,但是!ie7明確表示,無論如何,這是一個黑客攻擊,以及它的用途。

如果您對IE7和下面你一個具體的,有條件的樣式表可以簡單地把第二條規則在它 - 沒有任何*ie7;)

selector { 
    display: inline; 
} 

,因爲IE瀏覽器仍然會讀取第一規則集和得到它的hasLayout的在那裏觸發trueinline-block,你不需要zoom

你提到的黑客報價很受歡迎,因爲它使所有的部件在一個規則集,但需要在這種情況下,作爲將無法​​設置hasLayout如果它在與另一display屬性相同的規則集