JSFiddle - React, Tailwind, and code Playground
by Ken Watanabe
HTML
<div id="wrapper">
<header>
<h1>HEADER</h1>
</header>
<div id='menu'>
<a href='page1.php'>Item 1</a>
<a href='page2.php'>Item 2</a>
<a href='page3.php'>Item 3</a>
</div><div id='main-content'>
Hola, this is content 1
<img class="ajax-loader" src="ajax-loader.gif" alt="loading..." />
</div><footer>
<h1>FOOTER</h1>
</footer>
</div>
CSS
body
{
font-family: Arial;
}
*
{
margin:0;
padding: 0;
}
#wrapper
{
width: 60%;
margin: 0 auto;
}
#main-content
{
min-height: 500px;
margin-top: 40px;
background-color: #2b2b2b;
padding: 20px;
color: #fff;
position: relative;
}
header
{
margin-bottom: 50px;
padding-top: 20px;
}
a
{
text-decoration: none;
text-transform: uppercase;
margin-right: 20px;
color: #2b2b2b;
}
footer
{
margin-top: 20px;
}
img.ajax-loader
{
position: absolute;
top: 45%;
left: 45%;
display: none;
}
JavaScript
$.cergis = $.cergis || {};
$.cergis.loadContent = function () {
$('.ajax-loader').show();
$.ajax({
url: pageUrl + '?type=ajax',
success: function (data) {
$('#main-content').html(data);
// hide ajax loader
$('.ajax-loader').hide();
}
});
if (pageUrl != window.location) {
window.history.pushState({ path: pageUrl }, '', pageUrl);
}
}
$.cergis.backForwardButtons = function () {
$(window).on('popstate', function () {
$.ajax({
url: location.pathname + '?type=ajax',
success: function (data) {
$('#main-content').html(data);
}
});
});
}
$("a").on('click', function (e) {
pageUrl = $(this).attr('href');
$.cergis.loadContent();
e.preventDefault();
});
$.cergis.backForwardButtons();