【问题标题】:The ultimate solution to cross-browser vertical centering?跨浏览器垂直居中的终极解决方案?
【发布时间】:2013-06-05 16:33:06
【问题描述】:

简短而无痛,我尝试了很多方法来获取元素,例如信息文本,绝对居中 (H/V) 不使用 使用 div、Javascript、jQuery 或其他任何方式。

问题是没有让它工作并且有很多不同的方法,但我正在失去我的头发试图让它跨浏览器兼容。 而且应该就是这么简单。

例如,在以下场景中,FF21 将 50% 的 margin-top 解释为 100% 没有任何逻辑原因。 (但移动设备没有)。

我正在使用<meta name="viewport" content="minimum-scale=1.0, width=device-width, maximum-scale=1.0, user-scalable=no" />

相关CSS:

body {
    margin: 50% 0 0;
    padding: 0;
    border: 0;
    display: block;
    vertical-align: middle; /* removing this made no real difference at all */
    font-family: Helvetica, Arial, MS Sans Serif;
    font-size: 11pt;
    text-align:center;
    background-color: rgb(10, 50, 100);
    color: #ddd;
}

注意事项:

  • 在 Firefox 中,预期的垂直居中设置为 25% 的上边距(这在移动浏览器中看起来是错误的,但又一次)。
  • 使用 HTML5
  • 尝试避免任何形式的脚本和预先计算的负边距。浏览器应该按照您的要求正确居中。

JS-小提琴:http://jsfiddle.net/sfaVg/

【问题讨论】:

  • DID 尝试将 * 的高度设置为 100%,我 DID 玩弄垂直对齐,我 DID 尝试填充而不是边距,以及更多场景。我没有找到 ANYALL 常见浏览器中工作 EQUAL 的简单解决方案。
  • 您想在没有包含元素的情况下居中?你为什么需要这个?
  • 有内容(文字)。它不一定必须是主体,但我经常遇到不令人满意的麻烦,正确地居中某些东西需要很多“玩转”,然后在某些浏览器/屏幕/操作系统情况下看起来仍然令人毛骨悚然。例如,在所有浏览器中,50% 应该是 50%,而不是在 firefox 中是 100%,只是因为它是一种技巧小马,并且认为它是由彩虹组成的,并且 20% 更酷。是的...猜你明白我的意思。对不起,大声笑。
  • 我可以将所有内容封装在大量 DIV 中以正确居中,但这对我来说似乎与“终极、干净的解决方案”相差甚远。
  • 我完全同意你的观点,在 css 中居中不是直截了当的,这是它的缺点之一。 Flexbox 将来可能会对此有所帮助,但还不是跨浏览器。查看dabblet.com/gist/2403795——但如果没有包含元素,恐怕它会保持不可能:)

标签: android html css mobile cross-browser


【解决方案1】:

如果没有包含文本的元素,我怀疑您是否能够像您希望的那样将其置于死点。一旦你编写了正确的标记(例如,将段落放在它所属的 <p> 中),这很有可能,但使用以下 css;

p {
    display: table-cell;
    vertical-align: middle;
    text-align:center;
}

还要确保它的容器(在你的情况下是body)得到 display: table;和 100% 宽度/高度

http://jsfiddle.net/sfaVg/3/的演示

另外,可以在http://zoffix.com/new/absolute-center-random-width-height.html找到额外的替代方法(需要两个容器)

第三种解决方案,当您知道您要居中的尺寸时:http://reisio.com/examples/deadcenter/

【讨论】:

  • 第一个解决方案似乎正是我想要的,第二个看起来也很有趣。只是想知道,为什么在任一解决方案中都要求显示类型为table,但我想我可以接受。第三种解决方案是我不想想做的一个确切例子。非常感谢这些。
  • @ChrisS.:它需要呈现为table-cell 的原因是因为vertical-align 在表格单元格上的行为不同(垂直居中其内容而不是将其放在内联文本的中间) ,请参阅phrogz.net/css/vertical-align 了解更多详情。
猜你喜欢
  • 1970-01-01
  • 2015-03-28
  • 2016-03-31
  • 2014-05-03
  • 2016-07-01
  • 2015-07-04
  • 2011-03-05
  • 2016-05-30
  • 2011-07-13
相关资源
最近更新 更多