457

这可能是一个愚蠢的问题,但由于通常的居中对齐图像的方法不起作用,我想我会问。如何在其容器 div 内居中对齐(水平)图像?

这是HTML和CSS。我还为缩略图的其他元素添加了 CSS。它按降序运行,因此最高元素是所有内容的容器,最低元素在所有内容中。

#thumbnailwrapper {
      color: #2A2A2A;
      margin-right: 5px;
      border-radius: 0.2em;
      margin-bottom: 5px;
      background-color: #E9F7FE;
      padding: 5px;
      border: thin solid #DADADA;
      font-size: 15px
}
    
#artiststhumbnail {
      width: 120px;
      height: 108px;
      overflow: hidden;
      border: thin solid #DADADA;
      background-color: white;
}
    
#artiststhumbnail:hover {
      left: 50px
}
<!--link here-->

<a href="NotByDesign">
  <div id="thumbnailwrapper">

    <a href="NotByDesign">

      <!--name here-->
      <b>Not By Design</b>
      <br>

      <div id="artiststhumbnail">

        <a href="NotByDesign">

          <!--image here-->
          <img src="../files/noprofile.jpg" height="100%" alt="Not By Design" border="1" />
        </a>
      </div>

      <div id="genre">Punk</div>

  </div>

好的,我已经添加了没有 PHP 的标记,所以应该更容易看到。这两种解决方案在实践中似乎都行不通。顶部和底部的文本不能居中,图像应在其容器 div 中居中。容器已隐藏溢出,因此我想查看图像的中心,因为这通常是焦点所在的位置。

4

23 回答 23

955
#artiststhumbnail a img {
    display:block;
    margin:auto;
}

这是我的解决方案:http: //jsfiddle.net/marvo/3k3CC/2/

于 2012-06-12T00:46:19.973 回答
133

CSS flexbox可以justify-content: center在图像父元素上完成。要保留图像的纵横比,请添加align-self: flex-start;它。

HTML

<div class="image-container">
  <img src="http://placehold.it/100x100" />
</div>

CSS

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

输出:

body {
  background: lightgray;
}
.image-container {
  width: 200px;
  display: flex;
  justify-content: center;
  margin: 10px;
  padding: 10px;
  /* Material design properties */
  background: #fff;
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
}
.image-2 {
  width: 500px;
  align-self: flex-start;  /* to preserve image aspect ratio */
}
.image-3 {
  width: 300px;
  align-self: flex-start;  /* to preserve image aspect ratio */
}
<div class="image-container">
  <img src="http://placehold.it/100x100" />
</div>

<div class="image-container image-2">
  <img src="http://placehold.it/100x100/333" />
</div>

<div class="image-container image-3">
  <img src="http://placehold.it/100x100/666" />
</div>

于 2015-12-10T13:04:37.477 回答
76

我刚刚在 W3 CSS 页面上找到了这个解决方案,它回答了我的问题。

img {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

来源:http ://www.w3.org/Style/Examples/007/center.en.html

于 2014-08-29T13:35:08.613 回答
22

这也可以

#imagewrapper {
    text-align:center;
}

#imagewrapper img {
    display:inline-block;
    margin:0 5px;
}
于 2014-10-06T11:13:26.553 回答
18

我发现(似乎适用于所有浏览器)水平居中图像或任何元素的最佳方法是创建一个 CSS 类并包含以下参数:

CSS

.center {
    position: relative;          /* where the next element will be automatically positioned */
    display: inline-block;       /* causes element width to shrink to fit content */
    left: 50%;                   /* moves left side of image/element to center of parent element */
    transform: translate(-50%);  /* centers image/element on "left: 50%" position */
}

然后,您可以将您创建的 CSS 类应用到您的标签,如下所示:

HTML

<img class="center" src="image.jpg" />

您还可以通过执行以下操作在元素中内联 CSS:

<img style="position: relative; display: inline-block; left: 50%; transform: translate(-50%);" src ="image.jpg" />

...但我不建议内联编写 CSS,因为如果您想更改样式,则必须使用居中的 CSS 代码对所有标签进行多次更改。

于 2018-01-20T22:59:21.170 回答
12

这就是我最终做的事情:

<div style="height: 600px">
   <img src="assets/zzzzz.png" alt="Error" style="max-width: 100%; 
        max-height: 100%; display:block; margin:auto;" />
