【问题标题】:Angular: Page overflows when height of both html and body is set to 100%Angular:当 html 和 body 的高度都设置为 100% 时页面溢出
【发布时间】:2021-10-07 13:19:51
【问题描述】:

我正在使用 Angular 开发 SPA,并且我在 CSS 中指定了 html, body { height: 100% }body { margin: 0 }。在这种情况下,如果我在组件中使用带有默认边距的 HTML 标签,例如<h1> 标签,页面就会溢出。

这似乎是由于body的第一个元素的边距被body的边距替换,这与普通HTML中的行为不同。在纯 HTML 中,第一个元素的上边距被忽略,并且正文永远没有边距。然而,这种行为在 Angular(或者准确地说是 React)中并非如此。

这是什么原因?
另外,有什么方法可以在 Angular 中实现正常的 HTML 行为?

Stack Blitz 中的示例如下:

提前致谢。

【问题讨论】:

  • 看起来是您的 HTML 版本丢失了<!DOCTYPE html>,因此呈现方式有所不同。并且溢出是由于H1有一个上边距,导致body和html之间有一个边距。
  • 正如你所指出的,纯 HTML 版本缺少<!DOCUTYPE html>,所以我添加了它。不再忽略body第一个元素的上边距,但溢出还是有区别的。有什么方法可以防止 Angular 溢出? - 修改后的纯 HTML 示例:stackblitz.com/edit/web-platform-x6cd4l?file=index.html
  • 在上面的纯 HTML 示例中,没有加载 CSS。在 CSS 工作的情况下,它的行为与使用 Angular 或 React 渲染时的行为相同。非常感谢您的帮助。
  • 我用 StackBlitz 做不到,所以我用 CodePen 做。 - 重新修改纯 HTML 示例:codepen.io/yokotani/pen/abwxeNj
  • 正如我在原始评论中提到的那样。 H1 有边距。只需将margin-top: 0 设置为h1,问题就不再存在了。

标签: javascript html css angular


【解决方案1】:

看起来您的 HTML 版本缺少 <!DOCTYPE html>,因此呈现方式有所不同。而溢出是由于H1有上边距,导致body和html之间有边距。

添加文档类型后,您可以将margin-top: 0 设置为h1,问题应该不再存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 2020-08-09
    • 2021-07-13
    • 2012-08-14
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多