绕过CSS“通用选择器*重置”

时间:2014-06-09 19:38:36

标签: javascript jquery html css stylesheet

我已经被委托为网站编写着陆页。

问题在于:原始开发人员在主css文件中添加了“通用选择器*重置”:

* { //Universal Selector '*' Reset
    margin: 0;
    padding: 0;
}

然后围绕它构建网站样式。

不幸的是,这需要很多代码来解决表,列表,标题等问题。

问题是:有没有办法绕过单个对象(表,列表等)的选择器,甚至是一般的页面(除了不包括css文件)?

编辑:有些人对我的问题感到困惑。绕过我的意思是忽略星号选择器而不是覆盖它...还要注意我试图最小化额外的代码。

编辑2:这是jsFiddle,说明了我的问题 注意:“padding:initial;”似乎没有工作。

2 个答案:

答案 0 :(得分:12)

任何其他选择器都比*选择器更具体,因此会覆盖它的效果。
请参阅以下sample Jsfiddle

因此,例如,如果您想恢复< table>上的填充。你可以简单地做到

table {
    padding: initial;
}

如果您不喜欢这种想法,可以改为调整星号选择器以忽略您选择的元素:

*:not(table) {
    [...]
}

<强>附录
对于许多人来说可能会出乎意料,设置属性然后使用initial使用更具体的选择器并不一定会反转设置。
a reset to initial value (second image below)an unstyled example (first image below)进行比较(取决于您的浏览器,结果可能会有所不同):

无样式:
Unstyled sample

复位:
Reset sample

这是因为该属性的the initial value(在CSS规范中定义)可能与您浏览器的元素默认值不同。

答案 1 :(得分:0)

您无法取消(忽略)级联中已有的值;您必须修改引入该值的规则或使用其他值覆盖它。

* {
    margin: initial;
    padding: initial;
}

(Kudos King King)将这些属性恢复为初始值,但不会为这些元素重新应用浏览器的默认样式。 (这些风格早先被覆盖,而且#34;丢失了#34;。)但这是预料之中的。 :)

initial是&#34;第一个&#34;在应用任何规则之前,属性的值。 每个属性都有一个CSS规范中定义的初始值。

margin  = auto
padding = 0

浏览器&#34;默认&#34;样式非常不同 - 它们是在作者样式表之前应用的实际样式规则。他们写的是模仿CSS前浏览器如何显示某些元素。

ul { padding-left: 40px; list-style: disc; … }

这些是任意的 - 没有CSS&#34;默认&#34;列表的外观。因此,如果您希望每个元素默认值,则最好write your own