使用文本对齐中心的中心图像?

Web*_*ner 491 html css

该属性text-align: center;是使用CSS居中图像的好方法吗?

img {
    text-align: center;
}
Run Code Online (Sandbox Code Playgroud)

Mrc*_*ief 1047

这不起作用,因为text-align属性适用于块容器,而不是内联元素,并且img是内联元素.请参阅W3C规范.

请改用:

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

  • 我尝试了这种方法,它的工作原理!但是当我尝试2张图像时,它不起作用,它只是像图腾一样堆叠在一起,任何想法如何在中间的同一条线上对齐2张图像? (5认同)
  • @Mrchief图像是内联元素,而不是块.`text-align`也适用于它们. (4认同)
  • 那种解释有点奇怪不是吗?你说'text-align'适用于块而不是内联,我相信,然后你真的将它改为块元素,但避免使用text-align.我的意思是你的代码有效,但该段需要完全重写,imo. (4认同)
  • @PatrickSerrano:看到这个答案:http://stackoverflow.com/a/11819439/244353 (2认同)

cod*_*nap 112

这并不总是有效...如果没有,请尝试:

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


Sha*_*.io 84

遇到这篇文章,它对我有用:

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

(垂直和水平对齐)

  • 仅当父div为position:relative时才有效; (22认同)

小智 48

另一种做法是围绕一个封闭的段落:

<p style="text-align:center; border:1px solid black"><img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a"></p>
Run Code Online (Sandbox Code Playgroud)

  • 我不同意,我认为这确实回答了这个问题.OP询问属性`text-align:center`是否是一个使图像居中的好方法,并且_did不指定_该属性必须是img标记的一部分.这个答案使用有问题的属性来努力提供解决方案(确实有效). (19认同)
  • 当显示时,这对我有用:块等不会. (2认同)

Cod*_*key 14

实际上,代码的唯一问题是该text-align属性适用于标记内的文本(是的,图像计为文本).您可能希望span在图像周围添加标记并将样式设置为text-align: center,如下所示:

span.centerImage {
     text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
<span class="centerImage"><img src="http://placehold.it/60/60" /></span>
Run Code Online (Sandbox Code Playgroud)

图像将居中.在回答您的问题时,只要您记得将规则应用于包含span(或div)的图像,这是最简单,最简单的图像居中方式.

  • `span`元素是`display:inline;`默认情况下,所以这会遇到与`img`本身放置`text-align:center;`相同的问题.您必须将`span`设置为`display:block;`或将其替换为`div`才能生效. (2认同)

Dim*_*tis 14

你可以做:

<center><img src="..." /></center>

  • 不幸的是,html5不支持`<center>`,但该死,它有效. (9认同)

Ami*_*ali 10

我可以建议使用三种方法来对中元素进行居中.

  1. 使用text-align财产

        .parent {
        text-align: center;
    }
    Run Code Online (Sandbox Code Playgroud)
        <div class="parent">
        <img src="https://placehold.it/60/60" />
    </div>
    Run Code Online (Sandbox Code Playgroud)

  2. 使用margin财产

    img {
        display: block;
        margin: 0 auto;
    }
    Run Code Online (Sandbox Code Playgroud)
    <img src="https://placehold.it/60/60" />
    Run Code Online (Sandbox Code Playgroud)

  3. 使用position财产

    img {
        display: block;
        position: relative;
        left: -50%;
    }
    .parent {
        position: absolute;
        left: 50%;
    }
    Run Code Online (Sandbox Code Playgroud)
    <div class="parent">
        <img src="https://placehold.it/60/60" />
    </div>
    Run Code Online (Sandbox Code Playgroud)


第一种和第二种方法仅在父亲至少与图像一样宽的情况下才有效.当图像比其父图像宽时,图像将不会保持居中!

但是:第三种方法是一种很好的方法!

这是一个例子:

img {
    display: block;
    position: relative;
    left: -50%;
}
.parent {
    position: absolute;
    left: 50%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent">
    <img src="http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/img_01.jpg" />
</div>
Run Code Online (Sandbox Code Playgroud)


Ray*_*oal 8

只有你需要支持古老的IE浏览器.

现代的方法是margin: 0 auto在你的CSS中做.

示例:http://jsfiddle.net/bKRMY/

HTML:

<p>Hello the following image is centered</p>
<p class="pic"><img src="https://twimg0-a.akamaihd.net/profile_images/440228301/StackoverflowLogo_reasonably_small.png"/></p>
<p>Did it work?</p>
Run Code Online (Sandbox Code Playgroud)

CSS:

p.pic {
    width: 48px;
    margin: 0 auto;
}
Run Code Online (Sandbox Code Playgroud)

只发出ihere是段落的宽度必须与图像的宽度相同.如果您没有在段落上放置宽度,它将无法工作,因为它将采用100%并且您的图像将向左对齐,除非您当然使用text-align:center.

如果你愿意,试试小提琴并试试它.


小智 7

在保存图像的容器上,您可以使用 CSS 3 Flexbox将图像在垂直和水平方向完美地居中。

假设您将 <div class="container"> 作为图像持有者:

然后作为 CSS 你必须使用:

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

这将使您在这个 div 中的所有内容完全居中。


Bai*_*aig 6

如果您正在使用带有图像的类,那么以下操作就可以了

class {
    display: block;
    margin: 0 auto;
}
Run Code Online (Sandbox Code Playgroud)

如果它只是你想要居中对齐的特定calss中的图像,那么下面将会这样做

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


Dre*_*ADH 6

img{
    display: block;
    margin-right: auto;
    margin-left: auto;      
 }
Run Code Online (Sandbox Code Playgroud)


Pan*_*gic 5

我找到的最简单的解决方案是将其添加到我的 img-element 中:

style="display:block;margin:auto;"
Run Code Online (Sandbox Code Playgroud)

似乎我不需要像其他人建议的那样在“自动”之前添加“0”。也许这是正确的方法,但它在没有“0”的情况下也能很好地满足我的目的。至少在最新的 Firefox、Chrome 和Edge 上