</div>

这会将图像高度限制为 600 像素,并将水平居中(如果父宽度较小,则调整大小)到父容器,保持比例。

于 2015-04-28T08:40:11.863 回答
8

我要四处走动,说以下就是你所追求的。

请注意,我认为在问题中意外省略了以下内容(见评论):

<div id="thumbnailwrapper"> <!-- <<< This opening element -->
    <div id="artiststhumbnail">
...

所以你需要的是:

#artiststhumbnail {
    width:120px;
    height:108px;
    margin: 0 auto; /* <<< This line here. */
    ...
}

http://jsfiddle.net/userdude/XStjX/3/

于 2012-06-12T01:37:30.850 回答
5

将此添加到您的 CSS 中:

#artiststhumbnail a img {
   display: block;
   margin-left: auto;
   margin-right: auto;
}

只是引用一个子元素,在这种情况下是图像。

于 2016-01-17T20:32:47.650 回答
3

要水平居中图像,可以这样:

<p style="text-align:center"><img src=""></p>
于 2017-06-06T08:20:33.777 回答
2

为左右设置相等的像素填充:

<div id="artiststhumbnail" style="padding-left:ypx;padding-right:ypx">
于 2015-03-25T03:37:43.010 回答
2

我尝试了几种方法。但这种方式对我来说非常有效

<img src="~/images/btn.png" class="img-responsive" id="hide" style="display: block; margin-left: auto; margin-right: auto;" />
于 2019-01-20T02:44:16.560 回答
2

把图片放在一个newDiv. 使包含的宽度div与图像相同。适用margin: 0 auto;newDiv. 那应该div在容器内居中。

于 2016-02-22T05:21:02.530 回答
2

是的,像这样的代码工作正常

<div>
 <img/>
</div>

但只是为了提醒你,图像的风格

object-fit : *depend on u*

所以最终的代码就像示例

div {
  display: flex;
  justify-content: center;
  align-items: center;
}

div img {
  object-fit: contain;
}
<div style="border: 1px solid red;">
  <img src="https://img.joomcdn.net/9dd32cbfa0cdd7f48ca094972ca47727cd3cd82c_original.jpeg" alt="" srcset="" style="
       border-radius: 50%;
       height: 7.5rem;
       width: 7.5rem;
       object-fit: contain;" />
</div>

最后结果

于 2020-05-21T09:56:10.973 回答
2

使用定位。以下对我有用......(水平和垂直居中)

缩放到图像的中心(图像填充 div):

div{
    display:block;
    overflow:hidden;
    width: 70px; 
    height: 70px;  
    position: relative;
}
div img{
    min-width: 70px; 
    min-height: 70px;
    max-width: 250%; 
    max-height: 250%;    
    top: -50%;
    left: -50%;
    bottom: -50%;
    right: -50%;
    position: absolute;
}

没有缩放到图像的中心(图像不填充div):

   div{
        display:block;
        overflow:hidden;
        width: 100px; 
        height: 100px;  
        position: relative;
    }
    div img{
        width: 70px; 
        height: 70px; 
        top: 50%;
        left: 50%;
        bottom: 50%;
        right: 50%;
        position: absolute;
    }
于 2016-03-24T08:42:41.797 回答
2

在 div 中将图像居中

/* standar */
div, .flexbox-div {
  position: relative;
  width: 100%;
  height: 100px;
  margin: 10px;
  background-color: grey;  
}

img {
  border: 3px solid red;
  width: 75px;
  height: 75px;
}
/* || standar */


/* transform */
.transform {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%); /* IE 9 */
  -webkit-transform: translate(-50%, -50%); /* Chrome, Safari, Opera */ 
}
/* || transform */


/* flexbox margin */
.flexbox-div {
  display: -webkit-flex;
  display: flex;
  background-color: lightgrey; 
}

.margin-img {
  margin: auto;
}
/* || flexbox margin */


/* flexbox justify align */
.flexbox-justify {
  justify-content: center;
}

.align-item {
  align-self: center;
}
/* || flexbox justify align */
<h4>Using transform </h4>  
<div>
  <img class="transform" src="http://placeholders.org/250/000/fff" alt="Not By Design" border="1" />
</div>

<h4>Using flexbox margin</h4>  
<div class="flexbox-div">
  <img class="margin-img" src="http://placeholders.org/250/000/fff" alt="Not By Design" border="1" />
</div>

<h4>Using flexbox justify align</h4>  
<div class="flexbox-div flexbox-justify">
  <img class="align-item" src="http://placeholders.org/250/000/fff" alt="Not By Design" border="1" />
</div>

于 2017-09-25T05:33:45.490 回答
2

使图像居中的响应方式可以是这样的:

.center {
    display: block;
    margin: auto;
    max-width: 100%;
    max-height: 100%;
}
于 2020-06-02T22:09:52.603 回答
1

您可以使用最少代码的弹性框对齐您的内容

HTML

<div class="image-container">
<img src="https://image.freepik.com/free-vector/modern-abstract-background_1048-1003.jpg" width="100px"> 
</div>

CSS

.image-container{
  width:100%;
  background:green;
  display:flex;

.image-container{
  width:100%;
  background:green;
  display:flex;
  justify-content: center;
  align-items:center;
}
<div class="image-container">
<img src="https://image.freepik.com/free-vector/modern-abstract-background_1048-1003.jpg" width="100px"> 
</div>

js小提琴链接https://jsfiddle.net/7un6ku2m/

于 2016-12-19T12:57:40.927 回答
0

如果您必须内联(例如在使用输入框时),
这里有一个对我有用的快速技巧:将您的(在这种情况下为图片链接)
divstyle="text-align:center"

<div style="text-align:center">

<a title="Example Image: Google Logo" href="https://www.google.com/" 
target="_blank" rel="noopener"><img src="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png" alt="Google Logo. Click to visit Google.com" border="0" data-recalc-dims="1" /></a>

<h6><strong>This text will also be centered </strong></h6>

</div> /* ends centering style */
于 2017-07-11T20:21:55.323 回答
0

.document {
  align-items: center;
  background-color: hsl(229, 57%, 11%);
  border-radius: 5px;
  display: flex;
  height: 40px;
  width: 40px;
}

.document img {
  display: block;
  margin: auto;
}
<div class="document">
  <img src="./images/icon-document.svg" alt="icon-document" />
</div>

于 2020-06-21T05:02:40.277 回答
-1

样式.css

img#center-img{

 display: block;
 margin: auto;
}

html

<html>
  <body>
    <div>
      <img src='pic.png' id='center-img'>
    </div>
  </body>
</html>
于 2021-02-12T14:28:34.370 回答
-1
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">


      <style>
      body{
  /*-------------------important for fluid images---\/--*/
  overflow-x: hidden; /* some browsers shows it for mysterious reasons to me*/
  overflow-y: scroll;
  margin-left:0px;
  margin-top:0px;
  /*-------------------important for fluid images---/\--*/
      }
      .thirddiv{
      float:left;
      width:100vw;
      height:100vh;
      margin:0px;
      background:olive;
      }
      .thirdclassclassone{
      float:left;   /*important*/
      background:grey;
      width:80vw;
      height:80vh; /*match with img height bellow*/
      margin-left:10vw; /* 100vw minus "width"/2    */
      margin-right:10vw; /* 100vw minus "width"/2   */
      margin-top:10vh;
      }
      .thirdclassclassone img{
      position:relative; /*important*/
     display: block;  /*important*/
    margin-left: auto;  /*very important*/
    margin-right: auto;  /*very important*/
    height:80vh; /*match with parent div above*/

    /*--------------------------------
    margin-top:5vh;
    margin-bottom:5vh;
    ---------------------------------*/
    /*---------------------set margins to match total  height of parent di----------------------------------------*/
      }
    </style>           
</head>  
<body>
    <div class="thirddiv">
       <div class="thirdclassclassone">
       <img src="ireland.png">
    </div>      
</body>
</html>
于 2016-04-17T15:59:02.643 回答
-1
##Both Vertically and Horizontally center of the Page
.box{
    width: 300px;
    height: 300px;
    background-color: #232532;
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    margin: auto;
}
于 2018-02-15T11:49:20.517 回答
-1

要使图像居中,请使用此 css。您必须在图像的第一个位置给出宽度。

img{
  width: 300px;
  position: fixed;
  left0;
  right:0;

}
于 2021-11-23T14:33:35.567 回答