
Mastering CSS Animations with @keyframes
CSS @keyframes enables animations by defining style changes over time. Here, I explain how it works with examples, properties, and cross‑browser support.
Articles from more than two decades of building, rebuilding, debugging, and leading web projects.

@keyframesCSS @keyframes enables animations by defining style changes over time. Here, I explain how it works with examples, properties, and cross‑browser support.

extends and super in JavaScript ClassesExtends and super in JavaScript classes explained with inheritance examples, constructor rules, method overriding, and the trade‑offs of class hierarchies.

This guide explores JavaScript essentials for freelance web developers. It covers fundamental concepts, practical examples, and tips for mastering JavaScript.

React 16 passes unknown attributes to the DOM. See how component‑only props leak through JSX spreads, what React 15 did, and how to consume them.

Whilst understanding any computing language comes with practice and exposure, there are some areas of CSS that can flummox even the most seasoned of developers.

Use passive event listeners safely: learn when touch and wheel handlers block scrolling, when preventDefault() is required, and why handler cost is separate.

::before and ::after Pseudo‑Elements in CSSUsing the :before and :after pseudo‑elements in CSS for styling and content insertion. Here, I cover syntax, practical examples, and best practices.

Follow HTML, CSS, and JavaScript through the browser's critical rendering path, then find the resources delaying the first useful render.

Promise.all() vs. Promise.race() in JavaScriptPromise.all() vs. Promise.race() in JavaScript, with async examples, error behaviour, timeouts, practical use cases, and common mistakes in real code.

JavaScript generators explained for beginners, covering generator function syntax, yield, paused execution, iteration patterns, and where generators still help.

Polyfills replicate modern JavaScript methods for compatibility. Here, I explain polyfills and show how to build key examples in unsupported environments.

Error handling in JavaScript is vital for building robust applications. Here, I explore modern patterns like try‑catch, async/await, and global error handlers.

overflow PropertyUnderstand the CSS overflow property, including visible, hidden, scroll, auto, x, and y control, scrollbars, accessibility, and mobile‑browser quirks.

JavaScript callbacks execute functions after tasks, whilst promises offer structured asynchronous handling. I explore their differences, benefits, and uses.

Array.find(), Array.some(), and Array.every() in JavaScriptArray.find(), Array.some(), and Array.every() in JavaScript explained clearly, including return values, use cases, and when each method fits best.

CSS transitions allow us to create smooth animations between states, enhancing user experience. Here, I discuss how to use transitions with practical examples.

Object.is() vs. Strict Equality in JavaScriptCompare Object.is() and strict equality in JavaScript, including NaN, signed zero, loose equality contrast, and when precision matters in real code.

fetch Blocked?CORS explained for JavaScript fetch errors, including same‑origin policy, server opt‑in, preflight requests, credentials, and what front‑end code can fix.

Use BEM and Sass together for component CSS with clear naming, shallow nesting, modifiers, reusable mixins, and less fragile front‑end styling over time.

Create and dispatch custom events in JavaScript with CustomEvent, detail payloads, bubbling, naming choices, cancellation, and component examples.

CSS is key to delivering responsive, accessible, and visually appealing freelance projects. Here, I explore essential techniques and practices to master CSS.