在 div 中右对齐图像的问题

Posted

技术标签:

【中文标题】在 div 中右对齐图像的问题【英文标题】:Problems right-aligning an image in a div 【发布时间】:2021-05-05 03:34:44 【问题描述】:

我正在做一个前端项目。我正在构建这个小部件。我已经完成了大部分布局。我在右对齐 div 内的图像时遇到问题。我试过text-align: right,但它似乎不起作用。我也尝试了引导类text-right,它也没有做任何事情。这里的具体图像是小部件右侧的向右箭头(在 div 内的类zg-collapsedSmallMobileRightArrowCol。我在这里做错了什么?

这里有问题的代码的基本部分是:

.zg-collapsedSmallMobileRightArrowCol 
  border: 1px solid red;


.zg-centerVertically 
  display: flex;
  align-items: center;
<div class="col zg-collapsedSmallMobileRightArrowCol zg-centerVertically">
  <img src="https://i.imgur.com/RHSuTQw.png" onclick="advanceReview(1)">
</div>

.col 在这种情况下是同名的 bootstrap4 类。

虽然上面有一个小代码示例,但整个代码集可在以下 JSFiddle 中获得。您可能需要整套代码来找出问题所在。

JSFiddle:

https://jsfiddle.net/meawr0tn/1/

【问题讨论】:

PS:您无法将图像与text-align 对齐。它不是文本元素。您可以使用float 对齐它或将其更改为块级元素:display: block; 谢谢,我添加了基本的 CSS,但我感觉需要整个 JSFiddle 才能真正得到答案。关于文本对齐,根据这个***,您可以在图像上使用文本对齐:***.com/questions/7745232/… 是的,如果适用某些代码,则可以使用 text-align 将图像向右对齐。但是,它需要一个宽度比图像本身更大的容器。 好的。在这种情况下,图像位于容器内。特别是zg-collapsedSmallMobileRightArrowCol。没有为此容器指定硬编码宽度。在 jsfiddle 中渲染时,您可以看到图像右侧有足够的空间。那么您是说如果我将父容器的硬编码宽度指定为大于图像宽度的大小,那么它将与text-align: right 一起使用? 【参考方案1】:

display: flex; 正在阻止使用text-align: right;。您可以使用justify-content: flex-end; 将该箭头向右对齐。添加:.zg-centerVertically:last-child justify-content: flex-end; 只操作最后一个可以在你的小提琴中工作的弹性项目。

.zg-collapsedSmallMobileRightArrowCol 
  border: 1px solid red;


.zg-centerVertically 
  display: flex;
  align-items: center;
  justify-content: flex-end;


/* aligns the picture of your last flex item to the right sides */
.zg-centerVertically:last-child 
  justify-content: flex-end;


/* adds a margin to the right side of the picture of the last flex item */
.zg-centerVertically img:last-child 
  margin-right: 15px;
<div class="col zg-collapsedSmallMobileRightArrowCol zg-centerVertically">
  <img src="https://i.imgur.com/RHSuTQw.png" onclick="advanceReview(1)">
</div>

【讨论】:

非常感谢!这行得通。这个答案被接受的唯一原因是它解释了text-align: right 不起作用的原因。谢谢! 我用你的小提琴测试了它。要只影响最后一个元素而不影响第一个元素,您必须使用 last-child 选择器:.zg-centerVertically:last-child justify-content: flex-end; 另外,一个后续问题。如果我想要箭头右侧的 15px 填充,它可以与 justify-content: flex-end CSS 一起使用吗? 是的,只需在图像右侧添加边距即可。我也编辑了代码以满足该要求。【参考方案2】:

使用justify-content:flex-end

.zg-collapsedSmallMobileRightArrowCol 
  border: 1px solid red;


.zg-centerVertically 
  display: flex;
  align-items: center;
justify-content:flex-end;
<div class="col zg-collapsedSmallMobileRightArrowCol zg-centerVertically">
  <img src="https://i.imgur.com/RHSuTQw.png" onclick="advanceReview(1)">
</div>

【讨论】:

以上是关于在 div 中右对齐图像的问题的主要内容,如果未能解决你的问题,请参考以下文章

CSS img align:如何在 DIV 中设置 img 中右对齐

将divs左中右对齐并实现时阻止行为

div 在大型设备上左右对齐,堆叠在小型设备上 [重复]

在 div 的中心水平对齐多个图像

在固定大小的 div 中垂直对齐中心图像

将 div 与图像的右边缘对齐