【问题标题】:Use jQuery to remove global properties使用 jQuery 删除全局属性
【发布时间】:2014-10-15 15:05:50
【问题描述】:

以下全局属性已添加到页面:

* {
   -webkit-box-sizing: border-box;
   -moz-box-sizing: border-box;
    box-sizing: border-box;
}

由于这些属性没有“无”选项,可以使用 jQuery 从页面或 div 中删除这些属性吗?

更新:

创建我自己的样式表:

* {
   -webkit-box-sizing: content-box;
   -moz-box-sizing: content-box;
    box-sizing: content-box;
} 

导入它似乎可以解决这个问题。

这似乎清除了这些样式所在的缓存位置? 我不知道这是否只是一个 IE8 问题。

【问题讨论】:

标签: jquery css styles


【解决方案1】:

您可以改用content-boxis the default,旧的 CSS 2.1 行为):

$("selector for the elements").css({
    "-webkit-box-sizing": "content-box",
    "-moz-box-sizing": "content-box",
    "box-sizing": "content-box"
});

您也可以考虑将这种样式用于border-box(来自CSS-Tricks):

html {
  box-sizing: border-box;
  /* ...prefixed versions as you see fit...*/
}
*, *:before, *:after {
  box-sizing: inherit;
  /* ...prefixed versions as you see fit...*/
}

如果你这样做,你可以只在一个容器元素上设置content-box,它里面的元素都会继承它。在您的页面上使用专为旧盒子模型设计的小部件时很重要。

【讨论】:

  • 谢谢,但无论我尝试什么,边框框都不会被覆盖。即使当我检查元素时,我可以看到它被设置为“content-box”,但在 IE8 上它仍然被解释为“border-box”
【解决方案2】:

最好在您自己的样式表中覆盖它。 *{ -webkit-box-sizing:content-box !important; // 对其他人一样明智 }

也可以尝试将'initial'作为值

【讨论】:

  • 请查看与您的答案类似的问题更新,尽管我不需要!important。为什么要这样做?
【解决方案3】:

试试

$("style").each(function(i, el) {  
  $(el).text(function(i, styles) {
    return styles.replace(/border-box/g, "")  
  })
});

$("style").each(function(i, el) {  
  $(el).text(function(i, styles) {
    return styles.replace(/border-box/g, "")  
  })
});

$("*").each(function() {
  console.log(this.style.boxSizing)
})
* {
   -webkit-box-sizing: border-box;
   -moz-box-sizing: border-box;
    box-sizing: border-box;
}


div {
  color:blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>content</div>

【讨论】:

  • 有没有办法忽略某些样式?例如,您的代码是否可以修改为忽略 .customBox :jsfiddle.net/ca59vask/13
  • 不确定“忽略某些样式”的确切含义?帖子中的部分应从 style 元素中删除 all border-box 文本。这不会影响link 元素;不过,正如@DavidThomas 指出的那样,可以解析styleSheets 对象——稍微多一些——以添加/删除属性。是否需要在 style 中删除 all border-box ? ,还是只有某些选择器?如果在jsfiddle.net/guest271314/ca59vask/14 处检查.customBox,应查看-webkit-box-sizing: ;box-sizing: ; 有删除线且没有值。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多