Skip to content Go to Sitemap

Code Snippets

JavaScript snippets

Same header/footer on every page

You can load your header/footer via javascript. This is helpful so you don't have to update the code for your header/footer on every single page when you make a change.

Read...

Automatic Tab Title Suffix

for example, changing "about me" in the browser tab to "about me | your site name"

Show/Hide

const tabTitle = document.title; 
if (tabTitle !== "YOUR HOME TITLE") { 
	document.title = tabTitle + " | some text"; 
}

The if makes sure that the title of your homepage doesn't end up like "site name | site name"

Highlight active links

You can give the class "active" to any active navigation links automatically

Show/Hide

const linkElements = document.querySelectorAll("nav a");
[...linkElements].forEach((el) => {
  const href = el.getAttribute("href").replace(".html", "").replace("/public", "");

  if (href == "/" || href == "/index.html") {
    if (window.location.pathname == "/") {
      el.classList.add("active");
    }
  } else {
    if (window.location.href.includes(href)) {
      el.classList.add("active");
    }
  }
});

(You will need to change the selector for your navigation links (default: "nav a").)


Automatic Table of Contents

(example on this page)

Show/Hide

In your HTML, add this line whereever you want it to be:


<div id="toc"></div>

The JavaScript:


const container = document.querySelector("#toc");
if (!container) return;
const allHeadings = document.querySelectorAll("h2");
if (allHeadings.length < 2) return;
let output = "<b>Table of Contents:</b><ol>";
[...allHeadings].forEach((headingEl) => {
	const title = headingEl.innerHTML;
	const link =
	      headingEl.getAttribute("id") ||
	      encodeURI(
	        title
	          .replaceAll(" ", "-")
	          .replaceAll("#", "")
          	  .replaceAll("&", "")
	          .replaceAll(/<[^>]*>?/gm, "")
          	  .replaceAll("--", "-")
	      ).toLowerCase();
	headingEl.setAttribute("id", link);
	output += `<li><a href="#${link}">${title}</a></li>`;
});
container.innerHTML = output + "</ol>";

Change the selector (default: "h2") to any selector that targets the headings you want to turn into the table of contents.

You can override the automatically generated ID of a heading by simply setting a custom one in the HTML.

Automatic Redirect

Show/Hide

Similar behavior as an HTTP redirect (= not in browser history):

window.location.replace("https://petrapixel.neocities.org/");

or

Similar behavior as clicking on a link (= in browser history):

window.location.href = "https://petrapixel.neocities.org/";

HTML/CSS Snippets

Color Filter over Image

(examples see here)

Show/Hide

HTML:


<div class="pink-image"><img src="..." /></div>

CSS:


.pink-image {
  position: relative;

  img {
    filter: brightness(1.1) contrast(1.3);
  }

  &::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    top: 0;
    background: pink;
    opacity: 0.25; 
    pointer-events: none;
  }
}

You can adjust the filters, the background color and the opacity of the background color.