gpt4 book ai didi

html - 为什么显示:table-cell not center content without display:table?

转载 作者:搜寻专家 更新时间:2023-10-31 22:03:29 25 4
gpt4 key购买 nike

我正在寻找最有效(或优雅)的方式来垂直和水平居中可变高度的内容。我想出了这个:http://cssdeck.com/t/2veysdkg/16 ,它使用 CSS 表格将主要内容垂直居中。

我编写这段代码的要求是:

  • 必须能够将可变和固定宽度的内容垂直和水平居中
  • 居中的内容必须在正常的文档流中(因此不会重叠)
  • 粘性页脚和普通页眉,均为 100% 宽度
  • 尽可能少的黑客攻击、难看的代码或非语义 html
  • 我不关心对 IE6、IE7 的支持(我会为它们使用不同的样式表)

奇怪的是,只有页眉和页脚设置为display:table-row,body-tag设置为display:table,才能满足上述需求>。这很奇怪,因为据我了解,当缺少父表元素时,css 将生成匿名表元素。所以 display:table-cell 应该可以在没有所有周围元素的情况下工作,但我还不能让它工作。

如果由我来决定,我宁愿不弄乱 body 标签的显示模式,而将页眉和页脚保留在 display:block 上。但我没能让它发挥作用。有谁知道为什么这不起作用,以及如何在不使用 display:tabledisplay:table-row 的情况下满足上述需求?

对于那些不想访问 cssdeck 查看我的源代码的人,我将在此处发布:

HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Vertical Centering</title>
</head>
<body>
<div id="header">header</div>
<div id="vertical">
<div id="horizontal">content</div>
</div>
<div id="footer">footer</div>
</body>
</html>

CSS

body, html {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}

body {
display: table;
}

#header {
display: table-row;
height: 2em;
background: gray;
}

#vertical {
display: table-cell;
vertical-align: middle;
width: 100%;
height: 100%;
}

#horizontal {
height: 500px;
width: 500px;
margin: auto;
background: gray;
}

#footer {
height: 2em;
display: table-row;
width: 100%;
background: gray;
}

最佳答案

显示属性如何工作?

display 属性允许您指定一系列与表格相关的值,以使元素显示为表格元素。可用的显示值是:

  • table 使元素表现得像 table 元素
  • table-row 使元素表现得像表格行 (tr) 元素
  • table-cell 使元素表现得像表格单元格 (td) 元素
  • table-row-group 使元素表现得像一个表体行组(tbody) 元素
  • table-header-group 使元素表现得像表格标题行组(头)元素
  • table-footer-group 使元素表现得像表脚行组(tfoot)元素
  • table-caption 使元素表现得像表格标题元素
  • table-column 使元素表现得像表格列 (col)元素
  • table-column-group 使元素表现得像一个表列组(colgroup) 元素

在此处查看完整列表... http://www.digital-web.com/articles/everything_you_know_about_CSS_Is_wrong/

但是你的问题可以这样解决

检查工作 fiddle http://jsfiddle.net/jZJXf/1/

css应该是这样的

body, html {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
body {
display: table;
}


#header {
width: 100%;
height: 2em;
background: gray;
}

#vertical {
display: table;
width: 100%;
height: 100%;
}

#horizontal {
display:table;
height: 500px;
width: 500px;
margin: 10% auto 0% auto;
background: gray;
}

#footer {
height: 2em;
width: 100%;
background: gray;
bottom: 0px;
display: table;

}

关于html - 为什么显示:table-cell not center content without display:table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10947886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com