ChatGPT解决这个技术问题 Extra ChatGPT

如何右对齐 div 元素?

我的 html 文档的主体由 3 个元素组成,一个按钮、一个表单和一个画布。我希望按钮和表单右对齐,画布保持左对齐。问题是当我尝试对齐前两个元素时,它们不再相互跟随而是水平相邻?,这是我到目前为止的代码,我希望表单直接跟随在右侧的按钮之后中间没有空格。

#cTask { 背景颜色:浅绿色; } #button { 位置:相对;浮动:对; } #addEventForm { 位置:相对;浮动:对;边框:2px 实心#003B62;字体系列:verdana;背景颜色:#B5CFE0;左边距:10px; }

您的浏览器不支持画布。


p
pstanton

浮点数没问题,但在 IE 6 和 7 中存在问题。我更喜欢在内部 div 上使用以下内容:

margin-left: auto; 
margin-right: 0;

有关原因的说明,请参见 the IE Double Margin Bug


@ShellNinja 为什么?我知道 0 是有效的,但是 0px 也是有效的......争论你的观点,所以我们学到了一些东西。
省略该单元允许浏览器跳过某些计算以提高性能。如果它是零,为什么要浪费资源计算基于一个单元的布局?无论单位如何,零都是零......人们会认为这个逻辑现在会内置到浏览器中。 link
不能不同意,但我怀疑它对性能的影响很大。编辑。
我无法让它工作,div 仍然左对齐。你能提供一个小提琴或一些(更多)行的html/css吗?
确保您的元素具有 display: block;
M
Mariusz Jamro

您可以制作一个包含表单 & 的 div按钮,然后通过设置 float: right; 使 div 向右浮动。


从没想过我会使用浮动。我尝试了 margin-left: auto; 但这没有用,这让我感到惊讶,因为我试图向右对齐的元素是相对的。
@DFSFOT 相反的事情发生在我身上。预期的 float:right 可以工作,但 margin-left: auto 成功了,谢谢。
这在我的情况下没有效果,但 style="margin-left: auto;margin-right: 0;" 确实有效(感谢@pstanton)。
“浮动:对”等于什么?
@AndreasL。的解决方案很有魅力
M
Michael Bushe

旧答案。更新:使用 flexbox,现在几乎可以在所有浏览器中使用。

我在右边

而且你可以变得更漂亮,简单地说:

更高级:

Left
Middle
Right


它有效,但是当屏幕变小而不是堆叠时,它们会变得非常窄
您需要添加一个媒体查询以在您定义的断点处将 flex-direction 从行更改为列。您可能希望在此示例中更改或删除您的 justify-content,否则事情将向上和向下而不是向左和向右伸展。
对我有用,但我还(在第一个示例中)添加了一个 float:right,因此右侧的段落不会弄乱左侧的行。
这应该是批准的答案。
j
jzilg

您可以使用 flexboxflex-grow 将最后一个元素推到右侧。

<div style="display: flex;">
  <div style="flex-grow: 1;">Left</div>
  <div>Right</div>
</div>

我个人觉得这是 2020 年的正确答案:P
A
Alex

这个问题的其他答案不太好,因为 float:right 可以超出父 div(溢出:对父级隐藏有时可能会有所帮助)并且 margin-left: auto, margin-right: 0 对我来说在复杂的嵌套 div 中不起作用(我没有调查为什么)。

我发现对于某些元素 text-align: right 有效,假设当元素和父元素都是 inlineinline-block 时它有效。

注意:text-align CSS 属性描述了文本等内联内容如何在其父块元素中对齐。 text-align 不控制块元素本身的对齐方式,只控制它们的内联内容。

一个例子:

<div style="display: block; width: 80%; min-width: 400px; background-color: #caa;">
    <div style="display: block; width: 100%">
        I'm parent
    </div>
    <div style="display: inline-block; text-align: right; width: 100%">
        Caption for parent
    </div>
</div>

Here's a JS Fiddle


这对我来说可以将 3 个图像与它们之间的
标签对齐到右侧。
需要明确的是:这不会右对齐 div 本身。两个子 div“父/标题”中的每一个都占据了屏幕的整个宽度,您可以通过设置它们的背景颜色看到。您所做的是对齐其中的文本。
M
Magsafe

