采用全新的CSS文件来覆盖现有网站的样式
P粉504920992
P粉504920992 2023-08-23 09:15:29
0
2
490
<p>我的网站目前有3个CSS文件,这些文件作为网站的一部分自动包含在内,我没有访问源代码的权限,即网站的index.html文件,但我可以访问我的网站的CSS文件。</p> <p>我试图使用自己的样式来覆盖我的网站的CSS文件,并创建一个新的CSS文件,其中包含我想要覆盖的所有样式。</p> <p>我尝试使用<code>@import url(css4.css)</code>,并将其放置在我的最后一个CSS文件的顶部,但这不会覆盖最后一个CSS文件的样式。</p> <p>我该如何实现这个目标?</p> <pre class="brush:php;toolbar:false;"><link rel="stylesheet" type="text/css" href="currentCSS1.css"> <link rel="stylesheet" type="text/css" href="currentCSS2.css"> <link rel="stylesheet" type="text/css" href="currentCSS3.css"> <!-- 如何仅使用CSS将下面的代码添加进来? --> <link rel="stylesheet" type="text/css" href="newCSS4.css"></pre> <p><br /></p>
P粉504920992
P粉504920992

全部回复(2)
P粉536532781

这里有一个有趣的解决方案,没有人提到过。

事实:

  1. 您无法修改页面的HTML - 没问题!

  2. 您可以修改CSS文件,但开发人员可能稍后再次修改它们并删除您所做的任何更改 - 不必担心。

  3. 您不能/不想使用Javascript和JQuery - 对我来说没问题。

  4. 您可以在服务器上添加更多文件 - 太棒了!

让我们进行一些.htacess黑客攻击,以求取乐和利益!

文档根目录下的.htaccess文件:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteRule ^(.*?)css3.css(.*?) hackedCSS3.php [L]

结果:每次请求时,hackedCSS3.php会被静默地提供,而不是css3.css

参考:http://httpd.apache.org/docs/2.2/howto/htaccess.html

hackedCSS3.php文件:

<?php

// 发送正确的头信息!
header("Content-type: text/css; charset: UTF-8");

// 输出css3.css文件
echo file_get_contents("css3.css");
?>

// 在这里添加您的CSS,使用任何有趣的!important或覆盖技巧(即:特定性)
div { ... }

额外奖励:

您可以将此解决方案扩展到此一个.php文件中的所有三个.css文件(但仅提供css3.css,并使用聪明的正则表达式删除/修改那些开发人员的CSS,而不触及任何文件。这些可能性令人心动。

补充:

.htaccess文件应位于网站的文档根目录中。这是www.example.com/index.html加载index.html的地方。

它可以位于您在.htaccess文件中指定的任何目录中。文档根目录也可以。更改

RewriteRule ^(.*?)css3.css(.*?) hackedCSS3.php [L]

RewriteRule ^(.*?)css3.css(.*?) /folders/you/want/hackedCSS3.php [L]

不需要。将该部分的CSS代码视为.css文件处理。您不需要<style>标签。

P粉022140576

除了使用大多数答案建议使用的!important之外,这是一个关于CSS特异性的问题

可以用4列优先级来表示:


这是一个完整示例的CSS特异性代码片段

/*演示目的*/
body {margin: 0;padding: 0}
div,article {min-height: 200px;height: 100%;width: 100%}

/*CSS特异性*/

/* 特异性:0/1/0/0 */
#id {
  background-color: green
}

/* 特异性:0/0/1/0 */
.class {
  background-color: yellow 
}

/* 特异性:0/0/0/1 */
section {
  background-color: blue 
}
  
/* ------------ 覆盖内联样式 ----------- */

/*要覆盖内联样式,我们现在使用!important*/

/* 特异性  0/0/1/0 */

.inline {
  background-color: purple !IMPORTANT /*将变为紫色-最终结果*/ 
}
<article>
  <div id="id">
    <div class="class">
      <section>
        <div class="inline" style="background-color:red">
          <!--特异性 1/0/0/0 - 被"!important"覆盖-->
        </div>
      </section>
    </div>
  </div>
</article>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!