float does not work in a flex container
If this footer is only to contain a right-aligned item, you can simply apply justify-content: flex-end
to the flex container. This way, you do not have to add any styles to its children.
footer {
display: flex;
justify-content: flex-end;
}
Codepen example
The float
property is ignored in a flex container.
From the flexbox specification:
3. Flex Containers: the
flex
andinline-flex
display valuesA flex container establishes a new flex formatting context for its contents. This is the same as establishing a block formatting context, except that flex layout is used instead of block layout.
For example, floats do not intrude into the flex container, and the flex container’s margins do not collapse with the margins of its contents.
float
andclear
do not create floating or clearance of flex item, and do not take it out-of-flow.
Instead, just use flex properties:
footer {
display: flex;
justify-content: flex-end;
}
<footer>
<span>
<a>foo link</a>
</span>
</footer>
If you have more items in the footer, and need other alignment options, then here are two guides:
- In CSS Flexbox, why are there no "justify-items" and "justify-self" properties?
- How does flex-wrap work with align-self, align-items and align-content?
It works if you add margin-left: auto;
like I did here in the jsfiddle: https://jsfiddle.net/dhsgvxdx/3/
<body>
<footer style="display: flex;">
<span style="text-align: right;float: right; margin-left: auto;">
<a>foo link</a>
</span>
</footer>
</body>
By default, flex items are laid out in the source order. However, the order property controls the order in which they appear in the flex container.
.item {
order: 3; /* default is 0 */
}