如果您有多个要在父 div 的右端并排对齐的 div,请在父 div 上设置 text-align: right;


H
Hanna

你的意思是这样吗? http://jsfiddle.net/6PyrK/1

您可以将 float:rightclear:both; 的属性添加到表单和按钮


A
Armer B.

也许只是:

  margin: auto 0 auto auto;

@SoniSol 哪个链接?
M
MeirDayan

简单的答案在这里:

<div style="text-align: right;">
    anything:
    <select id="locality-dropdown" name="locality" class="cls" style="width: 200px; height: 28px; overflow:auto;">
    </select>
</div>

A
Ali Safari

一种方法是为那些需要向右拉的元素设置一个父 div,然后像下面的示例中所示的那样做其余的事情,使它们右对齐:

.parent-div { 显示:弹性;浮动:对; /*下面:这个目的不需要child-div样式!这只是为了演示:*/ .child-div { text-align: center;背景色:粉蓝色;边距:自动 10px;高度:100px;宽度:50px; }

CANVAS div
child 1
孩子2
...
孩子n


B
Bates550

如果您不必支持 IE9 及以下版本,您可以使用 flexbox 解决此问题:codepen

IE10 和 11 (flexbox support) 也有一些错误,但在此示例中不存在

您可以通过将 <button><form> 包装在具有 flex-direction: column 的容器中来垂直对齐它们。元素的源顺序将是它们从上到下显示的顺序,因此我对它们进行了重新排序。

然后您可以水平对齐表单 &通过将按钮容器与画布包装在具有 flex-direction: row 的容器中。同样,元素的源顺序将是它们从左到右显示的顺序,因此我对它们进行了重新排序。

此外,这将要求您从问题中链接的代码中删除所有 positionfloat 样式规则。

这是上面链接的 codepen 中 HTML 的精简版本。

<div id="mainContainer">
  <div>
    <canvas></canvas>
  </div>
  <div id="formContainer">
    <div id="addEventForm"> 
      <form></form>
    </div>
    <div id="button">
      <button></button>
    </div>
  </div>
</div>

这是相关的CSS

#mainContainer {
  display: flex;
  flex-direction: row;
} 

#formContainer {
  display: flex;
  flex-direction: column;
}

a
anil shrestha

如果您使用的是引导程序,那么:

<div class="pull-right"></div>

我认为您的意思是<div class="text-right"></div>
anil 没有错,“pull-right”类导致“float:right;” (使用 Bootstrap 3.4.1 测试)
J
Jevon
display: flex;
justify-content: space-between;

没有被提及。如果有 2 个元素(即使一个是空 div),它会将一个放在左侧,一个放在右侧。

我在右边


如果我是正确的。您也可以更改为 justify-content: end;所以你不需要 emptyDiv 元素。
是的 flex end 已在另一个答案中说明,但是没有答案提到此方法。这种方法的优点是,如果您想添加更多元素,只要它是其父级的最后一个子级并且行中有足够的空间,它就不会影响“im on the right” div 的位置.
t
titleLogin

有时 float: left 会导致设计问题,在这种情况下,您可以像这样使用 display flex:

.right { 显示:弹性;证明内容:弹性结束;左边距:自动;右边距:0; }


L
Leevansha

您可以简单地使用 padding-left:60% (例如)将您的内容向右对齐,同时将内容包装在响应式容器中(在我的情况下我需要导航栏)以确保它在所有示例中都有效。


N
Nhok V

您只需添加此 css 即可轻松完成:(适用于 IE11)

Right


除非您知道要右对齐的每个元素的确切宽度,否则这不起作用。极其脆弱的解决方案到了不切实际的地步。
M
McGarnagle

我知道这是一篇旧帖子,但您不能直接使用 <div id=xyz align="right"> 吗?

您可以将 right 替换为 left、center 和 justify。

在我的网站上工作:)


请不要使用 HTML 属性来格式化您的页面。这就是 CSS 的用途。实际上,align 属性是 now deprecated
...因此提出这样一个问题的原因以及需要回答它的必要性,因为旧方法不再有效。
哦,哦,这么多负面))