Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to display navigation tabs with the desired border? Table, list, something else?

Diagram

See the picture above. Each navigation tab needs to have 2 pixels separation on either side and line up exactly with the header image on the edges.

Now they would like to introduce a 5th navigation tab (and possibly a 6th). Is it possible to code this in a way where you could stick a 5th or 6th tab in there and everything would resize appropriately with lists or tables or some other solution? Still keeping the 2 pixels separation and lining up with the edges exactly? I wasn't sure if it was possible or you would just have to define the widths each time for each tab based on the math involved to line it all up correctly flush with the edges.

like image 589
Steve Avatar asked Dec 06 '25 04:12

Steve


1 Answers

I think the best way is to emulate table behavior with CSS. So you can use a list, and still get table behavior.

ul {
    display:table;
}
li {
    display:table-cell;
}

Here is a demo displaying this with CSS and proper markup. Here's a demo of how it looks with an actual table. I'm not certain on IE<8 support for this CSS, so it may be something to be aware of.

UPDATE: Confirmed: This is not supported on IE6 or 7 natively. You may be stuck with tables or hard-coded widths if you want to support those browsers. There may be a javascript fix to support these display values but I'm not aware of it.

EDIT: I realized my demos were sloppy, so I made another that actually addresses your point about the margins, it uses the :first-child selector to remove the margin from the first link, giving the evenly distributed appearance. http://jsfiddle.net/wesley_murch/pe6wd/3/

like image 136
Wesley Murch Avatar answered Dec 07 '25 19:12

Wesley Murch



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!