简体   繁体   English

在 div 内水平居中图像

[英]Center image horizontally within a div

This is probably a stupid question but since the usual ways of center aligning an image are not working I thought I would ask.这可能是一个愚蠢的问题,但由于通常的图像居中对齐方式不起作用,我想我会问。 How can I center align (horizontally) an image inside its container div?如何在其容器 div 内居中对齐(水平)图像?

Here's the HTML and CSS.这是 HTML 和 CSS。 I've also included the CSS for the other elements of the thumbnail.我还包括缩略图的其他元素的 CSS。 It runs in descending order so the highest element is the container of everything and the lowest is inside everything.它按降序运行,因此最高元素是所有内容的容器,最低元素是所有内容。

 #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>

Okay, I have added the markup without the PHP in so should be easier to see.好的,我添加了没有 PHP 的标记,所以应该更容易看到。 Neither solution seems to work in practice.这两种解决方案在实践中似乎都不起作用。 The text at top and bottom cannot be centered and the image should be centered within its container div.顶部和底部的文本不能居中,图像应在其容器 div 内居中。 The container has overflow hidden so I want to see the center of the image as that's normally where the focus is.容器已隐藏溢出,因此我想查看图像的中心,因为这通常是焦点所在的位置。

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

Here's my solution in: http://jsfiddle.net/marvo/3k3CC/2/这是我的解决方案: http : //jsfiddle.net/marvo/3k3CC/2/

CSSflexbox can do it with justify-content: center on the image parent element. CSSflexbox可以使用justify-content: center在图像父元素上。 To preserve the aspect ratio of the image, add align-self: flex-start;为了保持图像的纵横比,添加align-self: flex-start; to it.到它。

HTML HTML

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

CSS CSS

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

Output:输出:

 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>

I just found this solution below on the W3 CSS page and it answered my problem.我刚刚在 W3 CSS 页面上找到了这个解决方案,它回答了我的问题。

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

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

This also would do it这也行

#imagewrapper {
    text-align:center;
}

#imagewrapper img {
    display:inline-block;
    margin:0 5px;
}

The best thing I have found (that seems to work in all browsers) for centering an image, or any element, horizontally is to create a CSS class and include the following parameters:我发现(似乎适用于所有浏览器)将图像或任何元素水平居中的最好方法是创建一个 CSS 类并包含以下参数:

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 */
}

You can then apply the CSS class you created to your tag as follows:然后,您可以将您创建的 CSS 类应用到您的标签,如下所示:

HTML HTML

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

You can also inline the CSS in your element(s) by doing the following:您还可以通过执行以下操作将 CSS 内联到您的元素中:

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

...but I wouldn't recommend writing CSS inline because then you have to make multiple changes in all your tags using your centering CSS code if you ever want to change the style. ...但我不建议内联编写 CSS,因为如果您想更改样式,则必须使用居中的 CSS 代码对所有标签进行多项更改。

This is what I ended up doing:这就是我最终做的:

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

Which will limit the image height to 600px and will horizontally-center (or resize down if the parent width is smaller) to the parent container, maintaining proportions.这会将图像高度限制为 600 像素,并将水平居中(如果父宽度较小,则向下调整大小)到父容器,保持比例。

I am going to go out on a limb and say that the following is what you are after.我要冒昧地说,以下是你所追求的。

Note, the following I believe was accidentally omitted in the question (see comment):请注意,我认为问题中不小心遗漏了以下内容(请参阅评论):

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

So what you need is:所以你需要的是:

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

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

Add this to your CSS:将此添加到您的 CSS:

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

Just referencing a child element which in that case is the image.只是引用一个子元素,在这种情况下是图像。

要将图像水平居中,这有效:

<p style="text-align:center"><img src=""></p>

为左右放置一个相等的像素填充:

<div id="artiststhumbnail" style="padding-left:ypx;padding-right:ypx">

Put the picture inside a newDiv .将图片放在newDiv Make the width of the containing div the same as the image.使包含div的宽度与图像相同。 Apply margin: 0 auto;应用margin: 0 auto; to the newDiv .newDiv That should center the div within the container.这应该使容器内的div居中。

Center a image in a div在 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>

I have tried a few ways.我尝试了几种方法。 But this way works perfectly for me但这种方式对我来说非常有效

<img src="~/images/btn.png" class="img-responsive" id="hide" style="display: block; margin-left: auto; margin-right: auto;" />

A responsive way to center an image can be like this:将图像居中的响应方式可以是这样的:

.center {
    display: block;
    margin: auto;
    max-width: 100%;
    max-height: 100%;
}

Use positioning.使用定位。 The following worked for me... (Horizontally and Vertically Centered)以下对我有用......(水平和垂直居中)

With zoom to the center of the image (image fills the div):缩放到图像的中心(图像填充 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;
}

Without zoom to the center of the image (image does not fill the 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;
    }

you can align your content using flex box with minimum code您可以使用 flex box 以最少的代码对齐您的内容

HTML HTML

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

CSS 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 fiddle link https://jsfiddle.net/7un6ku2m/ js 小提琴链接https://jsfiddle.net/7un6ku2m/

yeah, the code like this work fine是的,像这样的代码工作正常

<div>
 <img>
</div>

but just to remind u, the style for image但只是提醒你,图像的风格

object-fit : *depend on u*

so the final code be like Example所以最终的代码就像 Example

<div style="border: 1px solid red;">
    <img
      src="./assets/images/truck-toy.jpg"
      alt=""
      srcset=""
      style="
       border-radius: 50%;
       height: 7.5rem;
       width: 7.5rem;
       object-fit: contain;"
    />
</div>

最后结果

If you have to do this inline (such as when using an input box),如果您必须内联执行此操作(例如使用输入框时),
here is a quick hack that worked for me: surround your (image link in this case)这是一个对我有用的快速技巧:环绕您的(在这种情况下为图像链接)
in a div with style="text-align:center"在带有style="text-align:center"div

<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 */

 .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>

To center a image use this css.要使图像居中,请使用此 css。 You have to give width at first of the image.你必须首先给出图像的宽度。

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

}
<!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>
##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;
}

Style.css样式文件

img#center-img{

 display: block;
 margin: auto;
}

Html html

<html>
  <body>
    <div>
      <img src='pic.png' id='center-img'>
    </div>
  </body>
</html>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM