在div中间对齐中间和中间的图像

Dro*_*1n2 290 html css

我有以下div

<div id="over" style="position:absolute; width:100%; height:100%>
 <img src="img.png">
</div>
Run Code Online (Sandbox Code Playgroud)

如何对齐图像以便位于div的中间和中心?

小智 391

的jsfiddle

body {
  margin: 0;
}

#over img {
  margin-left: auto;
  margin-right: auto;
  display: block;
}
Run Code Online (Sandbox Code Playgroud)
<div id="over" style="position:absolute; width:100%; height:100%">
  <img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
Run Code Online (Sandbox Code Playgroud)

  • 一个没有参加这个问题的答案怎么能获得超过300票? (24认同)
  • 这不会垂直对齐 (10认同)
  • 不起作用,如果元素没有浮动在任何方向,这将工作... (9认同)
  • `display:block;`是我的陷阱.TNX (4认同)
  • 以下不起作用.我在做什么错.<html> <head> <style> #over img {display:block; margin-left:auto; margin-right:auto; } </ style> </ head> <body> <div id ="over"style ="position:absolute; width:100%; height:100%"> <img rel="nofollow noreferrer" src ="http://img8a.flixcart. com/image/tablet/f/k/t/asus-nexus-7-125x125-imadngwf2gk44dyd.jpeg"> </ div> </ body> </ html> (2认同)

Joh*_* K. 162

<div style="display:table-cell; vertical-align:middle; text-align:center">
<img src="img.png">
</div>
Run Code Online (Sandbox Code Playgroud)

  • 最佳答案,非常有帮助! (5认同)
  • 如果我们删除display:table-cell; 它确实有效. (5认同)
  • 这不会垂直对齐 (3认同)
  • 非常简短和简单的解决方案,但它似乎只适用于固定的、非百分比的宽度和高度。它确实适用于浮点数,因此 +1。— http://jsfiddle.net/2s2nY/2/ (2认同)

小智 97

这也可以使用Flexbox布局完成:

静态尺寸

.parent {
    display: flex;
    height: 300px; /* Or whatever */
    background-color: #000;
}

.child {
    width: 100px;  /* Or whatever */
    height: 100px; /* Or whatever */
    margin: auto;  /* Magic! */
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent">
    <img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</div>
Run Code Online (Sandbox Code Playgroud)

动态尺寸

html, body {
  width: 100%;
  height: 100%;
  display: flex;
  background-color: #999;
}

* {
  margin: 0;
  padding: 0;
}

.parent {
  margin: auto;
  background-color: #000;
  display: flex;
  height: 80%;
  width: 80%;
}

.child {
  margin: auto;  /* Magic! */
  max-width: 100%;
  max-height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent">
  <img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</div>
Run Code Online (Sandbox Code Playgroud)

我在本文中找到了这个例子,它解释了如何使用布局.


avr*_*ool 89

在我看来,您还希望图像在容器内垂直居中.(我没有看到任何答案提供)

工作小提琴:

  1. 纯CSS解决方案
  2. 没有打破文件流(没有浮动或绝对定位)
  3. 跨浏览器兼容性(甚至是IE6)
  4. 完全响应.

HTML

<div id="over">
    <span class="Centerer"></span>
    <img class="Centered" src="http://th07.deviantart.net/fs71/200H/f/2013/236/d/b/bw_avlonas_a5_beach_isles_wallpaper_image_by_lemnosexplorer-d6jh3i7.jpg" />
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

*
{
    padding: 0;
    margin: 0;
}
#over
{
    position:absolute;
    width:100%;
    height:100%;
    text-align: center; /*handles the horizontal centering*/
}
/*handles the vertical centering*/
.Centerer
{
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}
.Centered
{
    display: inline-block;
    vertical-align: middle;
}
Run Code Online (Sandbox Code Playgroud)

注意:此解决方案可以很好地对齐任何元素中的任何元素.对于IE7,当.Centered在块元素上应用类时,您将不得不使用另一个技巧来实现inline-block工作.(因为IE6/IE7在块元素上的内联块不能很好地运行)

  • 只有这个工作(垂直和水平) (10认同)
  • 优秀..这应该是这个问题的答案. (2认同)
  • 完美的工作! (2认同)

小智 62

img.centered {
   display: block;
   margin: auto auto;
}
Run Code Online (Sandbox Code Playgroud)


tan*_*dar 30

您可以使用display:flex css属性轻松完成此操作

#over {
  height: 100%;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
Run Code Online (Sandbox Code Playgroud)


小智 28

#over {position:relative; text-align:center; 
       width:100%; height:100%; background:#CCC;}

#over img{
    position: absolute;
    margin: auto;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
}
Run Code Online (Sandbox Code Playgroud)


Liz*_*dKG 13

Daaawx 的答案有效,但我认为如果我们消除内联 css 会更清晰。

body {
	margin: 0;
}

#over img {
	margin-left: auto;
	margin-right: auto;
	display: block;
}
div.example {
  position: absolute;
  width: 100%;
  height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="example" id="over">
	<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
Run Code Online (Sandbox Code Playgroud)


paw*_*318 12

我在这里提出的其他解决方案仍有一些问题.最后这对我来说效果最好:

<div class="parent">
    <img class="child" src="image.png"/>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS3:

.child {
 display: block;
 position: absolute;
 top: 50%;
 left: 50%;
 transform: translate(-50%, -50%);
 -webkit-transform: translate(-50%, -50%); /* Safari and Chrome */
 -moz-transform: translate(-50%, -50%); /* Firefox */
 -ms-transform: translate(-50%, -50%); /* IE 9 */
 -o-transform: translate(-50%, -50%); /* Opera */
 // I suppose you may like those too:
 // max-width: 80%;
 // max-height: 80%;
}
Run Code Online (Sandbox Code Playgroud)

您可以在此页面上阅读有关该方法的更多信息.


Gar*_*nis 10

基本上,将右边距和左边距设置为自动将导致图像居中对齐.

<div id="over" style="position:absolute; width:100%; height:100%>
<img src="img.png" style="display: block; margin: 0 auto;">
</div>
Run Code Online (Sandbox Code Playgroud)


Suj*_*har 8

这将是一种更简单的方法

#over > img{
    display: block;
    margin:0 auto; 
}
Run Code Online (Sandbox Code Playgroud)


