0

我想强制我的一个系统上的所有文本都以一种字体类型显示。但是,人们经常粘贴具有各种不同格式的内联样式的文本。

我可以在样式表中覆盖元素的内联样式吗?'!important' 还不够!

4

5 回答 5

4

您可以使用 CSS 代码覆盖内联样式,该代码使用说明符将字体系列分配给所有相关元素!important,例如

* { font-family: Calibri !important; }

仅在元素上设置字体是不够的body,因为内部元素的字体由适用于它们的规则控制。仅当没有CSS 规则在内部元素上设置字体时,内部元素才从其父元素继承字体。

如果有人能够注入具有 的内联样式!important,那么您无法在 CSS 中击败它。您需要使用 JavaScript 操作文档,删除或更改style属性。

于 2012-09-20T21:39:05.567 回答
2

内联样式至高无上。

您可以执行此操作,但您需要使用 JavaScript 执行此操作。该代码必须基本上从粘贴的代码中删除所有内联样式语句。无论如何,这是一个好主意,你永远不知道人们会粘贴什么。

使用 jQuery:

$('.wrapper *').removeAttr('style'); 

...您的内容位于具有“包装器”类的 div 中

于 2012-09-20T21:26:26.683 回答
2

为此,您不需要 JavaScript。不管你说什么,!important确实够了。

测试用例:http: //jsfiddle.net/jezen/Z4rnv/

说明: CSS 规则是根据特定级别选择的,该级别由布局引擎计算。!important规则不是霸道的修饰语;它只是为特异性层次结构中的相应规则增加了额外的权重。

于 2012-09-20T21:28:16.097 回答
0

我对其他两个答案的非特定性质不满意。

* { font-family: Calibri !important; }

有时并不总是有效,您需要更具体,例如在处理跨度时

span { font-family: Calibri !important; }

足够具体,因为尽管您正在增加价值的重要性。

字体样式的类型也很重要,如果初始字体样式只是使用字体,例如 font-family 和 font-size 已经更具体,所以使用

span { font:15px arial,sans-serif; !important; }

不会覆盖内联样式

<span style="font-family: Calibri">Hello World</span>

于 2013-10-02T15:39:31.163 回答
0

使用 jQuery 删除属性函数应该可以解决问题。

removeAttr( 'style' );
于 2012-09-20T21:28:39.763 回答