当前位置: 首页 > 面试题库 >

html5垂直间距问题

澹台正业
2023-03-14
问题内容

我正在尝试创建一个div之间的垂直间距为像素完美的布局。到目前为止,我已经排除了几乎所有大型网格系统(960.gs,蓝图),因为它们对于垂直间距根本没有解决方案。使用它们,设置div之间的垂直间距的唯一方法是使用body
{line-height}属性并使用该属性操纵div间距。我不会称其为解决方案,因为它破坏了模板,取决于字体系列,并且不允许您对不同的div使用不同的间距。

我发现唯一一个对垂直间距有适当支持的网格系统是Golden Grid,它不使用body {line-height},但它拥有自己的.clear {height:5px}用于垂直间距。

我的问题是,无论如何尝试,都无法在HTML5中使间距有效。我说的是垂直排列的图像,它们之间没有间隙。在XHTML过渡模式下,一切正常运行,图像完美对齐,但是在HTML5模式下,它们之间存在垂直间隙。间隔在Chrome中为2px,在Firefox中为2-3
px,每行之间交替出现。我认为在HTML5模式下使用每个网格系统都是如此。我不知道用纯HTML5编写此代码的最佳方法是什么,所以我只是尝试了网格系统。垂直间隙存在于960.gs中,Blueprint也存在。

我发现的一个解决方案可能是设置主体{line-height:0}并在每个印刷标签中定义line-
height。但是我不明白为什么在这种简单情况下需要如此糟糕的破解:垂直排列的图像。为什么浏览器在HTML5模式下与在XHTML过渡模式下不同?

在这里,我有相同的页面,没有任何更改,只是doctype。XHTML一个在每种浏览器中都是像素完美的,HTML5一个存在差距,并且因浏览器而异。

使HTML5示例像XHTML过渡示例一样工作的最佳方法是什么?

更新 :三十点回答了这个问题,如果我包括img {display:block; } HTML5版本的行为与XHTML
Transitional完全相同。谢谢三十点!

但是在关闭此线程之前,有人可以向我解释为什么:

  • 当未指定为display:块时,为什么所有浏览器在HTML5模式下的行为都不同,并且img元素之间的垂直间隙不同。在浏览器比较网站上查看上面的html5链接,它会因浏览器而异。它们之间的间隙为2到4像素。
  • 为什么XHTML Transitional不需要此技巧
  • 为什么XHTML Strict也产生垂直间隙
  • 使用img {display:block; }放在reset.css工作表中?

问题答案:

当未指定为display:block时,为什么所有浏览器在HTML5模式下的行为都不同,并且img元素之间的垂直间距不同?

首先,浏览器没有“ HTML5模式”。它们具有三种模式“ Quirks”,“ Limited Quirks”(又称“ Almost
Standards”)和“
Standards”模式。“限制的怪癖”和“标准”模式之间只有一个区别,它与为该坐席所在的线框建立线高和基线的方式有关<img>。在“有限的怪癖”模式下,如果行上没有呈现的文本内容,则不会建立基线,并且该行<img>位于行框的底部。

在“标准”模式下,即使该行框中没有实字符,该行框也始终包含基线下方g,p和y之类的字符后裔的空间。您看到的差距是基线之间的距离线框的底部是这些下降器的空间。

因此,补救措施是停止<img>被视为嵌入式元素{ display:block; }或覆盖的垂直对齐方式<img> { vertical- align:bottom; }。两者都会起作用。

为什么XHTML Transitional不需要此技巧

使用XHTML Transitional doctype将浏览器置于“有限的怪癖”模式。如果您使用了XHTML Strict或完整的HTML4 Strict
doctype,那么您将看到与HTML5 doctype相同的差距,因为每种方法都将浏览器置于“标准”模式。

为什么XHTML Strict也产生垂直间隙

往上看。

使用img {display:block; }放在reset.css工作表中?

当然,但是有时候您可能希望<img>被视为内联元素。在这种情况下,您需要在适当的位置添加CSS来实现。



 类似资料:
  • 当使用垂直对齐的BoxLayout时,如何阻止组件随着包含JFrame的增长而扩展,从而在底部留下额外的空间?Ive尝试了不同的布局,但很快就变得凌乱了。Ive还尝试在面板底部添加胶水,但是布局管理器将胶水处理成另一个空的JPanel,仍然导致所有组件增长。有什么建议吗?

  • 问题内容: 不幸的是,似乎没有一种好方法来管理在某些断点处从水平堆栈过渡到垂直堆栈的列之间的垂直间距。涉及表单时似乎确实有解决方案,但这不是这里的情况。我已经尝试过此解决方案,但是当有多个列排成一行时,它不起作用。 为了说明我的情况,这是HTML的结构: 在中等设备大小(md)及以上的情况下,我希望在列的两个“行”之间存在间距,但在3列的“第一行”之上不存在间距,而在列的“第二行”之下不存在间距3

  • 问题内容: 我有这样的代码: 这样,我得到的元素之间没有距离。我的意思是,“顶部”元素总是触及“底部”元素。我该如何更改?我想在元素之间进行一些分离吗? 我考虑在元素之间添加一些“中间” JPanel(具有一定大小)。但是我认为这不是获得理想效果的一种优雅方法。有人可以帮我吗? 问题答案: 将是这样做的一种方式。

  • 我对Vert.x非常陌生,就像几天前一样。我来自一个JAX式的,安逸的世界。我可能大错特错,请指正。 我的问题是:如何使顶点公开自己的REST接口(子路由器),以及如何将其子路由器注册到应用程序的主路由器中? 我尝试过类似的东西,但是当我请求/产品/所有:( } }

  • 我使用Twitter Bootstrap与SASS。我使用前者主要是为了它的网格,并努力避免将内联样式的属性添加到行中,作为控制垂直行间距的一种手段,因为这... . . . 基本上相当于。 不好的。你们中有没有人提出过一个处理垂直定位/间距的系统,它不包含任何类似于上述的内容?

  • 在Vaadin12/13中,我们可以通过调用来打开/关闭Veritcal/水平布局中的间距。但是,如果我们想要间距,但间距要小得多呢?我们如何(通过Java)将间距设置得小得多?(对于边距和填充,我发现了css--它是一个直接的或等,但对于间距,我就不知道了。此外,如果我们还运行(如果我们在编写任何代码之前为间距设置不同的值,那么它是否“危险”?)