首页  >  文章  >  web前端  >  如何使用 Greasemonkey/Tampermonkey 覆盖类 CSS?

如何使用 Greasemonkey/Tampermonkey 覆盖类 CSS?

Barbara Streisand
Barbara Streisand原创
2024-11-03 10:47:29999浏览

How to Overwrite a Class CSS with Greasemonkey/Tampermonkey?

如何使用 Greasemonkey/Tampermonkey 覆盖 Class CSS

在此场景中,目标是修改 body 元素的背景图像,特别是当它包含类“banner_url”时,使用 Greasemonkey 或 Tampermonkey 脚本。实现方法如下:

使用 CSS Cascade

您可以使用 CSS Cascade 来覆盖现有的 CSS 规则,而不是直接修改元素的样式。为此,请使用 GM_addStyle() 将样式表添加到页面。

// ==UserScript==
// @name     _Override banner_url styles
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant    GM_addStyle
// @run-at   document-start
// ==/UserScript==

GM_addStyle(`
    .banner_url {
        background: url('http://www.pxleyes.com/images/contests/kiwis/fullsize/sourceimage.jpg') no-repeat center center fixed !important;
        -webkit-background-size: cover !important;
        -moz-background-size: cover !important;
        -o-background-size: cover !important;
        background-size: cover !important;
    }
`);

在此脚本中,已添加“文档开始”元数据,以最大程度地减少在以下情况下可能发生的“闪烁”:初始渲染后样式会更改。

Greasemonkey 4 的替代方法

如果您使用的是 Greasemonkey 4,它已删除 GM_addStyle(),您可以使用以下垫片解决这个问题:

function GM_addStyle (cssStr) {
    var D = document;
    var newNode = D.createElement('style');
    newNode.textContent = cssStr;

    var targ = D.getElementsByTagName('head')[0] || D.body || D.documentElement;
    targ.appendChild(newNode);
}

使用 Stylus 进行纯 CSS 操作

除了 Greasemonkey 和 Tampermonkey 之外,您还可以考虑使用 Stylus 扩展,它提供了更好的选择用于纯 CSS 操作。这允许您直接修改 CSS 规则,使其成为此特定任务的更合适的选择。

以上是如何使用 Greasemonkey/Tampermonkey 覆盖类 CSS?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn