HTML浮动右元素顺序

如果我有三个元素右alignment,为什么顺序如下(见jsfiddle)元素1是第一个元素在右侧,当元素3实际上是最后一个元素。

订单现在

[3] [2] [1] 

但元素是在这个顺序在HTML

 [1] [2] [3] 

为什么?

http://jsfiddle.net/A9Ap7/

这个“倒序”是预期的结果。

如果你愿意的话,你可以在CSS规范中进行挖掘,但是你的例子应该像它应该那样渲染。

如果您希望它们按照与标记相同的顺序显示,请将.container浮动右侧,其子项离开。

更新了jsfiddle

第一个元素向右移动,当它碰到容器边缘时停止,并允许下一个元素向左移动。

第二个元素然后执行相同的操作,除非它碰到第一个元素的左边缘时停止。

… 等等。

使用浮动或任何其他CSS属性对html源代码没有影响。

在浮动元素之后的任何元素将在另一侧的浮动元素周围stream动。

如果将图像浮动到左侧,则其后的任何文本或其他元素将向右stream动。 如果将图像向右浮动,则任何文字或其后的元素都将stream向左侧。

float属性开始它的分析从最右边到最左边。
例如:

 <div class="block block-1"></div> <div class="block block-2"></div> <div class="block block-3"></div> 

有了这个规则:

 .block { float: left; } 

block-3被alignment到左边,我们有: block-3, block-1, block-2
block-2被alignment到左边,我们有: block-2, block-3, block-1
block-1alignment到左边,我们有: block-1, block-2, block-3

有了这个规则:

 .block { float: right; } 

block-3被alignment到右边,我们有: block-1, block-2, block-3
block-2被alignment到右边,我们有: block-1, block-3, block-2
block-1alignment到右边,我们有: block-3, block-2, block-1

如果你想让它们float:right按照正确的顺序: block-1, block-2, block-3
那么你应该把它们换成标记

 <div class="block block-3"></div> <div class="block block-2"></div> <div class="block block-1"></div> 

更新:或者将它们全部包装在父项中,并且只浮动父项

如果两个元素都设置为相同的方向(在本例中为右),那么出现在我们的HTML(不是CSS!)中的第一个元素是靠近边的远侧的元素。

这是因为在你的html中,你已经指定[元素1]首先显示在右边。 因此,这正是浏览器呈现的内容。 当你在html中继续显示[元素2]时,浏览器会执行此操作,但在给出[元素1]优先级显示在右边的时候,[元素1]在HTML中首先出现。

希望这是有道理的。