The Curious Engineer

All blogs / Frontend / CSS / browsers

Piccalilli

piccalil.li

We are Piccalilli. A publication dedicated to providing high quality educational content to level up your front-end skills.

Frontend / CSS / browsers

Posts
221 from 4 Sep 2018 to 30 Oct 2026
Posting
weekly (44 in the last year)
Kind
magazine
Feed
https://piccalil.li/feed.xml

2026 35

  1. The Index: Issue #204
  2. If we stop, we lose
  3. The Index: Issue #203
  4. Native masonry layouts with CSS grid lanes
  5. Native masonry layouts with CSS grid lanes
  6. The Index: Issue #202
  7. The Index: Issue #201
  8. The Index: Issue #200
  9. Stop buttons triggering zoom when they’re double tapped
  10. A decent custom checkbox pattern for until ::checkmark is ready
  11. Save 35% on all courses for two weeks only
  12. Personal website redesign project post: A CLI for adding new music to the collection
  13. A look at the geolocation HTML element and how it works
  14. Working with ::highlight() using progressive enhancement
  15. Use cases for aria-expanded
  16. Proxy and Reflect
  17. Publishing on the Atmosphere with Standard.site
  18. A Front-end developer’s guide to the hybrid mobile app development landscape
  19. Navigating the age-old problem of checkmarks in UI with progressive enhancement
  20. Framework-agnostic design systems: a practical approach to web components
  21. Three stoic principles for better web accessibility
  22. The end of responsive images
  23. A quick guide to creating syndication feeds
  24. Applying accessibility fixes with stealth for the greater good
  25. Building dynamic toggletips using anchored container queries
  26. Finding an accessibility-first culture in npmx
  27. A 2026 Piccalilli homepage redesign
  28. An in-depth guide to customising lists with CSS
  29. You might not need role="presentation"
  30. It’s about to get a lot easier for your JavaScript to clean up after itself
  31. The open source design stack
  32. Some CSS only contrast options until contrast-color() is Baseline widely available
  33. Some advice on managing your design career upwards
  34. Accessible faux-nested interactive controls
  35. Date is out, Temporal is in

2025 51

  1. Wrapping up 2025
  2. Why are my view transitions blinking?
  3. A view transitions fallback: DOMContentLoaded + requestAnimationFrame()
  4. A pragmatic guide to modern CSS colours - part two
  5. A Q&A with Mindful Design author, Scott Riley
  6. We made an email template to help convince your boss to pay for Mindful Design
  7. Perfecting Baseline
  8. Programming principles for self taught front-end developers
  9. Some practical examples of view transitions to elevate your UI
  10. Start implementing view transitions on your websites today
  11. NaN, the not-a-number number that isn’t NaN
  12. A Q&A with JavaScript for Everyone author, Mat Marquis
  13. We made an email template to help convince your boss to pay for JavaScript for Everyone
  14. A pragmatic guide to modern CSS colours - part one
  15. A guide to creating accessible PDFs using free tools
  16. A workaround for using custom properties in media queries
  17. Transitioning from being a developer to a manager
  18. Taking a shot at the double focus ring problem using modern CSS
  19. While you’re fixing the fun stuff, fix the important stuff too
  20. Functional custom elements the easy way
  21. Are people’s bosses really making them use AI tools?
  22. The interpolate-size property is a great example of progressive enhancement
  23. Our principles on AI
  24. Another article about centering in CSS
  25. Building a typed fetch in TypeScript with conditional types and infer
  26. A new article layout and better options for advertisers
  27. We’ve implemented full brands for our upcoming courses
  28. A handy use of subgrid to enhance a simple layout
  29. A revisit of the Every Layout sidebar with :has() and selector performance
  30. Some interesting results from the 2025 Piccalilli survey
  31. We’d love to know your thoughts with the Piccalilli 2025 survey
  32. Sticky revealing footer
  33. Printing the web: making webpages look good on paper
  34. You can style alt text like any other text
  35. We need your support to do free projects for good causes and publish free high quality education
  36. JavaScript, what is this?
  37. JavaScript, when is this?
  38. Advanced TypeScript manipulation features for the real world
  39. How to write error messages that actually help users rather than frustrate them
  40. Introducing JavaScript for Everyone and Mindful Design
  41. Simplify sharing with built-in APIs and progressive enhancement
  42. If it works, it’s right
  43. Real-world uses of TypeScript’s utility types
  44. We gave The Index a much needed design refresh and introduced advertising, site-wide
  45. Tips on extensible and maintainable components
  46. In praise of off-screen menus
  47. Using the step and pattern attributes to make number inputs more useful
  48. What I learned from migrating a Vue project from Vuex to Pinia
  49. CSS nesting: use with caution
  50. Technologies and frameworks we use in our design studio
  51. A simple masonry-like composable layout

