Can you float to the right of a span?

In below code I want up and down to float to right of the red line but they float past it to the div.

Why is this?

#outer {
  margin-top: 50px;
  margin-left: 50px;
  width: 300px;
  border: 1px solid lightgrey;
}

.inner {
  border: 1px solid red;
  padding: 15px 80px 15px 40px;
  position: relative;
}

.up, .down {
  border: 1px solid #000;
  float: right;
}

.down {
  clear: both;
}
<div id="outer">
  <span class="inner">
    <span class="quantity">Quantity</span>
    <span class="up">up</span>
    <span class="down">down</span>
  </span>
</div>

If you check the documentation you will read this:

As float implies the use of the block layout , it modifies the computed value of the display values, in some cases:

在这里输入图像描述

Which means that your floated span become block elements inside an inline element that breaks your layout.

You can also notice that padding-top / padding-bottom and border-top / border-bottom doesn't affect the height of the outer div. This is because only the line-height is used when calculating the height of the line boxref; thus the height of the outer div is equal to the height of the line box. (you may increase the line-height to see the difference)

In order to fix both issues, you can change the display of the .inner span to inline-block :

#outer {
  margin-top: 50px;
  margin-left: 50px;
  width: 300px;
  border: 1px solid lightgrey;
}

.inner {
  border: 1px solid red;
  padding: 15px 0 15px 40px; /*remove padding-right to have them close to the red line*/ 
  position: relative;
  display:inline-block;
}

.up, .down {
  border: 1px solid #000;
  float: right;
}

.down {
  clear: both;
}
<div id="outer">
  <span class="inner">
    <span class="quantity">Quantity</span>
    <span class="up">up</span>
    <span class="down">down</span>
  </span>
</div>
链接地址: http://www.djcxy.com/p/3742.html

上一篇: 用户认证库为node.js?

下一篇: 你可以漂浮在跨度的右侧吗?