-webkit-margin 在文本上添加不需要的边距

Posted

技术标签:

【中文标题】-webkit-margin 在文本上添加不需要的边距【英文标题】:-webkit-margin adds unwanted margin on texts 【发布时间】:2011-08-08 23:33:54 【问题描述】:

直到现在我才意识到这一点(不仅在 webkit 浏览器中)。在p 标签、h1 标签等中的所有文本上……文本上方和下方都有一个额外的空间。

在 chrome 中我发现了这个:

用户代理样式表

-webkit-margin-before: 1em;
-webkit-margin-after: 1em;
-webkit-margin-start: 0px;
-webkit-margin-end: 0px;

这会在某些地方造成对齐错误。是的,我正在使用重置样式表,并且没有添加填充或边距。几乎是一个基本的设置。为什么会这样,我该如何解决?

【问题讨论】:

您能否展示一个示例页面,其中-webkit-margin-after(或您列出的任何其他属性)正在发挥作用? 我不敢相信自从 iPhone 面世以来我从未遇到过这种情况。是的,这个属性即使在 ios15 十年后仍然存在。 【参考方案1】:

这些-webkit-margin(s) 被margin: 0; padding: 0; 覆盖。不用担心他们。

额外的空间?也许你设置了line-height:

【讨论】:

line-height 是默认值,margin 和 padding 是 0。正如我所说,使用重置样式表。还是一样。 你有<p><h1>等之间的吗? 没什么。我应该补充一点,填充无处不在,不仅在我的页面上。我知道这一点,我知道这就是它的行为方式。我只是想知道是否有可能摆脱它:) @bharal 它对我有用——添加 p margin:0; padding:0; 会覆盖 -webkit-margin 值。它们在 Chrome 的 javascript 控制台中仍然可见,但作为被覆盖的值。 不是一个很好的答案,非零边距/填充使 -webkit-margin's 完好无损,这在许多情况下是不需要的【参考方案2】:

只需删除标签之间的空格,例如

<p id="one"></p>
<p id="two"></p>

变成:

<p id="one"></p><p id="two"></p>

【讨论】:

我个人不会那样做。未来的一些开发人员可能会使用 html 美化器/格式化工具并重新添加空格或手动添加。 ":empty" 有问题的原理是一样的。【参考方案3】:

你也可以像这样直接修改这些属性:

-webkit-margin-before:0em;
-webkit-margin-after:0em;

在 Chrome/Safari 中为我工作。希望对您有所帮助!

【讨论】:

为什么投反对票?最初的问题是(部分)暗示这些字段的默认设置会导致问题,我的解决方案已解决(这在过去为我解决了类似的问题)。 同意。奇怪的是,这被否决了,因为这是唯一似乎正确的答案。 @JacobEvelyn 否决了,因为更改 margin 适用于所有浏览器,而更改 -webkit-... 仅适用于 webkit(我没有投反对票,但这就是我的想法) @JacobEvelyn:两者的值都是“0em”而不是“0”有什么原因吗? @Phil 我不记得了。 0 应该可以正常工作!【参考方案4】:

我的&lt;h3&gt; 标签也有同样的问题。我尝试设置margin:0;,但没有成功。

我发现我习惯性地使用 // 来注释我的 css 中的行。我从来没有注意到它,因为它以前没有引起任何问题。但是当我在声明&lt;h3&gt; 之前的行中使用// 时,会导致浏览器完全跳过声明。当我将// 换成/**/ 时,我能够调整保证金。

这个故事的寓意:始终使用正确的注释语法!

【讨论】:

【参考方案5】:

我遇到了同样的问题。突然,我的三个包含数据的表格单元格中的一个,其标题被向下移动了一点。我的问题只是通过添加这个来解决:

table td

    vertical-align: top;

似乎“更高”样式表中的其他元素告诉我的数据在单元格中居中,而不是仅仅停留在顶部。

我想这只是愚蠢,并不是真正的问题......但是下一个阅读这个主题的人可能会遇到和我一样愚蠢的错误:)

保重!

【讨论】:

【参考方案6】:

我遇到了同样的问题。在 Firefox 中正确显示,但在 Chrome 中不正确。

