907

我有一个设置为800 像素div的标签。当浏览器宽度大于800 像素时,不应拉伸,但应将其拉至页面中间。widthdiv

4

27 回答 27

1189
<body>
    <div style="width:800px; margin:0 auto;">
        centered content
    </div>
</body>
于 2009-06-05T01:49:10.453 回答
335

position: absolute然后将top:50%顶部left:50%边缘放置在屏幕的垂直中心,将左边缘放置在水平中心,然后添加margin-top到 div 高度的负数,即 -100 将其向上移动 100 ,对于margin-left. 这div恰好位于页面的中心。

#outPopUp {
  position: absolute;
  width: 300px;
  height: 200px;
  z-index: 15;
  top: 50%;
  left: 50%;
  margin: -100px 0 0 -150px;
  background: red;
}
<div id="outPopUp"></div>

于 2012-05-29T07:55:15.303 回答
152

Flexbox解决方案是进入/从 2015 年开始的方式。justify-content: center用于父元素将内容与其中心对齐。

HTML

<div class="container">
  <div class="center">Center</div>
</div>

CSS

.container {
  display: flex;
  justify-content: center;
}

输出

.container {
  display: flex;
  justify-content: center;
}
.center {
  width: 400px; 
  padding: 10px;
  background: #5F85DB;
  color: #fff;
  font-weight: bold;
  font-family: Tahoma;
}
<div class="container">
  <div class="center">Centered div with left aligned text.</div>
</div>

于 2015-08-17T17:25:29.990 回答
65
  1. 你的意思是要垂直居中还是水平居中?您说您将 指定height为 800 像素,并希望 div 在width大于 800 时不拉伸...

  2. 要水平居中,您可以使用margin: auto;CSS 中的属性。此外,您必须确保bodyandhtml元素没有任何边距或填充:

html, body { margin: 0; padding: 0; }
#centeredDiv { margin-right: auto; margin-left: auto; width: 800px; }
于 2009-06-05T01:47:42.030 回答
56
<div></div>
div {
  display: table;
  margin-right: auto;
  margin-left: auto;
}
于 2013-01-16T15:06:53.627 回答
39

要使其在 Internet Explorer 6 中也能正常工作,您必须执行以下操作:

HTML

<body>
    <div class="centered">
        centered content
    </div>
</body>

CSS

body {
    margin: 0;
    padding: 0;
    text-align: center; /* !!! */
}

.centered {
    margin: 0 auto;
    text-align: left;
    width: 800px;
}
于 2009-06-05T07:54:07.560 回答
30

你也可以像这样使用它:

<div style="width: 60%; margin: 0px auto;">
    Your contents here...
</div>
于 2012-12-01T10:45:36.750 回答
29

Div 在父级内部垂直和水平居中而不固定内容大小

此页面上的此处是一个很好的概述,其中包含多种解决方案,此处共享的代码太多,但它显示了可能的...

就我个人而言,我最喜欢这个具有著名的转换转换 -50% 技巧的解决方案。它适用于元素的固定(% 或 px)和未定义的高度和宽度。
代码很简单:

HTML:

<div class="center"><div>

CSS:

.center {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%); /* for IE 9 */
  -webkit-transform: translate(-50%, -50%); /* for Safari */

  /* optional size in px or %: */
  width: 100px;
  height: 100px;
}

这是一个表明它有效的小提琴

于 2013-04-30T12:27:31.470 回答
23

只需在center标签之后使用body标签,并在结束center之前body结束标签:

<body>
    <center>
        ... Your code here ...
    </center>
</body>

这对我尝试过的所有浏览器都有效。

于 2012-05-11T10:45:32.550 回答
20

这可以通过 flex 容器轻松实现。

.container{
 width: 100%;
 display: flex;
 height: 100vh;
 justify-content: center;
}

.item{
 align-self: center;
}

预览链接

于 2017-08-28T18:17:16.580 回答
13

将此类添加到要居中的 div 中(应具有设定的宽度):

.marginAutoLR
{
    margin-right:auto;
    margin-left:auto;
}

或者,将边距内容添加到您的 div 类中,如下所示:

.divClass
{
    width:300px;
    margin-right:auto;
    margin-left:auto;
}
于 2014-02-10T16:16:01.780 回答
12

使用CSS flex 属性:http: //jsfiddle.net/cytr/j7SEa/6/show/

body {                       /* Centered */
  display: box;
  flex-align: center;
  flex-pack: center;
}
于 2013-03-30T19:25:54.660 回答
7

来自旧代码的其他一些预先存在的设置将阻止 div 页面居中 L&R 是:

  1. 隐藏在外部样式表链接中的其他类。
  2. 其他类嵌入在类似的东西中img(比如旧的外部 CSS 打印格式控件)。
  3. 带有 ID 和/或 CLASSES 的图例代码将与命名div类冲突。
于 2012-05-16T17:20:32.567 回答
6

如果您有一些常规内容,而不仅仅是一行文本,我知道的唯一可能原因是计算边距。

这是一个例子:

HTML

<div id="supercontainer">
  <div id="middlecontainer">
    <div class="common" id="first">first</div>
    <div id="container">
      <div class="common" id="second">second</div>
      <div class="common" id="third">third</div>
    </div>
  </div>
</div>

CSS

body {
  margin: 0;
  padding: 0;
}

.common {
  border: 1px solid black;
}

#supercontainer {
  width: 1200px;
  background: aqua;
  float: left;
}

#middlecontainer {
  float: left;
  width: 104px;
  margin: 0 549px;
}

