This is a fragment-indentifier based menu site.
What it basically does is it follows the #hash
in the address bar and then changes CSS from display:none
to display:block for the id it is referencing.
For more detail see the howto page.
This file is mirrored on github
Make a class and name it anything. If you look at the
source of this page you'll see I named it "content".
For its CSS define this
Now, every element with this class name will
not be displayed. So, now make it show when targeted
Now in the body make as many elements with that
classname as you want and give each of them an id
as if it were a page on a site, like
home about contact etc
<div id="about" class="content">
And point to it with a link in a menu of some sort
<a href="#about">about us</a>
And now when you click on it, the fragment identifier
(the hash in the address) changes to #page and
the element with the id of #about turns from
Make as many of these as you want, when you click
on one it changes the hash and replaces the targeted
element with the new value of the hash.
One thing though: if there's no hash at initial
opening of the site then there is no element shown.
location.hash.length == 0 ? location.hash = '#about' : null;
to circumvent that but if you're trying to avoid using js
then you have to rely on linking the site with the initial
hash in the link or design the site so that everything
is revolving around the menu that links to the pages.