【问题标题】:Disable inline css style [duplicate]禁用内联css样式[重复]
【发布时间】:2016-01-11 12:25:22
【问题描述】:

当我使用 IE 开发工具检查 html 时,我发现按钮有一种内联样式:

我不想要这个输入元素的任何width 属性。如何用空的width 禁用或覆盖它?

【问题讨论】:

  • 为什么不直接编辑 HTML?
  • 因为我做不到。 html 由产品供应商提供。但我可以编辑一个 css 文件进行自定义

标签: html css


【解决方案1】:

如果您想覆盖内联样式,则需要在样式表中添加样式!important

例如

width: auto !important;

参考 - CSS Specificity

【讨论】:

  • 这是使用!important唯一理由
【解决方案2】:

您可以使用 JavaScript 禁用任何给定元素的内联样式:

  1. 在 HTML 文档中找到按钮
  2. 移除按钮的style属性
var button = document.getElementById('myButton');
button.removeAttribute('style');

【讨论】:

  • 如果我要跟踪标签中的样式属性,我至少会将其更改为数据样式,以便以后可以访问它。
  • 我同意,@Benjamin - 我认为将 style 属性替换为自定义 data-style 属性(或类似属性)将是最好的解决方案。
【解决方案3】:

2022 年以上更新

如果现在其他人偶然发现了这一点,您可以做的不仅仅是使用 JavaScript 删除内联 HTML 样式标签。您可以保留标签以备日后退回。有两种方法可以做到!

一种方式:“禁用”HTML 属性

我听说在 HTML 标记上使用 disabled 会阻止浏览器处理它。但我很难让它在 Firefox 上运行。也许有人可以启发我!

<style class='style-class' disabled>
  body { color: blue; }
</style>

所以你只需要

$('.style-class').prop('disabled', true)

另一种方式:改变标签本身

您的浏览器只会解析样式标签中的样式。因此,如果您将标签更改为其他任何内容,您仍然可以在 DOM 中检查它,但它不会将其视为样式表。

(这里用jQuery来解释)

$(style.selector).replaceWith (function () {
  var attributes = $(this).prop("attributes");
  var $newEl = $('<nostyle>')
  $.each(attributes, function() {
    $newEl.attr(this.name, this.value);
  });  
  return $newEl.html($(this).html())
});

然后当你准备好返回样式时,使用这个:

$(notstyle.selector).replaceWith (function () {
  var attributes = $(this).prop("attributes");
  var $newEl = $('<style>')
  $.each(attributes, function() {
    $newEl.attr(this.name, this.value);
  });  
  return $newEl.html($(this).html())
});

【讨论】:

  • 这就像向建筑物发射导弹只是为了将里面的虫子压扁。只需在要在 CSS 中覆盖它的样式上使用 !important,不需要 JavaScript,当然也不需要使用 JavaScript 库的多个复杂函数。
  • @TylerH - 我确信有说服力的论据支持和反对,但我(通常)倾向于尽可能使用 CSS 而不是 JS(参见:最小功率原则 i>),在这种情况下,我肯定更喜欢像document.querySelector('#myButton').removeAttribute('style'); 这样的单行JS,而不是在我的CSS 中添加!important。我倾向于认为后者只是在开发过程中用作临时作弊模式
  • 这个问题是关于(我的搜索将我带到这里)删除内联样式。所以导弹可能有用:)
  • 我也在回答完整的 HTML 标签。那不也是内联样式吗?如果没有,我很乐意删除我的答案。
  • @Rounin 当然,如果您可以同时控制内容和演示文稿,那么这两种语言都不需要,所以这一点没有实际意义。除此之外,this 答案与“单行”相去甚远(我可能会指出,它本身比 !important 的“单个词”要长得多)。
猜你喜欢
  • 2019-03-24
  • 2014-02-07
  • 2013-03-27
  • 2022-07-21
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
相关资源
最近更新 更多