(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.data-privacy-src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-1596564-1', 'auto'); ga('send', 'pageview');
Home » CSS

Achieving Vertical Alignment (Thanks, Subgrid!)

2020-10-01T03:05:57+02:00October 1st, 2020|Categories: News, Tutorials|Tags: |

Our tools for vertical alignment have gotten a lot better as of late. My early days as a website designer involved laying out 960px wide homepage designs and aligning things horizontally across a page using a 12-column grid. Media queries came along which required a serious mental shift. It solved some big problems, of course, [...]


2020-10-01T03:05:53+02:00October 1st, 2020|Categories: News, Tutorials|Tags: |

As a connoisseur of web trickery, this is a must share: POW stands for Packaged Offline/online Webpage. It turns out the png format includes ways to save metadata alongside the image file. A powfile has a metadata entry that contains a zip file that contains a full website. So a PNG file can contain and [...]

Some New Icon Sets

2020-09-30T03:05:33+02:00September 30th, 2020|Categories: News, Tutorials|Tags: |

I’ve bookmarked some icon sets lately, partly because I can never find a nice set when I need to. I figured I’d even go the extra mile here and blog them so I can definitely find them later. Aside from being nice, cohesive, and practical sets of icons, I find it interesting that literally all [...]

Make Your Own Dev Tool

2020-09-30T03:05:29+02:00September 30th, 2020|Categories: News, Tutorials|Tags: |

Amber Wilson on making bookmarklets to help yo-self. She shows off one that injects an accessibility script — I like this approach, as it means you don’t have to maintain the bookmarklet, just the script it links to). Another example runs some code contained right in the link. The result is literally a bookmark in [...]

The Flavors of Object-Oriented Programming (in JavaScript)

2020-09-29T03:06:00+02:00September 29th, 2020|Categories: News, Tutorials|Tags: |

In my research, I’ve found there are four approaches to Object-Oriented Programming in JavaScript: Using Constructor functions Using Classes Using Objects linking to other objects (OLOO) Using Factory functions Which methods should I use? Which one is “the best” way? Here I’ll present my findings along with information that may help you decide which is [...]

Linearly Scale font-size with CSS clamp() Based on the Viewport

2020-09-26T03:05:18+02:00September 26th, 2020|Categories: News, Tutorials|Tags: |

Responsive typography has been tried in the past with a slew of methods such as media queries and CSS calc(). Here, we’re going to explore a different way to linearly scale text between a set of minimum and maximum sizes as the viewport’s width increases, with the intent of making its behavior at different screen [...]

Web Technologies and Syntax

2020-09-25T03:09:42+02:00September 25th, 2020|Categories: News, Tutorials|Tags: |

JavaScript has a (newish) feature called optional chaining. Say I have code like: const name = Data.person.name; If person happens to not exist on Data, I’m going to get a hard, show-stopping error. With optional chaining, I can write: const name = Data.person?.name; Now if person doesn’t exist, name becomes undefined instead of throwing an [...]