Вот общий обзор того, как вы можете создать подобный эффект:
Создать меню, каждый пункт меню находится в отдельном div. Подчеркивание может быть изображением, абсолютно расположенным под первым пунктом меню. У каждого пункта в меню есть функция наведения. Эта функция изменит позицию подчеркивания (влево или вправо), по одному пикселю за раз. Чтобы получить эффект крутого слайда, который ускоряется или замедляется при движении, я бы порекомендовал использовать встроенный плагин.
поэтому пункты меню будут выглядеть примерно так:
<div id="menuitem2" onmouseover="movesliderto('45');">
Сценарий будет выглядеть примерно так:
var currentpos= '0'; //initial position
function movesliderto(newposition){
if (currentpos<newposition){ //moving the slider to the right
for (var i=currentpos; i<newposition; i++) {
document.getElementById('underline').style.left += 1;
} else { //moving the slider to the left
for (var i=newposition; i<currentpos; i++) {
document.getElementById('underline').style.left -= 1;
}
}
и, конечно, вы бы хотели, чтобы каждая итерация foreach занимала пару миллисекунд, поэтому вы хотели бы поместить ее в синхронизируемую функцию.