560 lines
19 KiB
HTML
560 lines
19 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" dir="ltr" id="page-top">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
|
|
|
|
<meta property="og:title" content="June 2023 Leilukin's Hub Layout Rewrite | Blog">
|
|
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="description" content="The HTML, CSS and JavaScript of my entire website have been rewritten in June 2023 to improve its layout.">
|
|
<meta name="generator" content="Eleventy v2.0.1">
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:url" content="https://leilukin.neocities.org/blog/posts/2023-06-23-june-2023-leilukins-hub-layout-rewrite/">
|
|
<meta property="og:site_name" content="Leilukin's Hub">
|
|
<meta property="og:locale" content="en_MY">
|
|
<meta property="og:description" content="The HTML, CSS and JavaScript of my entire website have been rewritten in June 2023 to improve its layout.">
|
|
<meta name="twitter:card" content="summary">
|
|
<meta name="twitter:url" content="https://leilukin.neocities.org/blog/posts/2023-06-23-june-2023-leilukins-hub-layout-rewrite/">
|
|
<meta name="twitter:description" content="The HTML, CSS and JavaScript of my entire website have been rewritten in June 2023 to improve its layout.">
|
|
<link rel="canonical" href="https://leilukin.neocities.org/blog/posts/2023-06-23-june-2023-leilukins-hub-layout-rewrite/">
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="/assets/css/main.css">
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="/assets/fonts/noto-sans/noto-sans.css">
|
|
|
|
|
|
<link href="/assets/fonts/fontawesome/css/fontawesome.css" rel="stylesheet" />
|
|
<link href="/assets/fonts/fontawesome/css/brands.css" rel="stylesheet" />
|
|
<link href="/assets/fonts/fontawesome/css/solid.css" rel="stylesheet" />
|
|
|
|
|
|
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon/favicon-32x32.png">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon/favicon-16x16.png">
|
|
<link rel="manifest" href="/assets/favicon/site.webmanifest">
|
|
|
|
|
|
<title>
|
|
June 2023 Leilukin's Hub Layout Rewrite | Blog | Leilukin's Hub
|
|
</title>
|
|
</head>
|
|
<body>
|
|
<header class="hero">
|
|
<div class="hero__top-bar hidden"></div>
|
|
<div class="hero__img">
|
|
|
|
<img fetchpriority="high" src="/assets/leilukin/Leilukins-Hub-website-banner.png" alt="Banner of Leilukin's Hub">
|
|
|
|
</div>
|
|
</header>
|
|
|
|
<style>
|
|
.hero {
|
|
width: 100%;
|
|
background-color: var(--clr-hero-bg);
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
text-align: center;
|
|
}
|
|
|
|
.hero__top-bar {
|
|
background-color: var(--clr-navbar-bg);
|
|
width: 100%;
|
|
padding: 0.5em 0.7em;
|
|
}
|
|
|
|
.hero__img {
|
|
display: grid;
|
|
place-content: center;
|
|
}
|
|
|
|
.hero img {
|
|
object-fit: contain;
|
|
overflow: hidden;
|
|
filter: drop-shadow(0.1rem 0.1rem 0.2rem black);
|
|
max-height: 16rem;
|
|
}
|
|
</style>
|
|
|
|
<script defer>
|
|
const hero = document.querySelector(".hero");
|
|
const todayEvent = getTodayEvent();
|
|
const heroTopBarEl = document.querySelector(".hero__top-bar");
|
|
const headerImgEl = document.querySelector(".hero__img");
|
|
|
|
|
|
if (todayEvent != "No event") {
|
|
heroTopBarEl.classList.remove('hidden');
|
|
|
|
if (todayEvent == "Leilukin's Birthday" || todayEvent == "Leilukin's Hub Anniversary") {
|
|
heroTopBarEl.innerHTML = getBlurbHtml(todayEvent);
|
|
} else {
|
|
headerImgEl.classList.add(getBanner(todayEvent));
|
|
heroTopBarEl.innerHTML = getBlurbHtml(todayEvent);
|
|
}
|
|
}
|
|
|
|
function getTodayEvent() {
|
|
const date = new Date();
|
|
const month = date.getMonth() + 1;
|
|
const day = date.getDate();
|
|
|
|
if (month == 3 && day == 1)
|
|
return "Zero Discrimination Day";
|
|
else if (month == 3 && day == 31)
|
|
return "Trans Day of Visibility";
|
|
else if (month == 4 && day == 6)
|
|
return "International Asexuality Day";
|
|
else if (month == 4 && day == 26)
|
|
return "Lesbian Visibility Day";
|
|
else if (month == 5 && day == 17)
|
|
return "IDAHOBIT";
|
|
else if (month == 5 && day == 19)
|
|
return "Agender Pride Day";
|
|
else if (month == 5 && day == 25)
|
|
return "Pansexual and Panromantic Awareness & Visibility Day";
|
|
else if (month == 6)
|
|
return "Pride Month";
|
|
else if (month == 7 && day == 14)
|
|
return "Non-Binary People's Day";
|
|
else if (month == 7 && day == 28)
|
|
return "Leilukin's Birthday";
|
|
else if (month == 9 && day == 11)
|
|
return "Leilukin's Hub Anniversary";
|
|
else if (month == 9 && day == 23)
|
|
return "Bi Visibility Day";
|
|
else if (month == 10 && day == 8)
|
|
return "International Lesbian Day";
|
|
else if (month == 10 && day == 11)
|
|
return "National Coming Out Day";
|
|
else if (month == 10 && day == 26)
|
|
return "Intersex Awareness Day";
|
|
else
|
|
return "No event";
|
|
}
|
|
|
|
function getBanner(day) {
|
|
switch (day) {
|
|
case "Zero Discrimination Day":
|
|
return "flag-progress-intersex";
|
|
break;
|
|
case "Trans Day of Visibility":
|
|
return "flag-trans";
|
|
break;
|
|
case "International Asexuality Day":
|
|
return "flag-ace";
|
|
break;
|
|
case "Lesbian Visibility Day":
|
|
return "flag-lesbian";
|
|
break;
|
|
case "IDAHOBIT":
|
|
return "flag-progress";
|
|
break;
|
|
case "Agender Pride Day":
|
|
return "flag-agender";
|
|
break;
|
|
case "Pansexual and Panromantic Awareness & Visibility Day":
|
|
return "flag-pan";
|
|
break;
|
|
case "Pride Month":
|
|
return "flag-progress-intersex";
|
|
break;
|
|
case "Non-Binary People's Day":
|
|
return "flag-non-binary";
|
|
break;
|
|
case "Bi Visibility Day":
|
|
return "flag-bi";
|
|
break;
|
|
case "International Lesbian Day":
|
|
return "flag-lesbian";
|
|
break;
|
|
case "National Coming Out Day":
|
|
return "flag-rainbow";
|
|
break;
|
|
case "Intersex Awareness Day":
|
|
return "flag-intersex";
|
|
break;
|
|
default:
|
|
return "";
|
|
}
|
|
}
|
|
|
|
function getBlurbHtml(day) {
|
|
switch (day) {
|
|
case "Zero Discrimination Day":
|
|
return `
|
|
Today is <a href="https://www.unaids.org/en/zero-discrimination-day" target="_blank">Zero Discrimination Day</a>
|
|
`;
|
|
break;
|
|
case "Trans Day of Visibility":
|
|
return `
|
|
Today is <a href="https://www.manygendersonevoice.org/tdov.html" target="_blank">Trans Day of Visibility</a>
|
|
`;
|
|
break;
|
|
case "International Asexuality Day":
|
|
return `
|
|
Today is <a href="https://internationalasexualityday.org/en" target="_blank">International Asexuality Day</a>
|
|
`;
|
|
break;
|
|
case "Lesbian Visibility Day":
|
|
return `
|
|
Today is <a href="https://www.lesbianvisibilityweek.com" target="_blank">Lesbian Visibility Day</a>
|
|
`;
|
|
break;
|
|
case "IDAHOBIT":
|
|
return `
|
|
Today is <a href="https://may17.org" target="_blank">International Day Against Homophobia, Biphobia and Transphobia</a></span>
|
|
`;
|
|
break;
|
|
case "Agender Pride Day":
|
|
return `
|
|
Today is <a href="https://www.believeoutloud.com/voices/article/agender-pride-day/" target="_blank">Agender Pride Day</a></span>
|
|
`;
|
|
break;
|
|
case "Pansexual and Panromantic Awareness & Visibility Day":
|
|
return `
|
|
Today is <a href="https://genderedintelligence.co.uk/panvisibilityday" target="_blank">Pansexual and Panromantic Visibility Day</a>
|
|
`;
|
|
break;
|
|
case "Pride Month":
|
|
return `
|
|
Happy <a href="https://www.loc.gov/lgbt-pride-month/about/" target="_blank">Pride Month</a>!
|
|
`;
|
|
break;
|
|
case "Non-Binary People's Day":
|
|
return `
|
|
Today is <a href="https://www.manygendersonevoice.org/non-binary-peoples-day.html" target="_blank">Non-Binary People's Day</a>
|
|
`;
|
|
break;
|
|
case "Leilukin's Birthday":
|
|
return `
|
|
Today is Leilukin's birthday
|
|
`;
|
|
break;
|
|
case "Leilukin's Hub Anniversary":
|
|
return `
|
|
Today is the anniversary of the launch of Leilukin's Hub
|
|
`;
|
|
break;
|
|
case "Bi Visibility Day":
|
|
return `
|
|
Today is <a href="https://bivisibilityday.com/about" target="_blank">Bi Visibility Day</a>
|
|
`;
|
|
break;
|
|
case "International Lesbian Day":
|
|
return `
|
|
Today is <a href="https://www.lgbtiqhealth.org.au/international_lesbian_day2" target="_blank">International Lesbian Day</a>
|
|
`;
|
|
break;
|
|
case "National Coming Out Day":
|
|
return `
|
|
Today is <a href="https://www.hrc.org/resources/national-coming-out-day" target="_blank">National Coming Out Day</a>
|
|
`;
|
|
break;
|
|
case "Intersex Awareness Day":
|
|
return `
|
|
Today is <a href="https://interactadvocates.org/intersex-awareness-day" target="_blank">Intersex Awareness Day</a>
|
|
`;
|
|
break;
|
|
default:
|
|
return ``;
|
|
}
|
|
}
|
|
|
|
</script>
|
|
<nav class="navbar">
|
|
<ul class="nav__menu">
|
|
|
|
|
|
|
|
<li>
|
|
<a href="/">Home</a>
|
|
</li>
|
|
<li>
|
|
<a href="/about/">About</a>
|
|
</li>
|
|
<li>
|
|
<a href="/now/">Now</a>
|
|
</li>
|
|
<li>
|
|
<a href="/blog/">Blog</a>
|
|
</li>
|
|
<li>
|
|
<a href="/articles/">Articles</a>
|
|
</li>
|
|
<li>
|
|
<a href="/projects/">Projects</a>
|
|
</li>
|
|
<li>
|
|
<a href="/shrines/">Shrines</a>
|
|
</li>
|
|
<li>
|
|
<a href="/links/">Links</a>
|
|
</li>
|
|
<li><a href="https://leilukin.123guestbook.com/">Guestbook</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<style>
|
|
.navbar {
|
|
background: var(--clr-navbar-bg);
|
|
padding: 0 0.6rem;
|
|
width: 100%;
|
|
z-index: 999;
|
|
position: sticky;
|
|
top: 0;
|
|
}
|
|
|
|
.navbar a {
|
|
color: var(--clr-navbar-link);
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.navbar a:hover {
|
|
color: var(--clr-link-hover);
|
|
}
|
|
|
|
.navbar a:focus {
|
|
outline-offset: 0.3em;
|
|
outline: 0.15em solid var(--clr-navbar-link);
|
|
}
|
|
|
|
.nav__menu {
|
|
list-style: none;
|
|
padding: 0;
|
|
display: flex;
|
|
justify-content: space-evenly;
|
|
flex-wrap: wrap;
|
|
gap: 0.5rem;
|
|
}
|
|
</style>
|
|
|
|
<main>
|
|
<header class="main__header">
|
|
|
|
<ul class="breadcrumbs">
|
|
|
|
<li>
|
|
<a href="/blog/" >Blog</a>
|
|
</li>
|
|
➔
|
|
<li>
|
|
<a href="/blog/posts/" >Blog Archive</a>
|
|
</li>
|
|
➔
|
|
</ul>
|
|
|
|
|
|
|
|
<h1>June 2023 Leilukin's Hub Layout Rewrite</h1>
|
|
<div class="article__info">
|
|
<p>Posted on 23 June 2023 by Leilukin
|
|
|
|
|
|
<p>Categories:
|
|
|
|
<a href="/categories/site-updates">site updates</a>
|
|
|
|
</p>
|
|
|
|
<p>🍿 2 min. read</p>
|
|
</div>
|
|
|
|
</header>
|
|
|
|
<div class="content__wrapper">
|
|
|
|
|
|
|
|
<article class="article">
|
|
|
|
<p><img src="/assets/layouts/Leilukins-Hub-layout-2023-06.png" alt="A screenshot of Leilukin's Hub home page, with its new layout released on June 23, 2023"></p>
|
|
<p>Happy Pride Month! It is always Pride on this literally <a href="https://isaacfish.neocities.org/webring/">queer-coded</a> (as in, literally coded by a queer person) website, so Leilukin's Hub decided to celebrate Pride Month with a major update — rewriting the entire website's layout!</p>
|
|
<p>This new layout remains the same colour scheme as the previous one, which went live in January this year. The most noticeable change you would see in this new layout is the sticky navigation bar, a feature that previously only existed in <a href="/shrines/">my shrines</a>. However, under the hood the HTML, CSS and JavaScript all have been rewritten from the ground up to optimise the site's layout.</p>
|
|
<p>Highlights of the June 2023 layout rewrite of Leilukin's Hub:</p>
|
|
<ul>
|
|
<li>A new navigation bar throughout the entire website, instead of putting links to this site's pages on the sidebar. The design of this navigation bar is inspired by the dropdown menu bar at the end of this article: <a href="https://webdesign.tutsplus.com/articles/best-practices-for-responsive-dropdown-menus--cms-35212">6 Best Practices for Building Responsive Dropdown Menus</a>.</li>
|
|
<li>Rewrite the HTML elements to improve the website's layout.</li>
|
|
<li>Use a mobile-first workflow to rewrite the CSS of this website to make the website more responsive to various screen sizes (mobile, tablet and desktop).</li>
|
|
<li>Streamline the CSS of the main parts of the site into one CSS file. The only pages that also have their own CSS due to unique elements with custom classes exclusive to the pages are <a href="/mymods/">my mod pages</a>. The shrines still have their own CSS files, however.</li>
|
|
<li>Use <a href="https://andy-bell.co.uk/a-modern-css-reset/">Andy Bell's modern CSS reset</a> for the CSS of the entire website.</li>
|
|
<li>The header, navigation bar and footer have their own scripts to dynamically render the content of these elements with JavaScript's <a href="https://www.javascripttutorial.net/javascript-dom/javascript-innerhtml/"><code>innerHTML</code></a> property.</li>
|
|
<li>Add a "Back to top" link to the footer to quickly scroll back to the top of the page you are viewing</li>
|
|
</ul>
|
|
<p>Rewriting the layout of this entire website has taken me many hours on this site redesign. Nevertheless, I am very pleased with how it turns out. Enjoy!</p>
|
|
|
|
<ul class="blog__post--nextprev"><li>Previous Post: <a href="/blog/posts/2023-05-09-onboard-the-dracula-daily-hype-train/">Onboard the Dracula Daily Hype Train</a></li><li>Next Post: <a href="/blog/posts/2023-07-28-my-first-birthday-after-the-launch-of-leilukins-hub/">My First Birthday After the Launch of Leilukin's Hub</a></li>
|
|
</ul>
|
|
|
|
<style>
|
|
.blog__post--nextprev {
|
|
list-style: none;
|
|
padding-left: 0;
|
|
padding-top: 0.8em;
|
|
margin-top: 2.5em;
|
|
border-top: 0.1em solid var(--clr-title-border);
|
|
}
|
|
</style>
|
|
</article>
|
|
|
|
|
|
|
|
<aside class="right-sidebar">
|
|
<nav class="content__nav sidebar--sticky">
|
|
<h2 class="content__nav--title">My Contents</h2>
|
|
<ul class="content__nav--links">
|
|
|
|
<li><a href="/archive/">Content Archive</a></li>
|
|
|
|
<li><a href="/categories/">Content Categories</a></li>
|
|
|
|
<li><a href="/articles/">Articles</a></li>
|
|
|
|
<li><a href="/blog/posts/">Blog Archive</a></li>
|
|
|
|
<li><a href="/blog/">Blog Home</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
</aside>
|
|
|
|
<style>
|
|
.content__nav {
|
|
padding: 1.2em clamp(1em, 5%, 1.5em);
|
|
background-color: var(--clr-content-bg);
|
|
}
|
|
|
|
.content__nav--title {
|
|
font-size: 1.7rem;
|
|
}
|
|
</style>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<style>
|
|
.breadcrumbs {
|
|
list-style: none;
|
|
padding: 0;
|
|
margin: 0 0 0.7em 0;
|
|
display: flex;
|
|
gap: 0.5em;
|
|
flex-wrap: wrap;
|
|
justify-content: center;
|
|
}
|
|
</style>
|
|
</main>
|
|
<footer class="footer">
|
|
|
|
<p>Made with ♥ by Leilukin since <time>11 September 2022</time></p>
|
|
|
|
|
|
<ul class="footer__links">
|
|
<li><a
|
|
|
|
href="/sitemap/
|
|
">Site Map</a></li>
|
|
<li><a
|
|
|
|
href="/changelogs/"
|
|
>Changelogs</a></li>
|
|
<li><a href="/feed.xml">RSS</a></li>
|
|
</ul>
|
|
|
|
</footer>
|
|
|
|
<style>
|
|
.footer {
|
|
margin-top: auto;
|
|
background: var(--clr-main-footer-bg);
|
|
padding: 0.8rem;
|
|
text-align: center;
|
|
display: grid;
|
|
}
|
|
|
|
.footer p {
|
|
padding: 0;
|
|
}
|
|
|
|
.footer__links {
|
|
justify-self: center;
|
|
list-style: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
display: flex;
|
|
gap: 0.7em;
|
|
}
|
|
|
|
.footer__links li:not(:last-child)::after {
|
|
content: '|';
|
|
padding-left: 0.6em;
|
|
}
|
|
|
|
@media only screen and (min-width: 600px) {
|
|
.footer {
|
|
width: 100%;
|
|
}
|
|
}
|
|
</style>
|
|
<button class="top-btn hidden" aria-label="Scroll to top">
|
|
<i class="fa-solid fa-chevron-up"></i>
|
|
</button>
|
|
|
|
<style>
|
|
.top-btn {
|
|
position: fixed;
|
|
margin: 0;
|
|
padding: 0;
|
|
bottom: 0.5rem;
|
|
right: 0.5rem;
|
|
z-index: 999;
|
|
border: none;
|
|
background-color: var(--clr-top-btn-bg);
|
|
color: var(--clr-top-btn-txt);
|
|
border-radius: 50em;
|
|
width: 2rem;
|
|
aspect-ratio: 1 / 1;
|
|
}
|
|
|
|
.top-btn:focus {
|
|
outline: 0.25em solid var(--clr-top-btn-bg);
|
|
outline-offset: 0.15em;
|
|
}
|
|
</style>
|
|
|
|
<script defer>
|
|
const topButton = document.querySelector(".top-btn");
|
|
|
|
window.onscroll = () => {
|
|
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
|
|
topButton.classList.remove("hidden");
|
|
} else {
|
|
topButton.classList.add("hidden");
|
|
}
|
|
}
|
|
|
|
topButton.addEventListener('click', () => {
|
|
window.scrollTo({
|
|
top: 0,
|
|
left: 0,
|
|
behavior: "smooth",
|
|
});
|
|
});
|
|
</script>
|
|
</body>
|
|
</html> |