Хорошим началом для анимации, Ajax и Javascript является использование библиотеки, подобной jQuery .Вы все еще можете использовать меню с реальными URL-адресами, которые переходят на правильный URL-адрес по причинам SEO.Но когда пользователь нажимает эту кнопку, Javascript отменяет реальный запрос и использует Ajax-вызов для получения контента.Небольшой пример использования jQuery:
$(function(){
$("#menu li a").click(function(e){
e.preventDefault(); // Cancel the page change
var _this = $(this);
$.ajax({
url : "/urltogetpagecontent.php",
success : function(result)
{
// Put result in #content div
$("#content").html(result);
// Change page selected, the new LI will have the class selected and it will be removed from the other LI's within #menu
_this.parent().addClass("selected").siblings().removeClass("selected")
}
});
});
});
Таким образом, вы все еще можете использовать исходную навигацию, но отменить обмен страницами.Это будет вызвано при готовности документа и будет привязано к событию click
из #menu li a
.Если вы хотите иметь контент с фиксированной высотой, вы можете поместить свой CSS как #content
следующим образом:
#content
{
height: 600px;
overflow: auto; /* Makes scrollbar when needed */
}
Если вы хотите, чтобы ваш контент скользил.Вы должны окружить DIV, который будет добавлен к вам #content
.Таким образом, структура будет выглядеть примерно так:
<div id="content">
<div class="page">
// Default page
</div>
<div class="page">
// Second page loaded
</div>
</div>
И функция успеха будет выглядеть примерно так:
success : function(result)
{
// Put result in #content div
var result = $(result).hide();
$("#content").append(result);
$("#content page").slideUp(); // Slide old content up
result.stop(true, false).slideDown(); // Slide new content down
// Change page selected, the new LI will have the class selected and it will be removed from the other LI's within #menu
_this.parent().addClass("selected").siblings().removeClass("selected")
}
Приведенный выше пример использует (некоторые материалы для чтения):
- jQuery.ajax
- jQuery.siblings
- jQuery.addClass / jQuery.removeClass
- jQuery.slideDown / jQuery.slideUp
Возможные улучшения:Этот код не использует никакого кэширования, поэтому при повторном нажатии на ссылку он выполняет еще один Ajax-запрос.Вы можете улучшить это, дав классам .page
идентификатор, связанный с #menu li a
.