2024 53

  1. Why I’m excited about text-box-trim as a designer
  2. We made an email template to help convince your boss to pay for Complete CSS
  3. Complete CSS launches on November 26
  4. Making content-aware components using CSS :has(), grid, and quantity queries
  5. How the heck does it work? Phoenix LiveView
  6. “Secure Custom Fields” is not Advanced Custom Fields
  7. Practical Accessibility Tips You Can Apply Today
  8. A guide to destructuring in JavaScript
  9. How I build a button component
  10. Introducing: Complete CSS
  11. Building a breakout element with container units
  12. Redesigning Piccalilli: the build process
  13. Redesigning Piccalilli: the second part of the design process
  14. Riffing on the latest CSS fit text approach
  15. A handful of reasons JavaScript won’t be available
  16. Redesigning Piccalilli: the first part of the design process
  17. Styling Tables the Modern CSS Way
  18. We want to help designers learn to code
  19. Front-End solution: Eyebrow heading dots
  20. It’s about time I tried to explain what progressive enhancement actually is
  21. How to stop Figma using your work to train their AI models
  22. The time for designers to learn to code is now
  23. Front-End challenge: Eyebrow heading dots
  24. Mask image is pretty handy
  25. A quick and easy guide to Markdown
  26. Let’s make a floating button sign up form pattern
  27. How I’m using AI
  28. How a handful of independent publishers are doing their thing
  29. I’m worried about the tabbing behaviour, rather than the syntax and name of CSS masonry
  30. Full text RSS is back
  31. Applying P3 colours on an existing project
  32. Upcoming custom element support in React
  33. CSS inheritance
  34. An evolution, not a revolution
  35. A primer on the cascade and specificity
  36. I want to elevate more people with Piccalilli Links
  37. How we’re approaching theming with modern CSS
  38. The box model and box sizing
  39. Front-End solution: progress indicator
  40. Some little ways I’m using CSS :has() in the real world
  41. The path to becoming a publisher
  42. Front-End challenge: progress indicator
  43. Event currentTarget to the rescue
  44. A Global Documentation Platform
  45. A CSS project boilerplate
  46. Interop 2024
  47. Some information about my upcoming workshop and course
  48. Happy international box sizing awareness day
  49. It feels like React is getting a bit of a kicking recently
  50. A highly configurable switch component using modern CSS techniques
  51. Low-tech Eleventy Categories
  52. Piccalilli Links
  53. Reality Check #3: Building out a layered hero grid layout from Dribbble

2023 11

  1. Piccalilli will return in 2024
  2. LH units are cool
  3. Reality Check #2: Building out a fancy 404 page from Layers
  4. Reality Check #1: Building out a furniture site from Dribbble
  5. A (more) Modern CSS Reset
  6. Quick Figma tricks you may not know exist
  7. Some simple ways to make content look good
  8. Relative rounded corners
  9. How a minimum viable experience produces a resilient, inclusive end-product
  10. My favourite 3 lines of CSS
  11. Line heights in CSS work better with ratios

2022 1

  1. A CLS punishment for progressive enhancement?

2021 16

  1. Learn Eleventy From Scratch is now open source
  2. Define delay for each property in the transition shorthand
  3. Prevent squishy elements with flex none
  4. Build a fancy hover animation
  5. Container Queries are actually coming
  6. Use transparent borders and outlines to assist with high contrast mode
  7. Disable client-side React with Next JS
  8. Fluid typography with CSS clamp
  9. Add inline SVG directly in your CSS
  10. CSS Frameworks, hype and dogmatism
  11. Add scroll margin to all elements which can be targeted
  12. Convert a 2D array into a flat, 1D array of unique items
  13. Control changing numbers with font variant numeric
  14. Use CSS Clamp to create a more flexible wrapper utility
  15. Build a fully-responsive, progressively enhanced burger menu
  16. Load all focusable elements with JavaScript

2020 39

  1. Dynamic footer copyright date in Eleventy
  2. What are design tokens?
  3. Flow CSS Utility
  4. Solution: Progress Stepper
  5. Challenge: Progress Stepper
  6. Build a responsive media browser with CSS
  7. Create a JSON feed with 11ty
  8. Picture element as a progressive enhancement
  9. Use grayscale filter to see where you are relying too much on colour
  10. Create a line break while maintaining inline status
  11. Visually hide an element with CSS
  12. Tips and notes about freelancing
  13. Build a dashboard with CUBE CSS
  14. Squishy button active state
  15. Aligning description lists with CSS Grid
  16. Contains CSS attribute selector
  17. A safer way to vertically fill the viewport
  18. Easy horizontal and vertical centering in CSS
  19. Make a button element look like a link
  20. Limit line lengths to increase readability
  21. Quick and easy local server
  22. Responsive borders with CSS outline
  23. Use a set to remove array duplicates
  24. How to use the lesson project files to rescue your project
  25. Learn Eleventy From Scratch launch day
  26. CUBE CSS
  27. Solution: Heading Keyline
  28. Challenge: Heading Keyline
  29. CSS Logical Properties
  30. Build a light and global state system
  31. Creating a full bleed CSS utility
  32. Create a responsive grid layout
  33. New shoes
  34. Solution: Auto-scrolling, responsive grid
  35. Challenge: Auto-scrolling, responsive grid
  36. Solution: Tabs
  37. Challenge: Tabs
  38. Solution: Progress Button
  39. Challenge: Progress Button

2019 14

  1. Solution: Duotone card
  2. Challenge: Duotone Card
  3. Solution: Toggle switch
  4. Challenge: Toggle switch
  5. Solution: Email sign-up form
  6. Challenge: Email sign-up form
  7. Create a semantic breakout button to make an entire element clickable
  8. Create a user controlled dark or light mode
  9. Create a split, faux-container layout with CSS Grid and Flexbox
  10. Two simple methods to vertically and horizontally center content with CSS
  11. Relative sizing with EM units
  12. Creating an aspect ratio CSS utility
  13. Get a CSS Custom Property value with JavaScript
  14. A progressive disclosure component

2018 1

  1. Bypass service worker on localhost