Eu criei uma função javascript que verifica se ele tem espaço suficiente no lado direito. Se tiver, ele vai mostrar no lado direito, senão ele vai mostrar no lado esquerdo
Testado em:
- Firefox (mac)
- Chorme (mac)
- Safari (mac)
Javascript:
$(document).ready(function(){
//little fix for the poisition.
var newPos = $(".fixed-menuprofile .dropdown-submenu").offset().left - $(this).width();
$(".fixed-menuprofile .dropdown-submenu").find('ul').offset({ "left": newPos });
$(".fixed-menu .dropdown-submenu").mouseover(function() {
var submenuPos = $(this).offset().left + 325;
var windowPos = $(window).width();
var oldPos = $(this).offset().left + $(this).width();
var newPos = $(this).offset().left - $(this).width();
if( submenuPos > windowPos ){
$(this).find('ul').offset({ "left": newPos });
} else {
$(this).find('ul').offset({ "left": oldPos });
}
});
});
porque não quero adicionar essa correção em todos os itens de menu, criei uma nova classe nele. coloque o menu fixo no ul:
<ul class="dropdown-menu fixed-menu">
Espero que isso funcione para você.
ps. pequeno bug no safari e no cromo, primeiro passe o mouse para colocá-lo para mutch à esquerda para atualizar este post se eu corrigi-lo.