如何将<div>与页面的中间(水平/宽度)对齐

Shi*_*mmy 805 html css center alignment

我有一个设置为800pxdiv标签.当浏览器宽度大于800px时,它不应该拉伸,但它应该将它带到页面的中间.widthdiv

Agi*_*Jon 1067

<body>
    <div style="width:800px; margin:0 auto;">
        centered content
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

  • 只需确保将'text-align:center'应用于<body>,否则IE6不会将div居中.然后添加text-align:left; 你的div. (62认同)
  • 这对于演示目的是正确的,但显然不在最终标记中使用内联样式 (43认同)
  • 为什么你使用宽度:800px?这适用于所有屏幕吗? (4认同)
  • 请务必检查IE6或7的HTML模式。如果使用** 4.01严格**以外的任何格式,则可能会出现问题。多数情况下,text-align就像avdgaag所说的那样工作。 (2认同)

小智 315

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;
}
Run Code Online (Sandbox Code Playgroud)
<div id="outPopUp"></div>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,你的答案是唯一的跨浏览器解决方案,它应该被接受...值得一提的是,如果你有顶部和下面的其他div(在这种情况下只有"左边"),它也适用于"position:relative" 50%"和"保证金:0px -150px;"很重要". (12认同)
  • 使用```transform:translateX(-50%)```比使用负边距更能充分考虑div的宽度.同样适用于translateY和height (4认同)
  • position:fixed为我工作,可能最适合其他任何已添加div在某些绝对/相对div树中的人. (3认同)

Man*_*mar 84

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

HTML

<div class="container">
  <div class="center">Center</div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.container {
  display: flex;
  justify-content: center;
}
.center {
  width: 800px;
}
Run Code Online (Sandbox Code Playgroud)

产量

.container {
  display: flex;
  justify-content: center;
}
.center {
  width: 800px;
  background: #5F85DB;
  color: #fff;
  font-weight: bold;
  font-family: Tahoma;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="center">Centered div with left aligned text.</div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 正如你所看到的,它启用了“css”的高亮显示 (3认同)
  • 仅供参考,要垂直对齐,请设置“align-items: center”:“justify-content”用于 X 轴,“align-items”用于 Y 轴。 (2认同)

Tom*_*han 59

  1. 你的意思是你想要垂直或水平居中吗?你说你指定了height800px,并且希望div width在大于那个时不伸展...

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

html, body { margin: 0; padding: 0; }
#centeredDiv { margin-right: auto; margin-left: auto; width: 800px; }
Run Code Online (Sandbox Code Playgroud)


Kev*_*ngs 39

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

HTML

<body>
    <div class="centered">
        centered content
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

CSS

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

.centered {
    margin: 0 auto;
    text-align: left;
    width: 800px;
}
Run Code Online (Sandbox Code Playgroud)


小智 39

<div></div>
Run Code Online (Sandbox Code Playgroud)
div {
  display: table;
  margin-right: auto;
  margin-left: auto;
}
Run Code Online (Sandbox Code Playgroud)

  • 这就是我需要的.谢谢.使用更多赞成的答案只会有助于定位弹出窗口.这个答案有助于将中心的任何div水平放置. (3认同)

Raj*_*dev 28

您也可以像这样使用它:

<div style="width: 60%; margin: 0px auto;">
    Your contents here...
</div>
Run Code Online (Sandbox Code Playgroud)


小智 16

只需在身体标签之后使用中心标签,在身体结束之前使用终端中心标签

<body>
    <center>
        ... Your code here ...
    </center>
</body>
Run Code Online (Sandbox Code Playgroud)

这适用于我尝试过的所有浏览器

  • `<center>`标签[在html 4中已弃用](https://developer.mozilla.org/en/HTML/Element/center) (37认同)
  • 它可能已被折旧,但它仍然是最简单的解决方案,适用于所有浏览器. (7认同)
  • @MohammadUsman我认为这个标签比一些花哨的ES6模块npm依赖狗屎存活的时间更长. (2认同)

Wil*_*ilt 16

div在父级内部垂直和水平居中,但不固定内容大小

此页面上的概述非常不错,其中包含几种解决方案,此处太多代码无法共享,但是它显示了可能的解决方案...

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

HTML:

<div class="center"><div>
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

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


小智 16

这可以通过柔性容器轻松实现.

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

.item{
 align-self: center;
}
Run Code Online (Sandbox Code Playgroud)

预览链接


Tay*_*own 13

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

.marginAutoLR
{
    margin-right:auto;
    margin-left:auto;
}
Run Code Online (Sandbox Code Playgroud)

或者,将余量添加到div类中,如下所示:

.divClass
{
    width:300px;
    margin-right:auto;
    margin-left:auto;
}
Run Code Online (Sandbox Code Playgroud)

  • PS,这是保证金:0自动; (3认同)

小智 11

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

body {                       /* Centered */
  display: box;
  flex-align: center;
  flex-pack: center;
}
Run Code Online (Sandbox Code Playgroud)


小智 7

旧代码中的一些其他预先存在的设置将阻止div页面居中L&R:1)隐藏在外部样式表链接中的其他类.2)嵌入在诸如img之类的其他类(如旧的外部CSS打印格式控件).3)具有ID和/或CLASSES的图例代码将与命名的div类冲突.


rod*_*wer 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>
Run Code Online (Sandbox Code Playgroud)

的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;
}
Run Code Online (Sandbox Code Playgroud)

所以,#supercontainer是您"whole page",它width1200px

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

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


小智 6

居中而不指定div宽度:

body {
  text-align: center;
}

body * {
  text-align: initial;
}

body div {
  display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)

这就像<center>标签一样,除了:

  • 所有直接内联子元素(例如<h1>)也<center>将定位于中心
  • display:block根据浏览器默认值,inline-block元素可以具有不同的大小(comapred to setting)


San*_*lse 6

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

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


小智 6

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


小智 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;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/NPV2E/

“ body”标签的“ width:100%”仅作为示例。在实际的项目中,您可以删除此属性。


小智 5

.middle {
   margin:0 auto;
   text-align: center;
}
Run Code Online (Sandbox Code Playgroud)

/* 它使 div 居中 */


JFa*_*thi 5

使用justify-contentalign-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;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="mydiv">h & v aligned</div>
</div>
Run Code Online (Sandbox Code Playgroud)