小编典典

向左飘浮; 与显示:内联;与显示:内联块;与显示:表格单元格;

all

我的问题

  1. 专业网页设计师是否喜欢这些方法中的任何一种?

  2. 绘制网站时,Web 浏览器是否首选这些方法?

  3. 这一切都只是个人喜好吗?

  4. 我还缺少其他技术吗?

注意:以上问题与设计多列布局有关


向左飘浮;

http://jsfiddle.net/CDe6a/

浮动:左图

这是我在创建列布局时经常使用的方法,它似乎工作得很好。父母确实会自行崩溃,因此您只需要clear:both;事后记住即可。 我刚刚
发现的另一个问题是无法垂直对齐文本。

显示:内联;

这似乎纠正了折叠父项的问题,但增加了空格。

http://jsfiddle.net/CDe6a/1/

显示:内嵌图像

从 html 中删除空格似乎是解决此问题的最简单方法,但如果您对 html 真的很挑剔,则不需要。

http://jsfiddle.net/CDe6a/2/

没有 html 空白图像

显示:内联块;

似乎表现得一模一样display:inline;

http://jsfiddle.net/CDe6a/3/

显示:内联块图像

显示:表格单元格;

http://jsfiddle.net/CDe6a/4/

显示:表格单元格图像

完美运行。

我的想法:

我确定我错过了很多东西,比如某些会破坏布局的异常,但display:table- cell;似乎效果最好,我想我会开始替换float:left;,因为我似乎总是把clear:both;.
我在网上阅读了很多关于这方面的文章和博客,但没有一个给出明确的答案,告诉我在布局我的网站时应该使用什么。


阅读 76

收藏
2022-05-04

共1个答案

小编典典

在您询问的选项中:

  • float:left;
    我不喜欢浮动,因为需要有额外的标记来清除浮动。就我而言,整个float概念在 CSS
    规范中设计得很糟糕。不过,我们现在对此无能为力。但重要的是它确实有效,并且适用于所有浏览器(甚至 IE6/7),所以如果您喜欢它,请使用它。

如果您使用选择器清除浮动,则可能不需要用于清除的附加标记:after,但如果您想支持 IE6 或 IE7,这不是一个选项。

  • display:inline;
    这不应该用于布局,除了 IE6/7,它display:inline; zoom:1是对inline-block.

  • display:inline-block;
    这是我最喜欢的选择。它在所有浏览器中运行良好且一致,但需要注意的是 IE6/7,它支持某些元素。但是请参阅上面的hacky解决方案来解决这个问题。

另一个重要的警告inline- block是,由于内联方面,元素之间的空白被视为与文本单词之间的空白相同,因此您可以在元素之间出现间隙。有解决方法,但没有一个是理想的。(最好的就是元素之间没有任何空格)

  • display:table-cell;
    另一个您会遇到浏览器兼容性问题的问题。较旧的 IE 根本无法使用它。但即使对于其他浏览器,值得注意的是,它table- cell被设计用于在样式为table和的元素内部的上下文中使用table-row;单独使用table- cell不是这样做的预期方式,因此您可能会遇到不同的浏览器以不同的方式对待它。

您可能错过的其他技术? 是的。

  • 由于您说这是用于多列布局,因此您可能想了解CSS Columns 功能。然而,它不是最受支持的功能(即使在 IE9 中,IE 也不支持,并且所有其他浏览器都需要供应商前缀),因此您可能不想使用它。但这是另一种选择,你确实问过。

  • 还有 CSS FlexBox 功能,旨在让您的文本在框之间流动。这是一个令人兴奋的功能,它允许一些复杂的布局,但这仍然在开发中——参见http://html5please.com/#flexbox

希望有帮助。

2022-05-04