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();