Intro
A collection of knowledge and wisdom about web design and development. Find his work on his YouTube channel.
Topics
CSS boilerplate
Based on Sajid’s advice and tips, this serves as a starting point for a global styles sheet.
/* Clean reset for everything */
* {
margin: 0;
padding: 0;
box-sizing: border-box
}
/* Theme preference colors */
@media (prefers-color-scheme: light) {
:root {
--text: hsl(80, 22%, 92%);
--subtext: hsl(80, 22%, 75%);
--background: hsl(83, 27%, 6%);
--subbackground: hsl(83, 27%, 10%);
--primary: hsl(80, 28%, 71%);
--secondary: hsl(80, 29%, 30%);
--accent: hsl(80, 33%, 49%);
}
}
@media (prefers-color-scheme: dark) {
:root {
/*colors/*
}
}
/* Variable definitions */
:root {
/* ff and ff2 fonts */
--ff1: "Noto Sans", sans-serif;
--ff2: "Archivo", sans-serif;
/* font sizes */
--fsize1: 1rem;
--fsize2: 1.125rem;
--fsize3: 1.25rem;
--fsize4: 1.5rem;
--fsize5: 0.875rem;
/* Spacings */
--spacing1: 4px;
--spacing2: 8px;
--spacing3: 16px;
--spacing4: 20px;
--spacing5: 40px;
--spacing6: 80px;
--spacing7: 160px;
--spacing8: 320px;
/* fonts in typography file */
--h1: 700 4rem/1.2em var(--ff2);
--h2: 600 2rem/1.2em var(--ff2);
--p: 1rem/1.5em var(--ff1);
--successGreen: hsl(120, 48%, 67%);
--errorRed: hsl(6, 59%, 55%);
--focus: 2px solid lightblue;
}
/* HTML global styles */
html {
scroll-behavior: smooth;
}
body {
/* use your defined for globals for bg, font, and color */
min-height: 100vh;
text-wrap: balance;
font: var(--p);
color: var(--text);
background: var(--background);
}
section {
width: 80%;
max-width: 1200px;
padding: var(--spacing6);
margin: var(--spacing6) auto;
}
h1 {
font: var(--h1);
color: var(--primary);
margin: var(--spacing1);
}
h2 {
font: var(--h2);
color: var(--primary);
margin: var(--spacing2);
}
h3 {
margin: var(--spacing2);
}
p {
margin: var(--spacing2);
}
small {
color: var(--subtext);
}
a {
text-decoration: none;
color: var(--accent);
}
a:hover {
color: var(--secondary);
}
ul {
list-style: inside;
margin: var(--spacing2);
}
img {
width: 100%;
border-radius: var(--spacing2);
}
.btn,
button {
all: unset;
background-color: var(--primary);
font: var(--p);
color: var(--background);
margin: var(--spacing2) auto;
padding: var(--spacing2) var(--spacing3);
display: inline-block;
border-radius: var(--spacing2);
cursor: pointer;
}
@media (hover: hover) {
.btn:hover,
button:hover {
scale: 1.115;
box-shadow: 0 var(--spacing1) var(--spacing2) var(--accent);
}
}
.outline-btn {
color: var(--text);
background-color: transparent;
border: 2px solid var(--primary);
}
*:focus,
button:focus,
anchor:focus {
outline: var(--focus);
}
.icon {
margin-left: var(--spacing3);
width: var(--spacing5);
vertical-align: middle;
}
.center {
text-align: center;
}
.hidden {
display: none;
}
.flex {
display: flex;
align-items: center;
justify-content: center;
gap: var(--spacing4);
flex-wrap: wrap;
}
.flex>* {
flex: 1;
min-width: 200px;
}
.column {
flex-direction: column;
}
.reverse {
flex-direction: row-reverse;
}
.flex-start {
align-items: flex-start;
}
.top-accent-tab {
border-top: var(--spacing1) solid var(--accent);
border-top-left-radius: var(--spacing1);
border-top-right-radius: var(--spacing1);
}
.left-accent-tab {
border-left: var(--spacing1) solid var(--accent);
border-radius: var(--spacing1);
}
.container {
margin: var(--spacing3) auto;
padding: var(--spacing4);
}
.card {
background-color: var(--subbackground);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
border-radius: var(--spacing1);
}
.card.success {
background-color: var(--successGreen) !important;
color: var(--text);
}
.card.error {
background-color: var(--errorRed) !important;
color: var(--text);
}
.click-hover:hover {
cursor: pointer;
transform: scale(1.0625);
transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);
will-change: transform;
}
/* Utility Classes for quick styles during dev*/
/* Margins and Paddings */
.padding1 {
padding: var(--spacing1) 0;
}
.padding2 {
padding: var(--spacing2) 0;
}
.padding3 {
padding: var(--spacing3) 0;
}
.padding4 {
padding: var(--spacing4) 0;
}
.padding5 {
padding: var(--spacing5) 0;
}
.padding6 {
padding: var(--spacing6) 0;
}
.padding7 {
padding: var(--spacing7) 0;
}
.margin1 {
margin: var(--spacing1) auto;
}
.margin2 {
margin: var(--spacing2) auto;
}
.margin3 {
margin: var(--spacing3) auto;
}
.margin4 {
margin: var(--spacing4) auto;
}
.margin5 {
margin: var(--spacing5) auto;
}
.margin6 {
margin: var(--spacing6) auto;
}
.margin7 {
margin: var(--spacing7) auto;
}