#container {
  float: left;
}

#first {
  background: red;
  height: 102px;
  width: 50px;
  float: left;
}

#second {
  background: green;
  height: 50px;
  width: 50px;
}

#third {
  background: yellow;
  height: 50px;
  width: 50px;
}

所以,#supercontainer是你的"whole page"和它width1200px

#middlecontainer包含您网站的div内容;它是width 102px。如果width已知内容,则需要将页面大小除以 2,然后width从结果中减去一半内容:1200 / 2 - (102 / 2) = 549;

是的,我也看到这是CSS 的严重失败。

于 2010-11-26T20:48:20.803 回答
6

在不指定 div 宽度的情况下居中:

body {
  text-align: center;
}

body * {
  text-align: initial;
}

body div {
  display: inline-block;
}

这类似于<center>tag 所做的事情,除了:

  • 的所有直接内联子元素(例如<h1><center>也将定位到中心
  • display:block根据浏览器默认值,inline-block 元素可以具有不同的大小(与设置相比)
于 2014-01-31T12:25:05.920 回答
6

使用以下代码使 div 框居中:

.box-content{
    margin: auto;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    position: absolute;
    width: 800px;
    height: 100px;
    background-color: green;
}
<div class="box-content">
</div>

于 2016-12-15T07:43:23.210 回答
6

parent {
    position: relative;
}
child {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}
<parent>
  <child>
  </child>
</parent>

于 2018-08-17T21:12:28.703 回答
5
body, html {
    display: table;
    height: 100%;
    width: 100%;
}
.container {
    display: table-cell;
    vertical-align: middle;
}
.container .box {
    width: 100px;
    height: 100px;
    background: red;
    margin: 0 auto;
}

http://jsfiddle.net/NPV2E/

“body”标签的“width:100%”只是一个例子。在实际项目中,您可以删除此属性。

于 2013-11-19T16:09:45.100 回答
5
.middle {
   margin:0 auto;
   text-align: center;
}

/* 将 div 带到中心 */

于 2015-06-18T14:14:13.353 回答
5

使用justify-contentandalign-items水平和垂直对齐div

https://developer.mozilla.org/de/docs/Web/CSS/justify-content https://developer.mozilla.org/en/docs/Web/CSS/align-items

html,
body,
.container {
  height: 100%;
  width: 100%;
}
.container {
  display: flex;
  align-items: center;
  justify-content: center;
}
.mydiv {
  width: 80px;
}
<div class="container">
  <div class="mydiv">h & v aligned</div>
</div>

于 2016-11-03T18:23:22.963 回答
4

简单的http://jsfiddle.net/8pd4qx5r/

html {
  display: table;
  height: 100%;
  width: 100%;
}

body {
  display: table-cell;
  vertical-align: middle;
}

.content {
  margin: 0 auto;
  width: 260px;
  text-align: center;
  background: pink;
}
于 2015-01-16T17:35:15.410 回答
3

这也适用于 Internet Explorer,但自动边距不适用。

.centered {
    position: absolute;
    display:  inline-block;
    left:     -500px;
    width:    1000px;
    margin:   0 50%;
}
于 2012-04-09T20:02:04.403 回答
2

如果您的中心内容位于其他 div 的深处,那么只有 margin 可以拯救您。没有其他的。当不使用像Bootstrap这样的框架时,我总是面对它。

于 2016-10-25T22:07:25.303 回答
2

就我而言,手机屏幕尺寸是未知的,这就是我所做的。

HTML

<div class="loadingImg"></div>

CSS

.loadingImg{
    position: fixed;
    top: 0px;
    left: 0px;
    z-index: 9999999;
    border: 0;
    background: url('../images/loading.gif') no-repeat center;
    background-size: 50px 50px;
    display: block;
    margin: 0 auto;
    -webkit-border-radius: 50px;
    border-radius: 50px;
}

JavaScript(在您需要显示此 DIV 之前)

$(".loadingImg").css("height",$(document).height());
$(".loadingImg").css("width",$(document).width());
$(".loadingImg").show();
于 2017-10-21T04:02:15.413 回答
1
<body>
    <div style=" display: table; margin: 250 auto;">
        In center
    </div>
</body>

如果你想改变垂直位置,改变250的值,你可以根据需要排列内容。不需要给出宽度和其他参数。

于 2014-10-29T11:50:55.047 回答
1

出于某种原因,以前的答案都没有真正对我有用。这对我有用,它也适用于浏览器:

.center {
    text-align: center;
    height: 100%;

    /* Safari, Opera, and Chrome */
    display: -webkit-box;
    -webkit-box-pack: center;
    -webkit-box-align: center;

    /* Firefox */
    display: -moz-box;
    -moz-box-pack: center;
    -moz-box-align: center;

    /* Internet Explorer 10 */
    display: -ms-flexbox;
    -ms-flex-pack: center;
    -ms-flex-align: center;
}
于 2015-10-29T08:13:23.723 回答
1
  • 获取屏幕的宽度。
  • 然后留出25%的边距
  • 使保证金正确 25%

这样,您的容器的内容将位于中间。

示例:假设容器宽度 = 800px;

<div class='container' width='device-width' id='updatedContent'>
    <p id='myContent'></p>
    <contents></contents>
    <contents></contents>
</div>

if ($("#myContent").parent === $("updatedContent"))
{
    $("#myContent").css({
        'left': '-(device-width/0.25)px';
        'right': '-(device-width/0.225)px';
    });
}
于 2018-05-25T19:55:26.137 回答