I have a top bar for a mobile website which looks like this:
The user can open a personal menu by clicking his/her name.
When the name of the person is very long (blue bar) I want to shorten it using text-overflow: ellipsis
.
I got that to work (looks like the blue bar) but now if I have a short name the arrow icon is shown on the right (red bar). I want to keep the arrow next to the name and the remaining whitespace on the right of the arrow, as in the green bar.
I don't want to set a width or max-width to any of the elements (except maybe the button) because I want it to work on different mobile devices, therefore the available width is unknown.
Is there any way to achieve this with just HTML and CSS? What I have done so far:
HTML
<button>Log off</button>
<div id="menu">
<span id="icon">+</span>
<span id="name">John Withthelonglastname</span>
</div>
CSS
#name {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
#icon { float:right;}
button { float: right;}
Fiddle here: http://jsfiddle.net/webwolfe/L07t0zk7/
You can easily achieve this with HTML and CSS by using Flex:
Take note of FlexyBoxes as a fiddler to play with its settings.
P.S: it is better to use classes instead of IDs for general purpose elements