我想强制我的一个系统上的所有文本都以一种字体类型显示。但是,人们经常粘贴具有各种不同格式的内联样式的文本。
我可以在样式表中覆盖元素的内联样式吗?'!important' 还不够!
您可以使用 CSS 代码覆盖内联样式,该代码使用说明符将字体系列分配给所有相关元素!important
,例如
* { font-family: Calibri !important; }
仅在元素上设置字体是不够的body
,因为内部元素的字体由适用于它们的规则控制。仅当没有CSS 规则在内部元素上设置字体时,内部元素才从其父元素继承字体。
如果有人能够注入具有 的内联样式!important
,那么您无法在 CSS 中击败它。您需要使用 JavaScript 操作文档,删除或更改style
属性。
内联样式至高无上。
您可以执行此操作,但您需要使用 JavaScript 执行此操作。该代码必须基本上从粘贴的代码中删除所有内联样式语句。无论如何,这是一个好主意,你永远不知道人们会粘贴什么。
使用 jQuery:
$('.wrapper *').removeAttr('style');
...您的内容位于具有“包装器”类的 div 中
为此,您不需要 JavaScript。不管你说什么,!important
确实够了。
测试用例:http: //jsfiddle.net/jezen/Z4rnv/
说明: CSS 规则是根据特定级别选择的,该级别由布局引擎计算。!important
规则不是霸道的修饰语;它只是为特异性层次结构中的相应规则增加了额外的权重。
我对其他两个答案的非特定性质不满意。
* { 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>
使用 jQuery 删除属性函数应该可以解决问题。
removeAttr( 'style' );