2012-04-12 137 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