如何覆盖元素样式使其无法更改?

How to overwrite element style so it cannot be changed?

我正在写一个 Chrome 扩展,我需要使所有元素的位置相对。我尝试将 position: relative !important; 添加到 body 的样式中。然而,当我滚动页面时,页面内的一些 JS 将 body 子元素的样式更改为 position: fixed 并且它变得固定。我不希望这种情况发生,那么,有什么方法可以让所有元素一劳永逸吗?

我已经在此页面上测试了此行为:http://sandesh.epapr.in/709519/Ahmedabad/02-02-2016#dual/4/3,我希望页眉和页脚不固定,但没有成功。

你不能,有人总是可以更具体地或 JavaScript 更改样式。

您可以取消绑定附加到文档滚动的所有 jQuery。这将阻止站点的 javascript 更改 CSS 开头。

$(document).unbind('scroll');

您可以使用 chrome 检查 window 查看您的页面上正在执行哪些 javascript 文件以及您的样式发生了什么变化,一旦您确定了正在执行的功能然后您可以编辑函数以禁用此更改。

您有以下顺序,同时考虑 样式 sheets / 样式规则

  1. 声明标记为 !important
  2. 作者风格的声明sheet(网站提供)

    specificity = Concatenating a & b & c with the following order and weights:
    a = 100 * ( number of ID attributes in the selector )
    b = 10 * ( number of Class attributes (or Pseudo-classes) in the selector )
    c = 1 * ( number of tag names (or Pseudo-elements) in the selector )

    • 更高的特异性(第一)

      • 主样式中的规则sheet
        如果特异性相同:
        • 风格sheet/文档
        • 下的存在
        • 样式sheet/文档
        • 上位
      • 导入样式中的规则sheets
        如果特异性相同:
        • 风格sheet/文档
        • 下的存在
        • 样式sheet/文档
        • 上位
    • 特异性较低(下一个)

      • 主样式中的规则sheet
        如果特异性相同:
        • 风格sheet/文档
        • 下的存在
        • 样式sheet/文档
        • 上位
      • 导入样式中的规则sheets
        如果特异性相同:
        • 风格sheet/文档
        • 下的存在
        • 样式sheet/文档
        • 上位
  3. user style sheet 中的声明 [喜欢第 2 部分]

  4. User-Agent 样式的声明sheet(由浏览器提供)
    [喜欢第 2 部分]