2012-04-12 134 views
1

有什麼辦法從CSS中分離HTML元素?我試圖讓一個和所有的孩子在文檔中變得「不可見」。如何屏蔽CSS中的HTML標記?

用戶能夠通知在文檔上調用的css,但我需要確保這不會丟失,我的意思是,不顯示:none,visibility:hidden,text-indent:-10000px ,left:-10000px,或其他任何這些技巧。

<div class="foo"> 
<a href="#foo">link</a> 
<img src="" /> 
<span>bar</span> 
</div> 

我可以使用data:text/html; base64 iframe,但是文本不會被格式化。

考慮免責聲明或標誌。用戶可以在我的小部件中包含他自己的CSS(通過通知CSS URL),並且我需要保留該免責聲明,即使用戶在他的CSS上爲該免責聲明元素或其任何子項指定了display:none或text-indent。

我不想使用任何風格,我只是想知道是否有任何屬性來屏蔽<標記/ >,例如「-moz-user-select:none;」

+0

你想做什麼與從CSS隔離html元素無關。當你給一個元素沒有造型並不意味着它是「不可見」的。 – 2012-04-12 15:19:37

+0

如果你的HTML元素沒有在你的CSS文檔中引用,它將不會被設置樣式。你的事情往後退。用你想要做的事情(你沒有說)與一個班級風格的元素。 – SMacFadyen 2012-04-12 15:31:21

+1

考慮免責聲明或標誌。正如我所說的,用戶可以在我的窗口小部件中包含他自己的CSS(通過通知CSS URL),並且我需要保留該免責聲明,即使用戶在他的CSS上爲該免責聲明元素指定了display:none或text-indent,或者它兒童。 我不想使用任何風格,我只是想知道是否有任何屬性來屏蔽,如「-moz-user-select:none;」 – Zanaca 2012-04-12 17:48:13

回答

1

由於以前的答案中指出,沒有屬性要做到這一點,而!important方法將不能工作,爲什麼呢?主要是因爲用戶可以使用自己的CSS,如果用戶在每一個樣式屬性的地方!important,它會覆蓋之前的!important標籤屬性,這裏有一個例子:

Site.css .copyright {顯示:塊重要;!/*其他風格這裏* /}

Uploaded css .copyright {display:none!important;/* ...... * /}

你可以克服它讀取上傳的樣式表,並刪除!important,在這種情況下,你可以使用!important以避免被覆蓋的樣式屬性的唯一途徑。

編輯: 但是你必須積極申報每一個屬性的用戶可能會使用到隱藏元素。

+1

'!important'方法*將會工作,因爲用戶不能訪問HTML,因此不能改變內聯'樣式'屬性。另外,由於inline'style'屬性與'!important'組合的特殊性,用戶不能覆蓋OP聲明的任何樣式。 – 0b10011 2012-04-12 22:48:09

0

不,沒有屬性來屏蔽標籤。

1

有沒有什麼,將工作時間的100%,但在這裏,這將在大多數情況下的解決方案:

<div class="foo" style="background:#fff !important;color:#000 !important;position:relative !important;display:block !important;visibility:visible !important;opacity:1 !important;float:none !important;left:0 !important;top:0 !important;"> 
<a href="#foo" style="background:#fff !important;color:#000 !important;position:relative !important;display:inline !important;visibility:visible !important;opacity:1 !important;float:none !important;left:0 !important;top:0 !important;">link</a> 
<img src="" style="background:#fff !important;color:#000 !important;position:relative !important;display:inline !important;visibility:visible !important;opacity:1 !important;float:none !important;left:0 !important;top:0 !important;" /> 
<span style="background:#fff !important;color:#000 !important;position:relative !important;display:inline !important;visibility:visible !important;opacity:1 !important;float:none !important;left:0 !important;top:0 !important;">bar</span> 
</div> 

基本上,你要爲你做各種風格指定!important要在style屬性中覆蓋。這是一個巨大的痛苦,如果手動完成,就像我之前說的,可以由一個流利的CSS工作。

注意:提供的樣式並不是一個詳盡的列表,只是我能想到的東西在我頭頂。

About CSS Specificity

+0

世界上的事情。我明白你要做什麼,爲什麼你不把它分配給一個班級,並將這個班級應用到這些元素上?另外,爲什麼你使用這麼多「重要」的東西,你已經把它作爲內聯代碼來做,它有更多的權重開始。我無法想象在內聯樣式中需要使用'!important' ... – MetalFrog 2012-04-12 18:02:08

+1

@MetalFrog因爲CSS選擇器的重量。該方法可以被覆蓋。內聯重要樣式是最重的,幾乎不可能覆蓋。 +1 bfrohs – 2012-04-12 18:03:33

+1

如果未按正確的順序提供,則可以覆蓋該類。內聯樣式不能被外部CSS覆蓋。 – 0b10011 2012-04-12 18:03:36