当前位置: 首页 > 面试题库 >

使用新的CSS文件覆盖当前网站的CSS

王念
2023-03-14
问题内容

我的网站目前已经被自动纳入该网站的一部分,3个CSS文件,我也 没有 访问源即 index.html的 网站 ,但我有
访问我的网站的CSS文件。

我正在尝试使用自己的样式来覆盖我的网站CSS文件,并创建一个新的CSS文件,其中包含我要在网站上覆盖的所有样式。

我尝试使用,@import url(css4.css)并将其放在最后一个CSS文件的顶部,但这不会覆盖最后一个CSS文件的样式。

我该如何实现?

<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">   
<!-- How to add this below just by using CSS? -->
<link rel="stylesheet" type="text/css" href="newCSS4.css">

问题答案:

除了使用!important大多数建议您使用的答案外,这还取决于
CSS的特定性

这个概念

特异性是浏览器决定哪些属性值与元素最相关并得到应用的方式。特异性仅基于由不同种类的选择器组成的匹配规则。

如何计算?

特异性是根据每种选择器类型计数的串联计算得出的。它是应用于相应匹配表达式的权重。

如果特异性相等,则将CSS中找到的最新声明应用于该元素。

一些经验法则

  • 切勿 在站点范围的CSS上使用!important。
  • 在覆盖整个站点范围或外部CSS的特定于页面的CSS上使用!important(例如,来自ExtJs或YUI)。
  • *在编写插件/混搭程序时, *切勿 使用!important。
  • *甚至在考虑!important之前, *始终 寻找使用特异性的方法

可以由4列优先级表示:

内联 = 1 | 0 | 0 | 0

id = 0 | 1 | 0 | 0

类别 = 0 | 0 | 1 | 0

元素 = 0 | 0 | 0 | 1

从左到右,最高编号优先。

这是一个带有CSS特定性完整示例的代码段

/*demo purposes*/

body {margin: 0;padding: 0}

div,article {min-height: 200px;height: 100%;width: 100%}



/*CSS Specificity */



/* SPECIFICITY: 0/1/0/0 */

#id {

  background-color: green

}



/* SPECIFICITY: 0/0/1/0 */

.class {

  background-color: yellow

}



/* SPECIFICITY: 0/0/0/1 */

section {

  background-color: blue

}



/* ------------ override inline styles ----------- */



/*to override inline styles we  now use !important */



/* SPECIFICITY  0/0/1/0 */



.inline {

  background-color: purple !IMPORTANT /*going to be purple - final result */

}


<article>

  <div id="id">

    <div class="class">

      <section>

        <div class="inline" style="background-color:red">

          <!--SPECIFICITY 1/0/0/0 - overridden by "!important -->

        </div>

      </section>

    </div>

  </div>

</article>

现在是逐步的完整代码

ID: 绿色

/*demo purposes*/

body {margin: 0;padding: 0}

div,article {min-height: 200px;height: 100%;width: 100%}



/*CSS Specificity */



/* SPECIFICITY 0/1/0/0 */

#id {

  background-color: green

}




<article>

  <div id="id">

    <div class="class">

      <section>

        <div>

        </div>

      </section>

    </div>

  </div>

</article>

类别: 黄色

/*demo purposes*/

body {margin: 0;padding: 0}

div,article {min-height: 200px;height: 100%;width: 100%}



/*CSS Specificity */



/* SPECIFICITY  0/0/1/0 */

.class {

  background-color: yellow

}


<article>

  <div id="id">

    <div class="class">

      <section>

        <div>

        </div>

      </section>

    </div>

  </div>

</article>

元素: 蓝色

/*demo purposes*/

body {margin: 0;padding: 0}

div,article {min-height: 200px;height: 100%;width: 100%}



/*CSS Specificity */



/* SPECIFICITY  0/0/0/1 */

section {

  background-color: blue

}


<article>

  <div id="id">

    <div class="class">

      <section>

        <div>

        </div>

      </section>

    </div>

  </div>

</article>

内联样式: 红色

/*demo purposes*/

body {margin: 0;padding: 0}

div,article {min-height: 200px;height: 100%;width: 100%}






<article>

  <div id="id">

    <div class="class">

      <section>

        <div style="background-color:red">

        <!--SPECIFICITY 1/0/0/0 -->

        </div>

      </section>

    </div>

  </div>

</article>

覆写内联样式: 紫色

/*demo purposes*/

body {margin: 0;padding: 0}

div,article {min-height: 200px;height: 100%;width: 100%}

/*CSS Specificity */



/* SPECIFICITY  1/0/0/1 */



section > div {

  background-color: purple !IMPORTANT

}






<article>

  <div id="id">

    <div class="class">

      <section>

        <div style="background-color:red">

        <!--SPECIFICITY 1/0/0/0 -->

        </div>

      </section>

    </div>

  </div>

</article>


 类似资料:
  • 问题内容: with open(“games.txt”, “w”) as text_file: print(driver.current_url) text_file.write(driver.current_url + “\n”) 我现在正在使用此代码,但是当它写入文件时,它将覆盖旧内容。我如何能简单地添加它而不删除已经存在的内容。 问题答案: 而不是使用(附加)功能模式:

  • 问题内容: 使用node.js覆盖大型(2MB +)文本文件中的行的最佳方法是什么? 我目前的方法涉及 将整个文件复制到缓冲区中。 通过换行符()将缓冲区拆分为一个数组。 通过使用缓冲区索引覆盖行。 与连接后,用缓冲区覆盖文件。 问题答案: 首先,您需要搜索行的起点和终点。接下来,您需要使用一个函数来替换该行。我使用我的一个库来解决第一部分的问题:Node- BufferedReader 。

  • 问题内容: 覆盖文件中特定行的最佳方法是什么?我基本上想在文件中搜索字符串’@parsethis’,然后用其他东西覆盖该行的其余部分。 问题答案: 如果文件不是太大,最好的方法可能是使用file()将文件读入行数组,在行数组中搜索您的字符串并编辑该行,然后将implode()返回一起将其fwrite()返回文件。

  • 我正在尝试使用JSCH将两个文件上载到带有SFTP的服务器上。如果目录是空的,上传文件很好,但我想一遍又一遍地上传同一个文件(只是在里面改变一个id),但我不知道如何做到这一点。JSch中有一些名为OVERWRITE的静态参数,但我无法找到如何使用它。 这是我当前的代码:

  • 问题内容: (这是在Chrome扩展程序中使用内容脚本) 我需要覆盖网页标记为的某些CSS属性。这可能吗? 例如,如果我想摆脱标记为重要的边框: 问题答案: 干得好: 元素对象的方法使您可以传递表示优先级的第三个参数。因此,您要用自己的!important值覆盖!important值。据我所知,不可能用jQuery设置!important优先级,因此您唯一的选择是内置方法。

  • 问题内容: 现在,我正在尝试用我的LESS代码在CSS3中执行此操作: 但是,LESS编译时将输出以下内容: 有没有办法告诉LESS不要以这种方式编译它并正常输出它? 问题答案: 使用[转义字符串(也称为转义值): 另外,如果您需要将Less Math与转义字符串混合使用: 编译为: 默认情况下,这作为“少”将值(转义的字符串和数学结果)连接在一起时起作用。