禁用用户代理样式表

时间:2012-10-26 10:14:04

标签: javascript css user-agent

是否可以在特定网页的Javascript或CSS中嵌入一些代码来禁用(不加载)浏览器附带的用户代理样式表?我知道我可以通过CSS覆盖它,但这会产生大量的覆盖规范,这似乎会在浏览页面时极大地影响CPU使用率。特别是,我做了类似*{margin:0; padding: 0}的事情,这对于渲染来说似乎很昂贵(特别是*选择器很昂贵)。因此,我不想大量覆盖用户代理样式表,而是在可能的情况下首先禁用它。这可能吗?如果是这样,怎么样?我特别使用谷歌浏览器,但如果可能的话,我会期望采用跨浏览器方式。

4 个答案:

答案 0 :(得分:3)

我想知道是否有一种方法可以直接在JavaScript中禁用用户代理样式表。似乎没有任何直接的方法,因为document.styleSheets不包含用户代理样式表。另一方面,Firefox Web Developer Extension在CSS菜单中有一个用于禁用浏览器默认样式表的选项。

无论如何,有一种加价方式,虽然我不确定你是否喜欢它的含义。首先,它不适用于IE 8及更早版本(它们只显示XML标记,而不是格式化内容)。但现代浏览器可以解决这个问题:

  1. 使用XHTML标记但不在xmlns标记中包含html属性。
  2. 将文档作为application / xml。
  3. 提供
  4. 对于应使用其HTML语义处理的元素(例如,input创建一个输入框),请在元素或封闭元素上使用xmlns="http://www.w3.org/1999/xhtml"属性。
  5. Simple demo

    这意味着在xmlns属性的影响之外,所有标记都被视为构成纯粹的,无意义的,无格式的(所有元素都是内联的)元素。但是,它们可以在样式表中设置样式。

    但是这样,你不能同时保留HTML蛋糕并吃它。也就是说,如果没有将用户代理样式表应用于它们,则无法获得HTML功能(对于表单字段,链接等)。

答案 1 :(得分:2)

使用“重置样式表” - 这个很好:http://html5boilerplate.com/

答案 2 :(得分:0)

这是不可能的。只需创建一个由大多数人调用的css文件" reset.css'其中包括用于覆盖用户代理的样式的所有css代码

答案 3 :(得分:0)

您可以使用reset css(http://www.cssreset.com/)之类的东西来重置所有浏览器样式..

或者,我更喜欢,使用normalize css(http://necolas.github.com/normalize.css/)规范化css而不重置ul,li等列表样式的所有样式。(reset.css would那样做)