我已经被委托为网站编写着陆页。
问题在于:原始开发人员在主css文件中添加了“通用选择器*重置”:
* { //Universal Selector '*' Reset
margin: 0;
padding: 0;
}
然后围绕它构建网站样式。
不幸的是,这需要很多代码来解决表,列表,标题等问题。
问题是:有没有办法绕过单个对象(表,列表等)的选择器,甚至是一般的页面(除了不包括css文件)?
编辑:有些人对我的问题感到困惑。绕过我的意思是忽略星号选择器而不是覆盖它...还要注意我试图最小化额外的代码。
编辑2:这是jsFiddle,说明了我的问题 注意:“padding:initial;”似乎没有工作。
答案 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)进行比较(取决于您的浏览器,结果可能会有所不同):
无样式:
复位:
这是因为该属性的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。