CSS清除margin与padding无效求助:通配符选择器未生效
问题解决:通配符清除margin/padding不生效的原因及修复
问题根源
- 通配符选择器里的
margin: -0px是无效写法,浏览器会忽略这个错误值,等于没设置margin - 你给
#side aside a设置了padding: 20px,这个选择器的优先级比*高得多,所以会直接覆盖通配符的padding: 0,这是你觉得清除padding没生效的核心原因
修复方案
方案1:修正基础写法,针对性调整
先把通配符的错误写法改对,再根据需求调整a标签的样式:
/* 修正通配符写法,同时加上box-sizing避免padding影响元素宽度 */ * { margin: 0; padding: 0; box-sizing: border-box; } body { height: 2000px; } #side aside a { position: absolute; text-decoration: none; color: white; font-size: 16px; /* 如果你不需要a标签的内边距,就删掉这行,或者改成padding:0 */ /* padding: 20px; */ background: grey; width: 10%; height: 3%; } #fir { top: 30px; } #sec { top: 90px; } #thi { top: 150px; } #for { top: 210px; }
方案2:强制覆盖高优先级样式(不推荐,仅应急用)
如果必须保留a标签的其他样式,又要强制清除它的padding,可以给通配符的样式加!important,但这种写法会增加后期维护难度:
* { margin: 0 !important; padding: 0 !important; box-sizing: border-box; }
额外提示
刚学CSS一定要记住选择器优先级:ID选择器 > 类选择器 > 标签选择器 > 通配符选择器。高优先级的样式会覆盖低优先级的,所以不要指望通配符能直接覆盖所有自定义样式。
内容的提问来源于stack exchange,提问作者Programmer
相关产品推荐
相关产品推荐

