【问题标题】:When I add new style with jQuery will it overwrite css?当我使用 jQuery 添加新样式时,它会覆盖 css 吗?
【发布时间】:2023-03-28 03:02:01
【问题描述】:

假设我有这个 jQuery 代码

$('head').append('<style>body, html { margin: 0!important; }.. even more ...</style>');

这会覆盖当前的 css(注意 !important) 我已经在我的浏览器中对其进行了测试,它按预期工作并覆盖了当前的 css。

我基本上想要的是添加一些没有 .css 文件的 css。

【问题讨论】:

  • .append() 与此完全无关。 javascript 或 jquery 也不是真的。如果在现有样式或样式表之后添加新样式或样式表,只要新样式具有更高的特异性,它就会覆盖之前设置的任何样式。
  • 是我遗漏了什么,还是您在问题本身中回答了问题?
  • @David 我不确定这是否是正常行为,是否会一直如此。
  • @KevinB 谢谢。所有我想知道的。令人遗憾的是,人们仅仅因为新手问题就随意放弃对 stackoverflow 的投票。我做了研究,找不到任何东西。对于新手来说,这并不是很明显的事情
  • 您似乎自己回答了这个问题。 “当我做 x 时,会发生 y。当我做 x 时会发生 y 吗?”你已经证明了这一点。

标签: javascript jquery css append


【解决方案1】:

由于您应用了直接样式标签,它将覆盖任何 css。 !important 总是覆盖任何类,通常被认为是不好的做法。为什么不添加一个类?

【讨论】:

  • @yoshi:保持样式静态并动态修改标记可能更容易。例如,您可以在特定 body#ids 下有两组样式定位元素,然后只需使用 JavaScript 更改 bodyid。 (这只是一个示例,您当然可以更明确地针对样式/标记更改更有效。)
  • @David 是的,我知道。但这是一种罕见的情况,我认为我必须这样做。
  • @yoshi 如果它绝对必须是动态的,我会按照你的想法去做,但我至少会将任何变量存储在一个数组中,以便以后能够更改它们
猜你喜欢
  • 2013-06-09
  • 2013-11-08
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 2015-09-18
相关资源
最近更新 更多