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>
The float CSS property places an element on the left or right side of its container, allowing text and inline elements to wrap around it. The element is removed from the normal flow of the page, though still remaining a part of the flow (in contrast to absolute positioning).
Since span tags are inline, not block elements. They can only take margin left and right, not top and bottom.
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With