sas*_*sha 6

img设置为display:inline-block,同时将上级div设置为text-align:center也可以完成工作

编辑:对那些正在玩显示器的人:inline-block >>>不要忘记,例如两个div

<div>Div1 content</div>NOSPACEHERE<div>Div2 content</div>
Run Code Online (Sandbox Code Playgroud)

他们之间真的没有空格(如此处所示).

只是基本避免它们之间的这些(内联块固有)间隙.我现在正在写的每两个字之间可以看到这些差距!:-)所以..希望这有助于你们中的一些人.


Gab*_*Mic 6

好吧,我们在 2016 年......为什么不使用 flexbox?它也是响应式的。享受。

#over{
display:flex;
align-items:center;
justify-content:center;
}
Run Code Online (Sandbox Code Playgroud)
<div id="over">
	<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
Run Code Online (Sandbox Code Playgroud)


Nad*_*dav 6

简单.2018. FlexBox.检查浏览器支持 - 我可以使用

最小解决方案:

div#over { 
   display: flex; 
   justify-content: center; 
   align-items: center; 
}
Run Code Online (Sandbox Code Playgroud)


要获得最广泛的浏览器支持:

div#over { 
   display: -webkit-flex;
   display: -ms-flex; 
   display: flex; 
   justify-content: center; 
   -ms-align-items: center; 
   align-items: center; 
}
Run Code Online (Sandbox Code Playgroud)


Yog*_*gee 5

我尝试了很多方法,但只有这个方法适用于容器div中的多个内联元素.这是在中间对齐div中的所有内容的代码.

CSS

.divContainer
{
    vertical-align: middle;
    text-align: center; <!-- If you want horizontal center alignment -->
}
.divContainer > *
{
    vertical-align: middle;
}
Run Code Online (Sandbox Code Playgroud)

HTML

<div class="divContainer">
    <span>Middle Text</span>
    <img src="test.png"/>
</div>
Run Code Online (Sandbox Code Playgroud)

示例代码如下:https://jsfiddle.net/yogendrasinh/2vq0c68m/


小智 5

CSS文件

.over {
    display : block;
    margin : 0px auto;
Run Code Online (Sandbox Code Playgroud)


WDu*_*ffy 5

对此的标记答案不会垂直对齐图像。适用于现代浏览器的解决方案是 flexbox。Flex 容器可以配置为水平和垂直对齐其项目。

<div id="over" style="position:absolute; width:100%; height:100%; display: flex; align-items: center; justify-content: center;">
    <img src="img.png">
</div>
Run Code Online (Sandbox Code Playgroud)

  • **来自审查队列**:我可以请您在源代码周围添加一些上下文。纯代码答案很难理解。如果您可以在帖子中添加更多信息,这将对提问者和未来的读者都有帮助。 (7认同)
  • 这并不能证明否决票是合理的。答案在技术上是正确的,将有助于未来的读者。我已经更新了答案主体以遵守内部规则,但也许核心团队应该实施更直接的解决方案,因为仅识别代码答案是一项微不足道的任务。 (2认同)

小智 5

只需设置父 div css 属性“text-align:center;”

 <div style="text-align:center; width:100%">
        <img src="img.png"> 
 </div>
Run Code Online (Sandbox Code Playgroud)