我仔细查看了http://meyerweb.com/eric/tools/css/reset/,发现我没有在样式表中声明body 标签的一般行高。将其设置为 1.2 并在两个浏览器中重新创建正确的布局。

【讨论】:

【参考方案7】:

我遇到了同样的问题。菜单链接之间的额外空间。上述解决方案均无效。对我有用的是负边距。 只需执行以下操作:

margin: 0 -2px;

新编辑:

这与-webkit-margins 无关。您的问题很可能发生在内联元素上。发生这种情况是因为您的内联元素之间有空格或换行符。要解决此问题,您有多种选择:

删除行内元素之间的所有空格和换行符 跳过元素结束标记 - 例如&lt;/li&gt;(HTML5 不关心) 负边距(如上所述 - IE6/7 的问题 - 谁在乎,升级;) 将font-size: 0; 设置为有问题的内联元素容器(android 有问题,如果字体大小使用ems 有问题) 放弃内联并使用浮点数(这样你就失去了 text-align:center)

Explained more specifically and examples by CHRIS COYIER

【讨论】:

我遇到了同样的问题“删除内联元素之间的所有空格和换行符”对我有用!谢谢!【参考方案8】:

对我来说,图片是:

* margin:0;padding:0;

Firefox (FF) 和 Google Chrome 无论如何都设置了 0.67em 的边距。 FF 显示了它的默认边距,但被划掉了,但还是应用了它。 GC 显示其默认边距 (-webkit-margin-before...) 未交叉。

我申请了

* margin:0;padding:0; -webkit-margin-before: 0; -webkit-margin-after: 0;

但无济于事,尽管 GC 现在显示其默认边距已越过。

我发现,我都可以申请

line-height: 0;

font-size: 0;

达到预期的效果。 这是有道理的,如果有人假设,边距是 .67em 类型。 如果有人能给出解释,为什么浏览器通过应用与行高相关的、不可移动的边距让我们的生活变得悲惨,我将不胜感激。

【讨论】:

【参考方案9】:

对我来说,在 Chrome 中是大约 40px padding-start 导致了这种情况。我做了以下工作:

ul 
    -webkit-padding-start: 0em;

【讨论】:

【参考方案10】:
    -webkit-margin-before: 0em;
    -webkit-padding-start: 0;
    -webkit-margin-after: 0em;

当我遇到这个确切的问题时,这为我解决了。

【讨论】:

仅供参考:只是更新 -webkit-margin-before: 0; 在 ios 9 中中断【参考方案11】:

如果user agent stylesheet 起作用,那是因为您的css 样式表中没有正确定义标签属性。

在到达您的页面稍后引用或“需要”的标签属性设置之前,可能是拼写错误、忘记的括号或分号破坏了您的样式表。

通过错误检查运行您的 CSS,例如 CSS LINT,并修复最终检测到的任何错误。

【讨论】:

【参考方案12】:

在您的 css 文件中添加以下内容。

* 
  -webkit-margin-before: 0em !important;
  -webkit-margin-after: 0em !important;

'*' 选择所有 css 元素并覆盖 webkit-margin。

【讨论】:

【参考方案13】:

现代属性

应改为使用以下属性。

margin-block-start: 0;
margin-block-end: 0;

根本不需要使用这些,但以下内容对于避免系列中最后一段之后的多余空间很有用。

p:last-child

   margin-block-end: 0;

我还发现,即使在 Chrome 中,在某些情况下,您也可以通过将边距设置为继承来触发“幽灵边距”。

https://developer.mozilla.org/en-US/docs/Web/CSS/margin-block-start

【讨论】:

以上是关于-webkit-margin 在文本上添加不需要的边距的主要内容,如果未能解决你的问题,请参考以下文章

在 UItextfield 的右视图上添加一个按钮,文本不应与按钮重叠

如何在所有列标题上启用文本换行?

如何在 shopify 产品页面上添加自定义文本框字段

图片可以设置多个热点但不可以添加文本热点到图片中

如何将占位符文本添加到 ToolStripTextBox?

如何快速在键盘上添加文本字段?