All blogs / Frontend / CSS / browsers
CSS In Real Life
A blog about CSS, front-end development, the web, and beyond.
- Posts
- 273 from 17 Apr 2016 to 28 Sep 2025
- Posting
- now and then
- Kind
- personal blog
- Feed
- https://css-irl.info/rss.xml
2025 10
- Clutter
- Quick tips (7)
- Notes (25)
- Reflections From Green IO 2025
- Articles (229)
- Creating CSS Theme Variables from a JS file
- Wholegrain Digital’s Response to the BBC’s Web Sustainability Report
- Debating the Merits of LLMs
- What I learned from migrating a Vue project from Vuex to Pinia
- Creating Static SVGs from GeoJSON
2024 35
- Sustainable Hardware Choices
- Education Needs Teachers, Not More Technology
- CSS Masonry Layout Syntax
- AI Environmental Impact Report
- A Versatile Markdown Shortcode for Eleventy
- I’ve Been Doing Blockquotes Wrong
- Notes From Green IO Conference
- Limitation Breeds Creativity: A Study in Composition with Custom Properties
- Demos (7)
- Logical Properties in Size Queries
- The Problem With Surveys (and Why You Should Take This One)
- Styling Tables the Modern CSS Way
- Everybody’s Free (to Write Websites)
- Feedback
- Modern CSS Layout is Awesome: Talking and Thinking About CSS Layout
- Another Anchor Positioning Demo: Multiple Anchors
- Progressively Enhanced Popover Toggletips
- Perspective
- Anchor Positioning and the Popover API for a JS-Free Site Menu
- RSS is Good, Isn’t It?!
- Manifesto for a Humane Web
- Shades of Grey with color-mix()
- The Perfect Site Doesn’t Exist
- Time to Ditch Analytics? Tracking Scripts and Web Sustainability
- Talking About Web Sustainability on ShopTalk Show
- Creating Color Palettes with the CSS color-mix() Function
- February 2024 Bookmarks
- Design Patterns that Encourage Junk Data
- How I Solved My Font Rendering Problem
- New and Improved Green Web Hosting Directory from the Green Web Foundation
- Eleventy Starter Project Updates
- Wrapping Up 2023
- Video: Building a Greener Web (Smashing Meets Goes Green)
- Where Do We Go From Here?
- Workshop Review: Data Visualisation Fundamentals with Andy Kirk
2023 64
- How Do You Vertically Centre an Element in CSS? (Even More) Easily!
- Interview: Beyond the Spotlight
- Greenhouse Gas Emissions From Streaming Digital Content
- Reporting on Website Carbon Emissions
- Testing the Performance of Social Media Embeds
- Wrapping Up National Blog Posting Month 2023
- Hide and Debug Empty Elements with CSS
- Oh No, Overflow!
- Kicking the Excessive JavaScript Habit
- You Have Something to Say That’s Worth Hearing
- Preventing Scroll “Bounce” with CSS
- Why You Should Hold Onto Your Devices For Longer
- What to Blog About When You Don’t Know What to Blog About
- Choosing a Green Web Host
- Scroll Timeline Parallax Effect
- Reality Check: A Series for Building Real Layouts
- A Fun CSS Text Effect
- Drawing Raindrops with CSS Gradients and Masks
- Thoughts on UX Engineering
- Using Flow Diagrams to Manage State in Complex Applications
- Getting Started with Container Queries
- The Joy of Lists
- Radial Gradients and CSS Trigonometric Functions
- Better Vue Application State Management with Vuex Modules
- Programming as a Craft
- Stop Using AI-Generated Images
- CSS Nesting is Here
- NaN or Not a Number?
- Handling Null, Undefined and Zero Values in JavaScript
- (Don’t) Mind the Gap
- Leaving Twitter Behind
- Owning Your Web
- Code Gardening
- Messing About with CSS Gradients
- Update on the COP28 Website
- National Blog Posting Month
- Finding Meaning in Our Work
- Introduction to Web Sustainability
- Styling External Links with Attribute Selectors
- Greenwashing and the COP28 Website
- Introducing the Web Sustainability Guidelines
- Reactivity in Vanilla Javascript
- Cool Tools
- Creating custom easing effects in CSS animations using the linear() function
- Video: Building a Greener Web
- Scroll Progress Animations in CSS
- Video: Modern CSS Layout is Awesome
- Thoughts From CSS Day
- Reducing Complexity in Front End Development
- Carbon Capture: A New Way to Measure Your Website’s Carbon Emissions
- Useful Resources for Improving Your Site’s Performance (and Reducing Carbon Emissions)
- Exploring :has() Again
- Creating VS Code Snippets to Speed Up Workflow
- A Native “Visually Hidden” in CSS? Yes Please!
- Setting Up a New(ish) MacBook
- Resizing with CSS
- Working with Colour Scales for Data Visualisation in D3
- Testing Colour Accessibility with Dev Tools
- Interop 2023
- Scheduling Netlify Deployments with Github Actions
- A Quick Website Redesign
- A Useful VS Code Extension for Environment Switching
- Disentangling Frameworks
- 2022 in Review
2022 36
- Correcting With Kindness
- Logical Border Radius
- Optimizing a Vue App
- Find Me On Mastodon
- Web Sustainability Resources
- Handy Tools For Mocking API Requests
- Sustainable Web Development Strategies Within an Organization
- CSS Halftone Patterns
- Web Sustainability and the Ethical Dilemma
- Detecting CSS Selector Support
- Creative CSS Layout (and the Flexible Web)
- Creative List Styling
- A Handy Use For Cascade Layers
- Quick Tip: Negative Animation Delay
- Tech Workers and Climate Action
- Logical Properties for Useful Shorthands
- Masonry? In CSS?!
- Breaking Out of a Central Wrapper
- CSS Day 2022
- Writing Useful Alt Text
- Quick Tip: You Might Not Need Calc()
- My Browser Support Strategy
- Animated Grid Tracks with :has()
- Exciting Times for Browsers (and CSS)
- Building an Interactive Sparkline Graph with D3
- The Web Doesn’t Have Version Numbers
- A Reason to Self-Host Fonts
- New CSS Features In 2022
- Are My Third Parties Green?
- A Blog Post About Blogging
- In Commission to No Emmissions: Videos from Toronto Web Performance Meetup
- I Finally Installed an Ad Blocker
- Aspect Ratio is Great
- Reducing The Web’s Carbon Footprint: Optimizing Social Media Embeds
- Not an NFT artist
- Building a Scrollable and Draggable Timeline with GSAP
2021 37
- 2021 in Review
- :has() Has Landed in Safari
- Building a Greener Web
- Reduce Your Website’s Environmental Impact With a Carbon Budget
- Don’t Forget the “lang” Attribute
- A Guide To Modern CSS Colors With RGB, HSL, HWB, LAB And LCH
- IT Career Energizer Podcast
- Favourite Web Development Courses
- Accessible Toggles
- Respecting Users’ Motion Preferences
- The State of CSS 2021
- Evaluating Clever CSS Solutions
- Creating 3D Characters in Three.js
- Simplifying Form Styles With accent-color
- Simpler Block Spacing in WordPress with :is() and :where()
- Developer Decisions For Building Flexible Components
- Learning in the Open
- New Length Debugging Tool in Chrome Canary
- Masking One Element With Another
- Is it Time to Ditch the Design Grid?
- Building A Dynamic Header With Intersection Observer
- Inspecting Sizes
- Detecting Hover-Capable Devices
- Video: Dev Roulette Live
- Trigonometry in CSS and JS: A Series
- Creating Generative SVG Characters
- Toggling CSS Custom Properties with Radio Buttons
- Dynamic CSS Masks with Custom Properties and GSAP
- Development Budgets
- Paper Snowflakes: Combining Clipping and Masking in CSS
- Quick Tip: Style Pseudo-elements with Javascript Using Custom Properties
- Animating Underlines
- Debugging Media Queries: A Dev Tools Wish List
- Favourite Things 2: New CSS Features, JS Libraries and More
- Finding an Element’s Nearest Relative Positioned Ancestor
- My Typical Day
- On a break
2020 32
- Goodbye, 2020
- Video: Using Tailwind with Wordpress
- A Utility Class for Covering Elements
- Troubleshooting Caching
- Color Theming with CSS Custom Properties and Tailwind
- Launching the New and Improved CSS { In Real Life }
- Tailwind Thoughts
- Making Work Experience a Positive Experience
- Quick Command Line Tip: Create Mutliple Files With the Same Extension
- Learning About CSS 3D Transforms and Perspective
- Why I Don’t Have Time For Your Coding Challenge
- Favourite Things 1: GSAP ScrollTrigger, Eleventy, and more
- Building the Zig-Zag Gradient Lab
- Accessibly Hiding Focus Outlines
- Drop-Shadow: The Underrated CSS Filter
- From Gatsby to Eleventy: Choosing a Static Site Generator for a Personal Site
- Irregular-shaped Links with Subgrid
- Mentoring
- CSS-only Slide-up Caption Hover Effect
- All the CSS Colours
- Exciting Things on the Horizon For CSS Layout
- Video: 90 Seconds on CSS Custom Properties
- Tips for Writing for the Web
- Different Approaches to Responsive CSS Motion Path
- Building an Interactive Timetable
- Positioning Text Along a Path with CSS
- In Search of Simplicity
- Do We Need CSS4?
- Quick and Easy Dark Mode with CSS Custom Properties
- Optimising SVGs for the Web
- Fun with CSS Motion Path
- Imperfect
2019 36
- 2019 in Review
- 7 Uses for CSS Custom Properties
- Beautiful Scrolling Experiences – Without Libraries
- Re-creating the ‘His Dark Materials’ Logo in CSS
- A Layout Trick for Building a Contact List
- Part 3: Building Our Sass Architecture
- Part 2: Module Bundling with Parcel
- Part 1: Building a Project Starter with NPM Scripts
- State of the Art CSS
- Building a Scrapbook Layout with CSS Grid
- Thoughts on the State of the Web
- Get ready for the CSS Grid Revolution
- How to Accessibly Split Text
- Variable Font Animation with CSS and Splitting JS
- Heatwave: An Animated CSS Sun Illustration
- Part 3: Auto-flow, Order and Item Placement
- How to Enable Experimental Web Platform Features in Chrome and Firefox
- Video: Building Complex Layouts at Future Sync 2019
- Pixel Pioneers 2019 Roundup
- Video: Super-powered Layouts at State of the Browser 2018
- Top Tips for Hiring Diverse Teams
- Subgrid is here
- How Git Stash Can Help You Juggle Multiple Branches
- Part 2: What the Fr(action)?
- Part 1: Understanding Implicit Tracks
- Controlling Leftover Grid Items with Pseudo-selectors
- Amending Your Past Commits with Git
- How to Create Better Themes with CSS Variables
- Building a Dependency-free Site in 2019
- How to Convince Your Team to Adopt CSS Grid
- Becoming a Tech Speaker
- To Grid or to Flex?
- My CSS Grid Wishlist
- A Year of Utility Classes
- Animating CSS Grid
- Solving a Tricky Layout Problem with CSS Grid
2018 21
- Wrapping Up 2018
- Reversing an Easing Curve
- Into the Matrix with SVG Filters
- Mentoring Junior Developers
- Negative Grid Lines
- 20 Inspiring Women in Tech
- Relative Grid Items with CSS Variables
- Notes from State of the Browser
- Super-powered Grid Components with CSS Custom Properties
- Experimental Layouts with CSS Shapes and Clip-path
- Building a Progressive Web App with Gatsby
- Speaking at Bristol JS on Super-powered Layouts
- Progressive Web Apps: An Introduction
- In Defence of Bad Code
- Great Front End Writers to Follow
- Practical Tips for Working with CSS Variables
- Introduction to Gatsby
- Aspect Ratio Cells with CSS Grid Layout
- CSS Grid: More Flexibility with Minmax()
- Using Pseudo-elements with CSS Grid
- Super-powered layouts with CSS Variables + CSS Grid