Skip to content

Instantly share code, notes, and snippets.

@Simounet
Created April 20, 2012 08:23
Show Gist options
  • Save Simounet/2427107 to your computer and use it in GitHub Desktop.
Save Simounet/2427107 to your computer and use it in GitHub Desktop.
Navbar menu auto align subitems
<ul>
<li class="opened">
<a href="">Item 1</a>
<ul class="submenu">
<li>Sub item 1</li>
<li>Sub item 2</li>
<li>Sub item 3</li>
<li>Sub item 4</li>
</ul>
</li>
<li>
<a href="">Item 2</a>
<ul class="submenu">
<li>Sub item 1</li>
<li>Sub item 2</li>
<li>Sub item 3</li>
<li>Sub item 4</li>
</ul>
</li>
<li>
<a href="">Item 3</a>
<ul class="submenu">
<li>Sub item 1</li>
<li>Sub item 2</li>
<li>Sub item 3</li>
<li>Sub item 4</li>
</ul>
</li>
</ul>
function submenuAlign() {
var activePositionLeft = $(".opened").position().left;
var activeWidth = $(".opened").width();
// console.log( 'left: ' + activePositionLeft + ' width: ' + activeWidth);
$(".opened").children().each(function(){
if( $(this).hasClass('submenu') ) {
var submenuWidth = $(this).width();
// console.log( 'submenuwidth: ' + submenuWidth);
var liSum = 0;
$(this).children().each(function() {
liSum = liSum + $(this).width();
});
var dangerZone = liSum + activePositionLeft;
// console.log( 'danger zone: ' + dangerZone );
if (dangerZone > submenuWidth) {
$(this).addClass("right");
} else {
$(this).css('margin-left', activePositionLeft + 'px');
}
}
});
}
.right { width: auto; left: auto; right: 0; }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment