Horizontal Menu with a Dynamic Number of Elements Fit As 100% Evenly
September 6th, 2012
Yikes, that title is a mouthful. So why would one need a menu that has elements fit as 100%? Well, for aesthetic reasons primarily. Unfortunately (fortunately), since tables are no longer around, this has been a big issue for some web designers – especially for those who design for content management platforms or sites that have a menu that changes a lot. Sure, it’s easy to hard code widths in for each menu, but this breaks each time you want to add or remove a item from your menu. Here’s the solution:
Demo
Code
HTML
<div id="menu"> <ul> <li><a href="#">Menu 1</a></li> <li><a href="#">Menu 2</a></li> <li><a href="#">Menu 3</a></li> <li><a href="#">Menu 4 (BIG TITLE!)</a></li> <li><a href="#">Menu 5</a></li> </ul> </div>
CSS
body { text-align:center; margin:0 auto; width:500px; } #menu { width:100%; background:#999; display:table; } #menu ul li { display:table-cell; } #menu ul { display:table-row; } #menu a { display:block; }
As you can see, this method uses some style-trickery to mimic the functionality of tables within a menu list. Menu #4 showcases the great flexibility this method offers. So go ahead, add menu items, remove some, make them big and small – and most importantly, never hard code widths again.
Leave a Reply