Stworzyłem funkcję javascript, która sprawdza, czy ma wystarczająco dużo miejsca po prawej stronie. Jeśli tak, pokaże go po prawej stronie, w przeciwnym razie pokaże go po lewej stronie
Przetestowano w:
- Firefox (Mac)
- Chorme (Mac)
- Safari (Mac)
JavaScript:
$(document).ready(function(){
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 });
}
});
});
ponieważ nie chcę dodawać tej poprawki do wszystkich pozycji menu, utworzyłem dla niej nową klasę. ustaw stałe menu na ul:
<ul class="dropdown-menu fixed-menu">
Mam nadzieję, że ci się to uda.
ps. mały błąd w Safari i Chrome, pierwsze najechanie kursorem spowoduje, że mutch po lewej zaktualizuje ten post, jeśli go naprawię.