In a Bootstrap 3 list-group-item
, I have an icon, some text, and two icons / buttons that should float right.
I tried this:
<a class="list-group-item" ng-click="handleClick()"> <span class="glyphicon glyphicon-file"></span> Some text goes here <button class="btn btn-xs btn-warning pull-right" ng-click="handleButtonClick()"><span class="glyphicon glyphicon-trash"></span></button> <some:custom:span></some:custom:span> </a>
This works great if the result fits in one line:
It also works when the window is so thin that the actual text does not fit in one line:
However, if the windows allows the text to stay in one line, but there is not enough space for the pull-right spans, things get messed up:
What I'd actually want is that the pull-right
spans start a new line and align right, and the list-group-item
extends vertically for them to fit. How can I achieve that?
To keep the buttons aligned wrap a new element around them and float the wrapping element. Then clear the float
on list items with the .clearfix
class to fix their height.
<div class="list-group"> <a href="#" class="list-group-item clearfix"> <span class="glyphicon glyphicon-file"></span> Lorem ipsum dolor sit amet, consectetur adipisicing elit. <span class="pull-right"> <button class="btn btn-xs btn-info">CCS</button> <button class="btn btn-xs btn-warning"> <span class="glyphicon glyphicon-trash"></span> </button> </span> </a> </div>
See live example here: http://jsfiddle.net/cdog/EpG7x/.
However, placing buttons within a link is not valid according to the HTML5 specification from W3C.
The
a
element may be wrapped around entire paragraphs, lists, tables, and so forth, even entire sections, so long as there is no interactive content within (e.g. buttons or other links).
A similar result can be achieved using panels with tables instead.
<div class="panel panel-default"> <table class="table table-hover"> <tbody> <tr> <td> <span class="glyphicon glyphicon-file"></span> Lorem ipsum dolor sit amet, consectetur adipisicing elit. </td> <td class="text-right text-nowrap"> <button class="btn btn-xs btn-info">CCS</button> <button class="btn btn-xs btn-warning"> <span class="glyphicon glyphicon-trash"></span> </button> </td> </tr> </tbody> </table> </div>
To prevent content inside a cell from wrapping, you can use the .text-nowrap
class (added in Bootstrap v3.2.0).
See live example here: http://jsfiddle.net/cdog/6mFDH/.
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