How To Create A Dynamic Width Column In Twitter Bootstrap
Solution 1:
Table like structure using the old table tag
Just kidding - or am i not.
<tableclass="table"><tr><th>Id</th><th>Name</th><th>Email address</th></tr><tr><td>100001</td><td>Joe</td><td>MamiePVillalobos@teleworm.us</td></tr><tr><td>100</td><td>Christine</td><td>ChristineJWilliams@dayrep.com</td></tr><tr><td>1001</td><td>John</td><td>JohnLMiley@dayrep.com</td></tr></table>
Using the grid system
In the documentation about the bootstrap grid system i could not find any auto-width building blocks. Everything out of the box has a certain width and a fixed number of columns:
<divclass="row"><divclass="span2">ID</div><divclass="span2">Name</div><divclass="span8">E-Mail</div></div><divclass="row"><divclass="span2">100001</div><divclass="span2">Joe</div><divclass="span8">MamiePVillalobos@teleworm.us</div></div><divclass="row"><divclass="span2">100</div><divclass="span2">Christine</div><divclass="span8">ChristineJWilliams@dayrep.com</div></div>
Therefore i assume that you have to build your own version for a 3-column-table with auto-size.
In my demo the grid-column wraps if the space is to narrow or, if the space is too wide, the columns are stretched.
Update with creative markup
I updated my demo with a custom class. The creative markup comes close to what you are looking for
<divclass="row"><divclass="spanFl">100000001 <br />
100
</div><divclass="spanFl">Joe <br/>
Christine
</div><divclass="spanFl">MamiePVillalobos@teleworm.us <br />
ChristineJWilliams@dayrep.com
</div></div>
Using css-3 display table
On tutsplus i found an article using css-3 display:table
to set up a table like layout. Unless you use three divs for each row it does not solve row wrapping issues.
#content {
display: table;
}
#mainContent {
display: table-cell;
width: 620px;
padding-right: 22px;
}
aside {
display: table-cell;
width: 300px;
}
Bootstrap responsive design
As far as i understood the bootstrap documentation there is no built-in soultion for a 3-column layout with auto and remaining width. To Quote the responsive design page on bootstrap: "Use media queries responsibly and only as a start to your mobile audiences. For larger projects, do consider dedicated code bases and not layers of media queries."
Could you elaborate more why you can not use a table?
Solution 2:
As others said, you should use regular tables where they make sense. Also, CSS3 display:table can be a good solution.
Depending on the use case, there is a different solution you could consider: https://github.com/donquixote/bootstrap-autocolumns/blob/master/bootstrap-autocolumns.css This is a piece of CSS that adds "col-sm-auto" in addition to "col-sm-1", "col-sm-5" etc.
(Atm, I would recommend to just copy this to a custom css file and adjust to your needs.)
Example
<divclass="row"><divclass="col-xs-auto">Left</div><divclass="col-xs-auto-right">Right</div><divclass="col-middle">Middle</div></div>
Here is a fiddle: http://jsfiddle.net/9wzqz/
Idea
- .col-*-auto floats to the left, with the typical padding, but without any explicit width setting.
- .col-*-auto-right floats to the right instead.
- .col-middle has display:table, which prevents it from floating around the other elements.
- Use "xs", "sm", "md", "lg" to target specific screen widths.
Limitations
The left/right columns will expand to full width, if you fill them with long text. Better use them for fixed-width stuff like images.
The middle column will only take the full available width if it has enough content in it.
Solution 3:
if you don't need to limit the column size, you can just disable the width.
<spanclass="col-xs-1"style="width: inherit !important; ">unknown ...</span>
I need the bootstrap definition for the other column's properties (padding, height, etc.), so I added a col definition, but a small unit (col-xs-1).
notes:
- the "!important" clause might be dropped (i'm not sure)
- In my project the texts are known to be small anyway.
Solution 4:
Well according To bootstrap Documentation
you can apply table-responsive
css class to the table element and make it responsive. What I observed was it actually makes scroll-able.
Post a Comment for "How To Create A Dynamic Width Column In Twitter Bootstrap"