Fun with grid lanes

Patrick's Introduction and Early Web Nostalgia

The host introduces Patrick from the Microsoft Edge team, highlighting his work with WebDX and Open Web Docs. Patrick opens with a personal story, showing a photo of himself at 16 surfing the early web, and reflects on the creativity sparked by the constraints of early web design — tables, sliced images, Dreamweaver, and pixel units — drawing a parallel to the spirit of experimentation he still carries today.

Creative CSS Experiments: Playing with New Platform Features

Patrick showcases a series of personal CSS experiments built purely for fun and learning: planet orbit animations using Offset Path and anchor positioning, a Whack-a-Dialogue game using the dialog element, MathML combined with 3D animation, a custom select demo, Pac-Man using Focus Group for keyboard navigation, a CSS Grid-rendered Pong game, and a chaotic anchor positioning demo. He emphasizes that building these experiments helps him learn deeply and push the platform forward — including finding and fixing a Firefox crash.

Why Experimenting with New Web Features Matters

Patrick makes the case for why developers should engage with new web platform features rather than defaulting to copy-pasted patterns, AI-generated code trained on outdated techniques, or abstractions that hide the underlying platform. He argues that using new features, sending feedback, and reporting bugs is how the web evolves — and that a stagnating platform is effectively a dead one. He uses the wind tunnel analogy to illustrate how browser vendors ship prototypes to learn through iteration before finalizing specs.

Introducing GridLanes: What It Is and What It Isn't

Patrick introduces CSS GridLanes (formerly known as masonry), explaining its key characteristics: it is a new built-in layout type, not a special kind of Grid; it is one-dimensional; it supports both column and row directions including reverse; lanes can have different sizes; and item placement is opportunistic. He covers browser support, noting Safari shipped first in March 2024, that his team at Microsoft Edge is implementing it in Chromium, and that Firefox had an earlier prototype. He also addresses the visual order vs. DOM order accessibility concern.

Is GridLanes Something People Actually Want?

Patrick addresses two common objections to GridLanes: whether the layout style is still relevant beyond Pinterest, and whether it is good for users given its seemingly chaotic ordering. He points to State of CSS surveys placing it in the top features missing from CSS, and argues that while it may not suit content requiring strict reading order, it should be available as a creative tool. He then demonstrates playful experiments with 500 and 10,000 animated items in GridLanes to stress-test the layout engine.

GridLanes Syntax: Shape, Orientation, and Defining Lanes

Patrick walks through the core syntax for building a GridLanes layout step by step: using display grid-lanes, choosing orientation via grid-template-columns or grid-template-rows, applying the full CSS Grid track sizing syntax including repeat, fr units, and auto, and controlling item placement with grid-column and grid-row. He also introduces intrinsic lanes — using auto inside repeat — which allows the layout to size lanes based on content when item sizes are unknown in advance. Progressive enhancement strategies are also covered.

Understanding GridLanes Flow: How Items Are Placed

Patrick dives into the most distinctive and complex aspect of GridLanes: its opportunistic flow algorithm. Using side-by-side comparisons with Flexbox and multi-column, he shows how items are placed not in strict row or column order but by always targeting the shortest available lane while trying to respect reading order. He then introduces the new Flow Tolerance property, which lets developers control the trade-off between lane balancing and DOM reading order — stepping through item placement one at a time to make the algorithm intuitive, and explaining why the default value of 1em smooths over minor pixel differences.

Syntax Recap and Real-World GridLanes Design Examples

Patrick summarises the GridLanes syntax — display type, grid template properties, gap, grid-column/row, and flow tolerance — then presents a broad range of practical and creative examples: entry animations, scroll-driven animations, asymmetric two-column editorial layouts, infinite scroll galleries, Kanban boards, testimonial grids, photo galleries with switchable row/column direction, variable-width lane galleries, a recreated Edge blog, a row-direction Gantt chart simulator, and organic diary-style layouts. These examples illustrate how GridLanes goes far beyond Pinterest-style masonry.

Closing Summary and Call to Experiment

Patrick wraps up with a concise summary: GridLanes is one-dimensional, opportunistically placed, supports the full grid track sizing system, and is available today in Safari and behind a flag in Chromium. He closes with an invitation for everyone to reconnect with their inner curious teenager and keep experimenting with the web platform, encouraging attendees to share what they build with GridLanes.

Q&A: Browser Behaviour, Accessibility, Naming, and Syntax Decisions

The host fields audience questions covering: where Patrick's demos are published; what happens if both grid-template-columns and rows are set (currently last wins, under discussion); whether logical property aliases should exist for rows and columns; why item five appeared in an unexpected column (opportunistic placement); favourite units for flow tolerance (lh is a promising starting point); tab order and reading-flow accessibility concerns; how layout reshuffles when an item grows; the rationale behind the GridLanes name (reusing familiar grid properties to reduce learning curve); how layouts reflow across viewport sizes; whether lane-position selectors exist; interaction with upcoming grid rules for secondary-axis lines; and why fill-reverse syntax was chosen over row-reverse.

CSS day always tries to bring folks from all the browsers, and our session is brought to you by a passionate fellow from the Microsoft Edge team. He's not only a fantastic writer and educator in the in various text publications and their own blog. You should have your own blog, like Brahma said. Our next speaker is our next speaker is invested in WebDX and Open WebDocs. WebDX is a community group which they co lead that's focused on baseline and the open web docs is which and the open web docs which is a nonprofit initiative that works for the docs on the web.

They are the folks who work a lot on the CSS docs on MDN, for example. Please give a warm caffeinated round of applause for Patrick.

Thank you. Alright. Hello, everybody. So excited to be here. This is my second time here on this stage. I'm really happy to be here starting with a blank slide of course. Thank you PPK for having me and thank you everybody for being here. So fun with GridLanes. Let's get started. Let's get into it.

I'm going to be dating myself a little bit here. This is thirty years ago. This is me, 16 years old at the time. So you do the math. I am wearing my pajamas here, surfing the Internet or the web in front of the family computer here and having a total blast. Like, I fell in love at first sight with the web, and this was such an amazing experience.

If we zoom in on the screen, some of you might recognize the amazing animated Netscape logo, which was really, like, tremendous. Pages took so long to load that you had time to look at the animated logo, and it was so, so amazing. Looks like I'm browsing my own website here, by the way. Sites at the time were really quite the piece of art, and credit goes to the Web Design Museum website for some of these screenshots. Lots of images, colors, lots of details.

Obviously none of these was responsive, but also columns of content with varying height items in them. Could these be a masonry layout? Maybe. But anyway, at the time, you see, to create any of these layouts, you needed a lot of images, like this fancy box here. It was not just like you couldn't use border radius, background image, and stuff like that.

So you had to use nine elements with each of their own custom made images repeated along the right direction to get that fancy box. If you wanted to do a menu like that that has a hover and a click effect and maybe a fancy font, you'd have to have three images for each of these states and then use JavaScript to swap them on mouse click, mouse hover, stuff like that. I would personally use Dreamweaver because that was like I didn't know any JavaScript at the time and this great, really great fun.

But, like, images were really the name of the game at the time. Right? I would spend time in Photoshop creating, like, a design, something really weird and crappy, of course, and then slice things up into many little pieces, and then reassemble everything in an HTML file with tables inside of tables inside of tables. And of course using pixel units.

As you know, this is the best unit of all. And it was not elegant, but it was like this was all we had. We had to push against the boundaries of the platform of the time. Right? And all of these constraints, they really fueled creativity. And this is this this is always true. Like this is even true today even if the web is much much larger and has many more capabilities.

As soon as you have a boundary of things you can do, you tend to try and push and poke holes and try to go farther than what has really been possible. And so the playground, because to me this is really a playground, it got much, much bigger, but it is still a playground where we can have fun and create wonderful experiences and and just express ourselves. So today I'm still very much this 16 year old kid at heart in front of the computer except I have kids of my own. This is my youngest and we're playing an HTML CSS kind of game that I made.

So I still keep doing those experiments, only I do them for them as an excuse. Let's just review a few things that I just have fun playing with. This is Offset Path. I didn't know about Offset Path animation, so I took some time to learn it and build this thing where planets are animated around their orbits and the little labels.

They stick around with their planets because they are using anchor positioning to do that. And then, of course, you can make it go a lot faster and try to break browsers as you do so because why not? It's always nice to try and break stuff. Here is another one. This is whack a mole except it's using dialogue.

So it's more like whack a dialogue. Each of these divs is containing a single dialogue. It's being shown randomly by Javascript so there's a little bit of Javascript but each dialogue contains a single element that uses the command and command for attributes so that when I click on them to close on their own and I don't have to do JavaScript for that. Flying Math. Because why not?

MathML is a wonderful thing. I didn't know anything about it and it's a wonderful syntax. It's quite easy, quite powerful. And I combined it with three d animation just to have fun and learn a little bit. Jake talked about custom selects. And I was really interested to see whether you could make the picker disappear and only have the options.

And you can, yes. You can remove the size constraints on the picker element and have the options just float on top of the whole page. And I find this a really cool thing that you can do that now. This is Pac Man. Very very simple version. There's no enemies. There's no ghosts. And there is also no JavaScript.

So I am moving with the top, bottom, left, and right arrow keys. And everything happens on its own because I'm using Focus Group. Focus Group is not a well known feature because it's only coming to Chromium right now. It's a great accessibility win. It's just a couple, like a few attributes you can put on your HTML element to get a key arrow navigation for free for your toolbars, menu bars, and whatnot.

So again, trying to use something in a way that wasn't really intended to be used at the beginning. This is Pong. This is the game that I was playing with my son on the previous photo. I'm using the arrow keys to try and play against myself. But what I was interested in was rendering this in CSS Grid.

Every pixel in this game is a CSS Grid cell. And so at each step of the rendering loop, the only thing I'm doing is repositioning the entities by using the GridArea property. And then this one, I was really interested in learning about anchor positioning because this is really amazing and very powerful, but also super complex at times. And so the red popup is the only one that has a click and drag event.

So when I do this, that's the only one that moves. But it's also chained with hundreds of other popups through. Each of them is chained to another one and eventually to the red one with some offset that's random. So you get this wonderful chaotic experience. Anyway, all of this to say that the reason that I'm doing this is, a, because I want to have fun and also learn.

And having this fun helps me to learn a lot more than if I was just scratching the surface. And b, also doing this allows me to push the platform forward a little bit more. And that's going to be one point in my talk is actually when I worked on this demo, I crashed Firefox. And then I reported the bug and the bug got fixed.

And that's amazing. Right? It's helpful for everybody in case somebody else wants to do that as well. I also don't want to seem out of touch. I'm not saying that you all should go and take hours of your life, you know, work or personal life and do these stupid experiments. What I'm saying is the platform's here. It has thousands of features.

They're just waiting for you to use them. So if you heard about a new feature during this conference and you have a new project starting up, maybe think about trying it out for a new project. So why all this? First of all, because computers are fun and we want to have fun. The world is too serious and too sad, so let's just have fun. But also, if I wear my browser vendor hat for a second, this is how the web platform sort of evolves.

If all we do is copy paste from old outdated patterns or use AI that hasn't been trained on the latest patterns, like the latest features, or use frameworks that abstract everything away, if we never really use the actual HTML, CSS, and JavaScript features of the web that are available to everybody, then we don't really get to use them, send feedback to browser vendors about them, and we don't get to push the web as much as we would otherwise.

And users' needs and developers' needs, they keep on evolving all the time. And therefore we must continue to use those new things and report feedback and usage so that we can continue going into the right direction. It would be really sad if we stopped altogether doing that because then the platform would start to stagnate a little bit.

And so altogether we need to keep on filling the pipe all the time with new features that can then become interoperable and standardized obviously. But a stagnating platform is basically a dead platform and we don't want this to happen. Thank you. Just as a kind of an analogy or a tangent on what I just said, I want to make this wind tunnel analogy which is when you are building planes, you don't write the rules for safe flight first and then build the planes.

You actually do the other way around. You prototype, you iterate, you put your planes into a wind tunnel, you see where things break, you discover turbulences, and then you write the rules. And it's a little bit the same with the web platform. You ship something. You ship it in a test version, in a preview version. You let users or developers play with it, and then you learn by iterating on these things.

And then eventually we agree on a final spec. And it takes time and it's very hard. And then we eventually get interoperability. So let's switch gears and talk about masonry, also known as GridLanes, which is another feature that has had a long life of iteration. It's been worked on for many years. It actually appeared on the web many, many years ago without any browser support at all.

People have been wanting to do that for a very long time. So just so we are on the same context, masonry is the common name that people are going to know this as, and this has been made popular by Pinterest. So columns going down with items of varying height in them filling those lanes. But as a high level overview, we'll be talking about those things. First, Grid Lanes is a new built in layout just like Grid, Flexbox, and other types of layout.

It has a new name, so if you've come to know this as masonry, you can sort of forget about it. The new name is GridLanes. Even if I don't like it that much, that's the name. It is not a special kind of grid. It does share a lot of things that are similar to grid, and everything you've learned about grid will come in handy a little bit, but it's not a special kind of grid, and one of the fundamental differences is that it's one dimension.

It's 1D. You get to control the lanes in one direction, for example columns or rows, but you don't get to control the other direction at all. It's also not only vertical. It can be horizontal. It's not only top to bottom. It can be bottom to top, right to left. There's a lot of flexibility we'll talk about. Lanes can have different sizes.

The Pinterest example I showed before, they were all the same size. They can actually have different sizes there. The placement of item is the most weird and that's the thing that you're going to have to get used to. It's opportunistic. It hates empty space, and it's going to try to fill it up. But you can control displacement a little bit.

You can move items to a different lane if you want to. You can make them span different lanes. And the final point to be aware of, and Kevin talked about it as well, is the visual order may differ from the DOM order, and therefore the order in which people using keyboard, for example, screen readers, are going to experience your application.

But that's the same with Grid and Flexbox. Browser support. Safari is the first one to have shipped real support for CSS GridLanes, and that's amazing. It's there since March '4. Spec is not completely finalized. There are still discussions. But as I said before, ship it and then we'll go and talk and iterate. Edge and Chrome are following closely behind.

My team at Microsoft Edge is the one implementing this in Chromium for all Chromium based browsers. You can already enable the flag. It's called CSS Grid Lanes Layout. And you can play with it. We should be able to ship before the end of the year. That's my hope. That's what I'm telling the engineering team about. And then Firefox was actually the first browser to ever ship a prototype version of Grid Lanes.

It was named Masonry at the time. The spec has changed since then, unfortunately, but they have a bug you can track if you want to see progress. Elephant in the room. There are two things that I commonly hear when we talk about this type of layout. One is, is it something that people actually want? Right? Like it's been for years on Pinterest.

I don't like it anymore. It's out of fashion. And that's a fair argument, and you might not want to use it. The thing is, in State of CSS survey 2024, 2025, it's in the top five, top three even features that are missing from CSS. So it is still something that people demand, obviously. And if you haven't filled the State of CSS 2026 survey, should go and do it as soon as you can.

The second thing that I hear about it is, is it actually good for users? It can seem chaotic. Things go into places and you don't know how to read the content in this layout. And yes, so if you're working on something that needs to be read in a very particular order, masonry or grid lanes might not be what you need to do.

Right? Maybe that's not the right answer for what you're trying to do. But let creatives be creative. I think this is something people want. It can lead to very interesting visual results, and I think they should be able to do it. So because I like to have fun, I played with masonry. Here's a masonry layout with 500 items.

They are animated. Their height is animated and they're colored. And just to have fun and see what the browser does with this kind of stuff. It's also stacking from the bottom to the top. But why stop at 500 when you can have 10,000? This is 10,000 items in a grid lane layout. The gap is animated. You can use the gap property.

It's animated. It's a row direction grid lanes layout. The widths are different, leading to kind of a crazy abstract hypnotic pattern. And then this one I really like. Again, as I mentioned, you can stack things from the bottom to the top, and this is what's happening. It's also combined with view transitions here. So when you remove items by clicking on them, the whole stack pulls down. And each one of these lanes, items are placed into that specific lane. It's not allowed to go to other lanes, and so it feels like a stack of balls that has gravity with it, which I kind of liked.

And then just a final one that has two layouts, one at the top going from the top to the bottom with the bubbles, and then the other bubbles at the bottom are going from the bottom to the top. Just playing and seeing how the layout responds, and just for me to understand more deeply how this whole thing works.

So now let's talk more seriously and try to learn more about GridLanes. First of all, I mentioned it. There's a new name. It's GridLanes. Think of it as swim lanes or traffic lanes. Like on a motorway, when there's a traffic jam, you tend to want to get to the shortest lane so that you can reach your destination sooner. That's a good analogy.

Items are going to want to flow as close to the top as possible. So Grid Lanes is a new name. Progressive Enhancement is another thing I want to cover. If the layout you're creating doesn't really depend too much on there being empty space or not, like the one on the left, it's okay to do display grid and then the line right after display grid lanes because browsers that don't support that line, that value, are just going to ignore that whole line and you're going to end up with a thing on the left.

But if the browser supports it, then you end up with a thing on the right. And that might be perfect for you. You can also use the supports rule to detect whether Display Grid Lanes is supported and then have a totally different code for your layout. Shape and orientation is the first thing that usually you think about when you want to design.

When you're working with a designer or you're designing a web page, the first thing you see is the overall shape before thinking about the content usually. And so that's what we're going to be talking about first. So we're going to go through the steps just to learn the syntax a little bit. On the right here I have a stack of divs that doesn't have any layout whatsoever.

It's just a stack of divs. And now we're going to go through these steps here on the left at applying them. So the first thing you want to do if you want a grid lanes layout is use the display grid lanes property or declaration. The only slight difference when I did that was that now the gap property starts applying, so that's why there's a little bit of a jump. Gap works in Flexbox and Grid as well.

So quite nice to have it here. The second thing you want to do is decide whether you want columns or rows. And the way you do this is simply by either using GridTemplate columns or GridTemplate rows. Depending on which one you use, the orientation is going to be different. And those are the same properties that CSS Grid uses.

So let's say I want columns, or let's say I want rows. Either one or the other. Here I only have two columns. They're very boring. We can have more than that. We support the entire grid track sizing syntax. So I could do two FR, one FR, three FR, one FR, and suddenly my lanes have different sizes and my items rearrange within them. And then to further control the shape, the overall shape of my layout, I can continue to do a couple of things.

The pink items here, I can tell them to span two columns. So grid column span two, same as in grid, will work here too. And grid column one will work here too for the blue item to position in all the way to the first lane. So these properties work sort of as expected, except again, you're only controlling one direction here.

Because I chose columns, that's the only direction I can control. Flexbox is very similar to GridLanes in a sense that they're both one direction and they both support either row or reverse, or column or reverse. And this is the things that GridLanes is supporting in Chromium right now as well.

So you can have it be rows filling from the left if it's an English language page, or from the right if you use the fill reverse syntax. And same for columns. When it comes to defining your lanes, I said that the entire grid sizing syntax could be used.

And so you could do 1fr, 1fr if you wanted to. You could use the repeat function. You could use the auto keyword. If you've used CSS Grid, this is all very, very familiar to you. Repeat auto fill min max will work here as well. And then the other thing you can do, which CSS Grid does not support, is intrinsic lanes.

So Intrinsic Lanes is the ability for you to use auto inside of your repeat function. So even if you don't know in advance how wide your items are going to be, you can let the Grid Lanes layout size your lanes based on the content itself. So And if you have a bunch of photos scrolling from a database, for example, they all have natural sizes, you don't know how many times you want to repeat it, that could be super helpful.

Now that we've talked about shape, the general shape, let's talk about flow. Flow is even more important than shape because shape was pretty similar to grid, predictable, easy to understand. Flow is this whole other beast. If you look at these three diagrams from a distance, they all have the same general shape.

If you ignore the colors and the numbers, they all have exactly the same general shape. Flexbox is on the left, and you can see, if you look now at the numbers, that So this is a column direction Flexbox layout that has wrapping. So the items are going to go down one column, and then to the next and then to the next.

Multi column is the same thing. If you want three columns, it's gonna start to fill the first one, then the second, the third. Masonry is totally different. If you look at the numbers, one, two, three, four, five, six, seven, almost like rows. Right? Except there's not a row in sight. If you're doing a column direction, grid lanes layout, forget about the row. Right? There's not going to be any row.

You cannot address the row. It does not exist. If you have items that have almost the same height, then sure, it may look like a row. Like, look, almost a row. But if your items are of very different heights, then it's definitely not a row. And not only is it not a row, because it goes like in this weird fashion, but it's out of order.

Right? It goes one, two, three, four. Right? It goes back and forth like this. So Flow is weird. To further drive home the point, this is Flexbox and you can see again that things go down one column and then to the next. Multi column is almost the same thing, except fragmentation works in multi column. So items are allowed to start in one column and then resume into the next, like item four and item eight.

But the flow is essentially the same thing, going down one column after the other. If you switch to grid lanes, you see a whole reshuffling. And thank you, View Transitions, for making that whole animation possible. Things completely get reshuffled. Right? Show flow now will do this crisscross pattern that almost seems chaotic. I've also heard many times that GridLanes is just like Grid except you don't have gaps.

I mean, it's true in a sense. That's what it looks like. But it's definitely not how things are being placed. This is a grid container. It gives you a grid. Right? Things are aligned in columns and rows. And that's why you have these gaps here. If you remove the gaps, and what I'm doing here is I'm just using negative margin to virtually move these things up so that it looks like a grid without gaps, and now you switch to actual grid lanes, you'll see a bit of reshuffling again because things are not positioned exactly in the same way that works in Grid.

And we'll see why now. So what I'm going to do here now is I have four lanes in my layout. It's column direction grid lanes. And each time I click on the Step button up there, we're going to be adding one more item to the layout. And this is just to show step by step what the algorithm does. And so to understand this, the algorithm will have two things it's trying to do.

One, go to the lane that has that is the shortest every time. And second, respect as much as possible the reading order. This is an English text, English language page, so it's always trying to try to go from left to right. So when I click the step button, we placed an item in the first lane because there was no item yet.

They're all the same size. And so how do we pick the one to place the next item? Well, we go from left to the right, so we pick the first one here. Second goes next to that because again we're going from left to right. Next step, we have two columns that are equally short. Which one are we going to pick?

The next one because we just filled that one line here, so we continue our progression from left to right. So that's where it's gonna go. Now we've filled all of them and we have one line that is the shortest. 107 pixel. So that's the one that's gonna win. Right? Now we have two columns that have exactly the same height.

130 pixel. Which one do we pick? Again, because we can't choose, we go left to right. We just filled that first column, so we're going to the next one, etcetera, etcetera. So that's the whole logic for placement. But that's not enough control for developers. We want to be able to give you more flexibility.

So we'll do that exercise again. But this time we'll talk about something new with GridLanes that does not exist with any other types of layouts, and it's called Flow Tolerance. And the reason this exists is that GridLanes is trying to combine two goals that cannot be combined. One is balancing your lanes, which means trying to have a balanced result where there's no one lane that is much longer than all the other ones. And it does this by filling those lanes whenever there's a space, it goes there.

So at the end, when you have all of your 500 items or whatever in there, they're almost all the same size. And the second goal that it's trying to optimize for is respect as much as possible the DOM reading order, which is English takes here, go left to right, wrap down, left to right, wrap down, etcetera. And those goals are not compatible.

Not always. So that's why there's a new value called flow tolerance, a new property, and you can set it to anything you want. So I'm going to start filling the first four items. And I'm going to set flow tolerance to infinite because I find that it's a good way to understand flow tolerance. Flow tolerance can take a number, like 10 pixels or five rem or whatever. You can also say to infinite.

If you do, that means now all of your lanes are always tied. The system is always gonna assume that all of your lanes have exactly the same amount of space available in them. And so that means it's always gonna go in the reading order. Know, lane one, two, three, four. One, two, three, four. One, two, 34. But you can change this because what happens is that now your lanes are a little bit unbalanced.

Right? You see lane one and three are much taller than the other ones. And that's why you have this Flow Tolerance property you can use to make things exactly how you want them. Because what happens most of the time is you have a lane that is 100 pixels and the next lane is 102 pixels. You don't want to necessarily choose because of that two pixel difference.

Maybe you prefer to go in a reasonable direction so that the user can keep on reading, like scanning the document from left to right or right to left, whatever it is. And so that's why you have that flow tolerance. And the default value is actually one m because it removes these little minor differences of like two pixels or whatever.

So that's Flow Tolerance. Just as a summary of the syntax we've seen, first thing, display grid lanes, new display type. So that's how you opt into the new layout. Then you can use much of the CSS Grid syntax, so Grid template columns or Grid template rows to create the general shape as well as the track sizing syntax with the repeat function, etcetera.

Gap works. Grid column or grid row work depending on which is your direction to place items in a particular lane or make them span multiple lanes. And then the new kid on the block here is Flow Tolerance. Play with it. Have fun. Sometimes infinite is actually what you want. It really depends on what you're trying to achieve.

Let's switch to GridLanes examples so that we can have more of an idea of all of the things you can do with this new type of layout. An entry animation. Why not giving it more of a interesting vibe so that things feel more alive? Or combining it with scroll driven animations.

Right? So that your item starts to flow from the bottom. And there's no like it works really well with grid lanes because things always tend to stack at the bottom of the lane anyway. This is another one that I made, which I wanted to have some kind of a two column layout, but I really wanted more of a one third, two thirds.

So it's like one third for the text, two thirds for the artwork here, and then the other way around here. And you can see that GridLanes is sort of more organic in a way. The text here doesn't always start flush with artwork, and I really like that as a creative possibility that it's giving me. And it's really quite simple to do something like this with GridLanes just because it's trying to eat as much space as it can.

This one here is a demo of infinite loading. It works amazingly well with GridLanes because as you scroll down and you add more items, they are naturally going to stack at the bottom, which is where you want them to go. Right? It's an excellent use case for infinite loading. No JavaScript needed for this kind of stuff. The only JavaScript I have here is like a intersection observer to know when I've intersected the last item and then I start pulling more from the server side and just putting them into the DOM and they just appear where they're supposed to appear.

This was another one that I had fun building which is a Kanban board. So maybe your team uses Kanban as a planning tool or whatever. There are four lanes here. They are not all the same size. And items are placed specifically into those lanes. I'm controlling exactly which lane each item goes in by using grid column in that case.

Right? So this box, print number four, has a grid column value of two so that it is in here. And now when I click, I can move things in and out of columns just by using the GridColumn property. You could do this with Grid. You could do this with MultiColumn. You could do this in many, many different ways.

It was really just easy and fun to experiment with GridLane. And again, really easy to do it with this. But there are always tradeoffs, and it really depends on what you're trying to achieve. This one is actually from Kevin, Kevin's website. He has a CSS course which you should totally check out because it's really good. On the course webpage there's a series of nice things that people have said about the course.

Right? And Kevin used multi column, which means that the quotes go from fill each column one after the other, which is fine. I just wanted to recreate it by using grid lanes because the implication is that, let's say those quotes, they come from a database and you want to always have the latest one near the top, then GridLanes gives you that for free.

All of the latest are going to be across the top and then slowly making their way down your layout just by virtue of trying to fill the space. So again, depends on your use case, but that's something that you can do. Here is an example showing a photo gallery where you can let the user switch between rows and columns.

Because maybe that's something that you want to do, and that's something that GridLens lets you pretty easily do. This is a demo showing the fact that you can have your lanes have any size that you want. Pinterest made masonry popular, but it only has the same width for all of its lanes.

And I find this really, really boring. You can change that up. You can have the first and the last be fixed, then the other columns in the middle be adapting to whatever space is remaining. You can have alternating narrow and wide columns. You can have Fibonacci sequence columns. Whatever you can imagine, you can do those things with the grid lane layout. Another one, kind of a photo gallery, because that's usually the use case that lends itself most to this type of layout.

Here demonstrating the fact that you can have items within your layout that start at a particular position and span a certain number of lanes. And that gives us a really interesting, engaging design result, I find. I'm using the Order property here as well, just like in Flexbox, to move the text into a different position within the layout.

I had fun recreating a version of the Edge Blog. We do blog about the web platform stuff quite a lot, so if you want to visit us, that's great. Just seeing what it would look like. And I think not always the best idea. Again, if you have a very strong order in which you want people to read your content, it might not be the right solution.

But here, I find that it's okay because you're attracted to a picture or to a title and you don't want to read everything. You just want to have a general impression of the blog and maybe pick a story. Here's another one. Streets of Seattle. Just a nice visual layout I find where you have two grid lanes layout, one filling from the bottom and the other one filling from the top. It's giving you a lot of freedom in expressing yourself. Right? You can really have cool looking results with this type of layout. News websites, they tend to really like GridLanes layout because they really like packing a lot of information densely into small spaces, and so GridLanes also works great for them.

This is a demo. Of course, it's not a real newspaper, but the interesting thing here is that, again, space is used. You can have stories that span multiple lanes if you want them to be more highlighted. Or you can also have things that go all the way across. Here I'm using grid column one slash minus one so that they span the whole tracks of my layout.

Another one here is a photograph gallery where you have some photos coming from the bottom and disappearing when I scroll, and then they appear again at the bottom. Kinda cool, I thought. Here is another one where this is using the API from the Art Institute of Chicago collection. And you can oh, of course, I don't have Internet.

That's fine. And then this one, I had a lot of fun. This is a row direction grid lanes layout which sort of simulates a Gantt chart, another sort of planning tool for teams. Right? You have three teams here. They all have tasks to do over time. And, so I'm using the grid row property to assign those tasks to the right team.

And the height or the width, sorry, of these tasks actually pushes things across. Right? Because some of these tasks span several of my lanes. And so because they come before in the DOM order, they're gonna end up pushing the rest behind. And if I remove them, then everything's gonna try and eat as much space as it can to fill the void and and and therefore, we can be done sooner with a project if you remove all the sprint retros because they are useless.

A couple of other ones, some pictures I took three years ago in Amsterdam. Like a diary, you can have inspirational quotes if you want, photos. It doesn't have to look so rigid. GridLanes is not rigid at all. I find it super organic and I really like the sort of random, almost, results that you can easily get.

And I think this is the last one showing also the organic nature of this thing. You can play around with this. Some of these are GridLanes items. Some are just empty space, they just show some of the background behind It can be used in very, very creative ways. So remember, as a kind of summary, it is not just Pinterest in CSS. It can go a lot further than that.

As you've seen. It can lead to very creative design results. You have the whole power of the grid track sizing system at your disposal, so you can use that. Fundamentally, it's one dimension. If you're doing columns, you don't have rows, you can't control rows. The placement is very opportunistic.

It can seem chaotic, and that's sometimes weird and uncomfortable, but it allows for some strong design decisions still by using explicit placement into lanes or by tweaking the flow tolerance, might end up giving you the results that you want. And finally, you can try it today. Again, Safari. Use it in Safari. Use it in Chromium based browsers by enabling the flag.

And I mean, what I want to close with is you should all remember your inner 16 year old kid and have fun with the the web. Continue playing. Continue having fun. And, you know, let me know what you build if you end up using GridLensLayout. And that's all, friends. So thank you. Thank

you so much. That was excellent. Join me Yeah. At the square table. Right. We've got quite a few questions from the audience. First question that a lot of people are wondering, are you making these examples accessible somewhere? There it is. Yes. Answered myself. Great.

They're all here.

Fantastic. There's a spicy one. I'm gonna skip that. Sid asks, what happens if you use both template columns and rows for the grid lines? Will one win out, or will it default back to a grid display or something?

It is going to I think the last will win currently, but it is under discussion. So the thing that's under discussion is we want to add maybe another property so that you can define both and then you can explicitly say which one you want to win. And that property will also be the one that helps you flip the direction of filling or wrapping.

And that part is still under discussion. We're discussing specifically with Apple on the CSS Working Group and others and Google as well, just to try and make progress on which is the property that will allow you to do that. It's not clear yet.

All right. Jeremy asks, should we have logical properties as aliases for rows and columns? Inline for rows, block for columns?

Yeah. I think, yeah, I think that would be a good idea. I think we should do that also for Grid and Flexbox. Yeah. Totally.

Yeah. CJ saw in your Definitely Not a Row example, the fifth item seemed to be in the third column. Why?

Yes. So that's because of the opportunistic placement of grid lanes, always trying to find the shortest lane. You cannot guarantee that your items are always going to go column one, two, three, four, five. Right? It depends on which one is the shortest. And that's why I said, when it said definitely not a row, it actually said not definitely a row or something like that.

It was a random order. And so Flow Tolerance can help you get rid of that. If you've put Flow Tolerance infinite, then you do get the traditional left to right order or right to left if you're in a right to left language, but it also gives you unbalanced lanes.

Nice. So Brett asks, for flow tolerance, what are some of your favorite units to get the most aesthetically pleasing effects? C key units? I saw you using the LH units. Maybe some insights? Great talk.

Thank you. I don't have a lot of insights yet. I've not been using it enough. This is very, very new. So we need to, like, iterate on this thing. We need to I I need to get my hands more dirty with this thing to see what works and what doesn't. LH seemed like a really good unit, to be honest, because, you know, it fits with your line height, and so then maybe it's more predictable that way.

But I would I would start with that.

This is I I I quite like this. There's two accessibility questions. Paul asks, are there accessibility concerns with tabindex with gridlines?

With? Sorry.

Accessibility concerns with tabindex with gridlines.

Yes. So that's the reason that I said that the visual order may end up being different from the DOM order, which is what your tabbing order is going to be based on. I don't know yet whether reading is it reading flow? Yeah. Reading flow. I don't know whether it's implemented with GridLanes yet. I suspect not. But that would be a good solution for it.

Because yes, if your items are very different in height or width, they're and going to end up being in a totally chaotic order. Right? And so if you tab, you're going to be switching back and forth within your layout, which is maybe going to be weird. It depends on what you're trying to do.

Maybe it's fine, maybe it's not, but yes, that's definitely something to be aware of. Use flow tolerance to maybe fix some of that, and then watch out for reading flow whenever it comes out as supported with grid lanes.

And to follow-up the other accessibility question, because they didn't add their name, besides what you just said, do you have any other recommendations in terms of accessibility?

Not really. I think it really depends on your use case. Be responsible. Test your thing with a keyboard with a screen reader and see what happens.

This question doesn't have a name either, but what happens when an item at the start of the layout gets bigger? Do you get a little grid column dancing at the bottom?

A grid sorry. If a grid lane item is bigger at the start?

So what happens when an item at the start of the layout gets bigger?

Yeah.

Do you get a little grid column dense at the bottom?

So you if if things change, then things move around I think I'm understanding the question this way. Yes. If you change the size of something after your layout has been constructed and rendered onto the screen, then things may change in another kind of weird way. Right? Cause suddenly if that first item takes double the size, then the other item here is not going to fit anymore.

It's going to go down. And because it goes down, something else is going to go somewhere else, etcetera. And if you apply view transition to this when you do so, then everything shuffles around and it's quite interesting to see. But yes, that's something that you need to be keeping into consideration as well.

Steven asks, is there anything you can tell us about the decision to use the name GridLanes rather than say GridMasonry? Yeah.

So I work with people who work on the CSS working group, I don't directly engage with them. So all I know is from other people indirectly. I don't like GridLanes, the name, that much. I know that one of the ideas was to because we reuse so many of the grid properties, like grid column, grid row, grid template column, grid template rows, the idea was let's make it easier for developers to get used to this new thing.

CSS is so complicated already. We spent years teaching them about CSS Grid and Flexbox already. Why add another thing on top of this that changes everything? So the decision and the consensus on the working group was, hey, we settle on these properties. They're the same as CSS Grid. And therefore, we also use a display name that's a little bit similar to Grid. It's GridLane.

So you know it's a special kind of Grid, even though I said it's not a special kind of Grid. But it puts your brain into this mode of like, okay, I'm using grid properties now. Honestly, personally, would have preferred for us to go display whatever, masonry or whatever, something better, and then have a whole set of other properties that are based on that with different names.

Cause I think then you know you have your area of expertise. You know you're using those properties and only those properties and they only apply to that. Cause sharing with other layout systems can sometimes be complicated. For example, what do you do with a grid shorthand? The grid shorthand is already super long and super complicated. No one uses it.

What if it needs to also now encompass grid lane stuff? Is it even compatible? So that's, I think, a little bit of the tension. But again, we are trying to make things progress.

Yeah. Fair enough. Jesper hopefully I'm saying this correctly. Jesper asks, could you demonstrate how some of the grid lane layouts reflow across viewport sizes? You you can do hand

Oh, yeah. No.

Or or you can just describe it out loud.

I mean, it's a little bit like the one of the previous questions where what if one item becomes bigger, things are gonna reshuffle. It would be the same thing here. It's not very different from Grid. If you have a Grid where you have a repeated number of columns by using the repeat syntax and you don't set any position, your items are going to go in a row fashion and then down and then down, etcetera.

So it's not very much different from that. If you resize your window, they're all going to go down into fewer columns and fewer columns, and it's the same thing that's going to happen with grid lanes, except the placement on the other axis is not gonna be aligned. It's gonna be a little bit different. But the same thing is essentially gonna happen.

Funny enough, there's still questions coming in. I'm processing them as you're answering them. Right. Estelle asks, are there selectors to select based on position within a column?

Based on position within a column. I don't think so. No. Not yet. But that would be cool.

Yeah. Good job. All the bright people are in this room right now. Know? I will ask them that. Asks, how will the coming grid rules interact with the green lanes layout? Will it be possible to add lines between items in the secondary axis?

I sure hope that we will be able to do that. Yes. That's the plan. Having lines, like separator lines between lanes, of course, obviously, but then between on the other axis, definitely, that's, like, that's a must have, I think. So the team has not implemented that yet, but this is definitely something that they need to consider.

Fresh, Alexis asks, why row space fill reversed and not row reverse?

So this is also another thing with using the grid syntax because I think the idea was maybe we were going to reuse the grid auto flow property. That's already also pretty complicated and we couldn't It's going to be really hard for me to explain cause I don't really understand it deeply, but it's another kind of tension with the CSS Grid syntax here where we just couldn't come up with a new name here.

And that's fine. There were so many questions. And if an answer is a bit more convoluted, please come find Patrick during the breaks. He'll be here all day. Very excited to talk about, as you know, source of knowledge on the topic. Please go chat with them. Thank you so much. Give a round of applause.

Fun with grid lanes

Patrick Brosset

An image of Patrick Brosset.

CSS Day

A logo featuring the words 'CSS Day' arranged in two rows, rendered in a stylized, geometric block font.

Patrick Brosset

.now {

  • 10:55 | Patrick Brosset

Google AG Grid

A stylized logo for CSS Day is in the top right corner of the slide header.

The bottom bar of the slide contains the Google logo, the AG Grid logo, and a small 'X' icon.

.now {

10:55 | Patrick Brosset

.now {

10:55 | Patrick Brosset

The CSS DAY logo is in the top right corner. The Google logo and AG Grid logo are in the bottom left and middle. An X icon is in the bottom right corner.
A photograph shows a young person looking at a vintage beige desktop computer setup. The setup includes a CRT monitor displaying a web browser with the animated Netscape logo, a computer tower, and a printer stacked on top. A keyboard is visible in the foreground.

Welcome to my page!

Est. 1999

Screenshot of an early personal website displayed on an old computer monitor, featuring a simple layout with navigation links, an 'About Me' section, and a blue background with white stars. A small embedded image shows a person sitting at a computer.

Welcome to my page!

Screenshot of a personal webpage displayed within the Netscape Navigator web browser.

Barbie Shoppe

Screenshot of an early Barbie-themed e-commerce website, featuring a shopping bag icon with a letter 'B'.

Screenshot of a historical news website.

A screenshot of an older website featuring news articles. It includes a portrait of a man wearing glasses, and a logo that reads "WORLD STORIES". A scrollbar is visible on the right edge of the page.
Screenshot of an early website interface. The page has a white content area on a light grey background, with a dark grey navigation menu on the left containing links such as "Home," "Web," "Design," "CSS," and "Layout." A pink mouse cursor points towards the right side of the main content area, and a vertical scrollbar is visible on the right edge of the white content section.
A white screen showing a magenta mouse cursor pointing left and a grey vertical scrollbar on the right side.
Screenshot of an old website, displaying text, images, and navigation links, with a mouse cursor on the right side.
A blank white screen with a pink mouse cursor.
A screenshot of an old website design, featuring a cartoon-style light green moth with antennae flying above green foliage.

I'm a fancy box!

A rounded rectangular box with a teal to blue gradient, illustrating an older web design technique for creating custom shapes.

I'm a fancy box!

An illustration of a rounded rectangular box with a teal to purple gradient background.

I'm a fancy box!

An illustration of a rounded rectangular box with a horizontal gradient from teal to purple, overlaid with dashed lines forming a 3x3 grid to demonstrate a 9-slice scaling technique.

I'm a fancy box!

An illustration of a rounded rectangular box with a teal to purple gradient background, overlaid with dashed lines forming a 3x3 grid.

I'm a fancy box!

A rounded rectangular box with a gradient background.
  • Home
  • Tips
  • Sign my guestbook
  • About
A vertical stack of four pink buttons labeled "Home", "Tips", "Sign my guestbook", and "About". A mouse cursor hovers over the "Tips" button.
  • Home
  • Tips
  • Sign my guestbook
  • About
A stack of four pink menu buttons, labeled 'Home', 'Tips', 'Sign my guestbook', and 'About'. A pink cursor shaped like a hand is hovering over the 'Home' button.
  • Home
  • Tips
  • Sign my guestbook
  • About
A vertical stack of four pink rectangular buttons forming a menu, with a mouse cursor hovering over the 'Tips' button.

Images were the name of the game

Constraints fuel creativity

constraints fuel creativity

The playground got BIGGER

Screenshot of a person playing an HTML/CSS game on a computer

Screenshot showing a child playing a game on a computer. The child is wearing a red and white hoodie and is typing on a keyboard, while another hand rests near a mouse on the desk. The computer monitor displays a grid of repeating patterns, likely part of an HTML/CSS game.

Offset Path Experiment

Screenshot of a computer screen displaying an interactive application. On the left is a black panel with numbers "25 25" and a vertical slider. On the right, a colorful grid of tessellating pink, yellow, blue, and green shapes.

Child and adult playing an HTML CSS game

A photograph showing a child in a red, white, and black hoodie sitting at a desk, looking at a computer monitor that displays a grid pattern. An adult's hands are also visible on the keyboard and mouse, suggesting a collaborative interaction with the computer.
  • Neptune
  • Saturn
  • Earth
  • Mercury
  • Jupiter
  • Venus
  • Mars
  • Uranus
A diagram depicting planets in orbit around a central yellow body, likely the Sun. Each planet is represented by a colored circle and labeled with its name.

Planets in Solar System Demo

  • Neptune
  • Saturn
  • Earth
  • Venus
  • Jupiter
  • Mercury
  • Mars
  • Uranus
A diagram illustrating a solar system with several planets labeled and positioned as if in orbit. Venus is highlighted as a large, bright yellow-green circle.

Solar System Diagram

  • Mercury
  • Venus
  • Earth
  • Mars
  • Jupiter
  • Saturn
  • Uranus
  • Neptune
A diagram of the solar system showing the Sun at the center with eight planets orbiting it: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune. Each planet is labeled with its name. In the top right are UI controls for playback and zoom.

Solar System Diagram

  • Sun
  • Mercury
  • Venus
  • Earth
  • Mars
  • Jupiter
  • Saturn
  • Uranus
  • Neptune
A diagram of the solar system shows the Sun at the center, with eight planets (Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune) orbiting it along concentric circular paths. Each planet is labeled with its name. In the top right corner, there are UI controls: plus, minus, 'U', and fast-forward/rewind symbols.

Solar System Planets

  • Sun
  • Mercury
  • Venus
  • Earth
  • Mars
  • Jupiter
  • Saturn
  • Uranus
  • Neptune
A diagram illustrating the solar system with the Sun at the center and planets orbiting it along concentric paths. The planets, from innermost to outermost, are Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune, each labeled with its name. In the top right corner, there are user interface controls for zoom and animation playback (speed up/slow down, play/pause, reset).

Solar System Simulation using Offset Path Animation

A screenshot of a solar system simulation. The Sun is at the center, surrounded by concentric orbital paths. Planets Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune are shown orbiting the Sun. Some planets appear blurred, indicating animation. In the top right corner, there are UI controls labeled '+', 'U', 'Q', 'K', and '«', with a mouse pointer hovering over the 'K' button.
  • Mercury
  • Venus
  • Earth
  • Mars
  • Jupiter
  • Saturn
  • Uranus
  • Neptune
  • Controls: +, -, U, », «
A diagram illustrating a solar system model. It features two views of planets orbiting a central sun, displaying Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune. The right side highlights a curved orbital path, likely demonstrating an 'Offset Path animation.' Interactive UI controls are present in the top right corner.
Screenshot of an interactive solar system visualization. Planets like Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune are shown orbiting a central sun, with their names labeled. Two instances of the solar system are visible. UI controls for speed and zoom are present in the top right corner.

You: 5 | Dialogs: 2

Screenshot of a Whac-A-Mole style game interface with a 'Stop' button and score 'You: 5 | Dialogs: 2'. It shows five circular holes, two of which have cartoon mole characters peeking out, one with a small hammer icon. The remaining three holes are empty.

Screenshot of Whack a Dialogue Game

Screenshot of a game interface showing five dark, rounded squares. A 'Stop' button and game scores 'You: 7 | Dialogs: 3' are at the top. A small hammer icon is on the bottom-left square.

You: 7 | Dialogs: 3

A screenshot of a "Whack-a-Dialogue" game interface. It features five circular elements, arranged with three on top and two below. Two of the top elements show the cartoon face of a mole-like creature, while the other three elements are solid dark brown, representing holes. A small hammer cursor is positioned over one of the empty holes, suggesting an active interaction point.

You: 7 | Dialogs: 6

Screenshot of a "Whack-a-Mole" style game interface with the score "You: 7 | Dialogs: 6" and a "Stop" button at the top. The game board features five dark rounded squares; one square reveals a cartoon mole character, and another displays a hammer icon.

You: 8 | Dialogs: 7

A game interface showing five dark green rounded squares on a white background. These squares represent interactive "dialogues" in a "Whack-a-dialogue" game, arranged with three in the top row and two below. A hammer cursor is positioned next to the bottom-left square, and a smaller hammer icon is shown inside that same square, suggesting an interaction or "whack."

You: 9 | Dialogs: 10

A game interface featuring a "Stop" button and a score display showing "You: 9 | Dialogs: 10". Below the score are five dark, rounded rectangular shapes, arranged in a pattern of three on top and two below. Several of these shapes contain faint hammer icons, indicating interactive elements in a "Whack-a-Mole" style game referred to by the speaker as "Whack a Dialogue".

x + y

ax² + bx + c = 0

x + y

log₂x

a + b

√64

ax² + bx + c = 0

x₁ + x₂ - x₃

x y

A

z w

V = ⅓πr³

limₓ → ∞ f(x)

a + b

cosA = B/C

{[(a + b + c) d}]}

cos(θ + φ) = cos(θ)cos(φ) -

π r²

x₁ + x₂ - x₃

AB

sinA = A/C

x + y

⁻¹/√x+1

tanθ = A/B

xx/yy

8.44 x + 55 y = 0

3.1 x - 0.7 y = -1.1

cotA = B/A

ax² + bx + c =

V ⋅ F = (∂Fz/∂y - ∂Fy/∂z)i + (∂Fx/∂z - ∂Fz/∂x)j + (∂Fy/∂x - ∂Fx/∂y)k

A = 4πr²

y

2 x x

2w

24

15/16

limₓ →

sin³(y⁴ + cos²y)πr³/3

cos(θ)cos(φ) - sin(θ)sin(φ)

8.44 x + 5.5 = 0

ABC Δ

3.1 x - 0.7 y = -1.1

f(a) = (1 / 2πi) ∮ (f(z) / (z - a)) dz

X = -b

x + y

A = xy / (zw)

V = (4/3) π r³

sin x + 5

{ [a + b + c] - d }

sin²x + cos²y = 1

cscA = c / B

³√x

tanθ = A / B

line = 1

2x² - 1/16 + 5² = 24 15/16

A = 4πr²

sin A = A / C

ax² + bx + c = 0

(4xi) (9xj)

∇ ⋅ F = ∂Fx/∂x + ∂Fy/∂y + ∂Fz/∂z

x = (-b ± √(b² - 4ac)) / (2a)

4πr²

√64

∫(1/x) dx

sin⁻¹x = arcsinx

³√x + 1

1))) = sin(θ)sin(φ)

ABC ∆

8.44 x +.55 y = 0

f(a) = (1)/(2πi) ∫(f(z))/(z-a) dz

cosA = B/C

x + y

A - x y

Z W

V = (4)/(3)πr^3

AB

sin x + 5

{[a + b + c) - d}

sec^2 x + c

cosA = C/B

∛x

tanθ = A/B

2 × x

f(a) = -(1)/(2πi) ∫(f(z))/(z-a) dz

sinA = A/C

∫t dx

2 × x

(4x)!(9x)^2

ax^2 + bx + c = 0

V · F = (∂P)/(∂x) + (∂Q)/(∂y)

2 × x - (1)/(16) + S^2 = 24 (15)/(16)

tanθ

Screenshot of a file browser interface displaying a folder named 'Documents' and a file named 'readme.txt'.
Screenshot demonstrating potential options for a custom select or file picker, displaying a folder labeled 'Documents' and a file labeled 'readme.txt'. A mouse cursor hovers over 'readme.txt'.
  • Documents (folder)
  • readme.txt
  • resume.pdf
  • photo.jpg
  • budget.xlsx
  • notes.md
  • slides.pptx
  • config.json
  • backup.zip
  • playlist.mp3
A stylized user interface shows an open "Documents" folder at the top left. Below it, a list of file icons and names are displayed in a floating, angled arrangement. A cursor in the shape of a hand is shown dragging the "readme.txt" file, which is highlighted and positioned near the cursor, indicating a drag-and-drop operation.

Documents

Screenshot of a file manager interface, displaying a folder structure with the "Documents" folder selected in the breadcrumb navigation. It shows a file named "readme.txt" and a list of subfolders including Photos, Music, Videos, Downloads, Desktop, Projects, Backups, and Trash.

File explorer view

Screenshot of a file explorer interface, resembling macOS Finder, showing a selected 'Documents' folder. Other visible folders include Photos, Music, Videos, Downloads, Desktop, Projects, Backups, and Trash. A file named 'readme.txt' is also visible in the 'Documents' context.

Documents

Screenshot of a file explorer displaying a list of folders including Documents, Photos, Music, Videos, Downloads, Desktop, Projects, Backups, and Trash. A file named readme.txt is also shown and appears highlighted.
Screenshot of a simple Pac-Man game, showing the yellow Pac-Man character in a blue maze with white pellets.
Screenshot of a simplified Pac-Man maze game. The blue maze is filled with white pellets on a black background. A yellow Pac-Man character is visible on the left side, along with another small, dark yellow character. A pink mouse cursor is in the upper middle section.
Screenshot of a simplified Pac-Man game maze. The maze is dark blue with white pellets. A yellow Pac-Man character is on the right side of the maze. A small pink mouse cursor is visible near the top-center.
A simplified Pac-Man game board with a blue maze, white dots, and a yellow Pac-Man character in the bottom right. A pink mouse cursor is in the upper middle section.
A screenshot of a simple Pac-Man maze game, showing the yellow Pac-Man character in a blue maze filled with white pellets.
A screenshot of a simplified Pac-Man game, showing a yellow Pac-Man character in a dark blue maze filled with white pellets. A pink mouse cursor is also visible.
Screenshot of a simplified Pac-Man game showing a dark blue maze on a black background, with white dots, two yellow Pac-Man characters, and a pink cursor.
Screenshot of a simple Pac-Man game featuring a blue maze, white dots, a yellow Pac-Man character, and a pink mouse cursor on a black background.
A screenshot of a simple Pac-Man game. A dark blue maze is on a black background, with many small white dots (pellets) filling the paths. A yellow circular character (Pac-Man) is visible on the right side of the maze, and a small pink arrow cursor is near the top-left area.
Screenshot of the classic video game Pong, displaying two white paddles, a white ball, and a central dashed white line on a dark background.
A game of Pong rendered using CSS Grid, displayed on a screen. It features two white paddles, a white ball, and a dashed white center line against a dark background, with a purple mouse cursor also visible.

Pong Game Rendered with CSS Grid

Screenshot of the classic video game Pong, rendered within a web browser using CSS Grid. The game grid is visible with numerical labels along the top, left, and right edges, indicating grid lines. A white rectangular paddle is on the left, another white rectangular paddle is on the right, and a small white square representing the ball is in the middle of the right half of the grid. Below the game, a portion of a web browser's developer tools is visible, showing the 'Elements' tab and the start of an HTML document.
A grid-based game board resembling Pong, with numerical coordinates labeled along the top, bottom, left, and right edges. A white rectangular paddle is on the left, another on the right, and a small white square representing the ball is positioned near the center-left.

Pong game rendered with CSS Grid

Screenshot of a Pong game interface. The game board is shown as a dark grid with faint grid lines and numerical labels along the edges (1-61 horizontally, 1-42 vertically, and corresponding negative numbers for the bottom and right edges), indicating a CSS Grid layout. A white paddle is on the left side, and another white paddle is on the right, with a small white square representing the ball near the bottom right paddle.

Pong game rendered with CSS Grid

Screenshot of a classic Pong game board, rendered as a grid. The board shows two white paddles, one on the left and one on the right, and a small white square ball. The grid lines are numbered along the top (1 to 35) and left (1 to 42) edges, and with negative numbers along the bottom and right edges, illustrating the CSS Grid structure. A dotted line runs vertically down the center of the playing area.
Screenshot of a grid-based game, similar to Pong, demonstrating its rendering using a CSS Grid layout. The game area features two white rectangular paddles, one on the left and one on the right, and a small, light-colored square ball near the center. The background is a dense grid pattern, with numbered coordinates along the top (1-61), left (1-42), bottom (-1 to -61), and right (-1 to -42) edges, illustrating the grid structure. A dashed vertical line marks the center of the playfield.

CSS Grid Pong Game

Screenshot of a pixelated Pong game displayed in a web browser, with a white ball, two white paddles, and a central dotted line, all rendered using CSS Grid.

Pong Game Implemented with CSS Grid

A screenshot of a web browser displaying a classic Pong game on a black background. The game features a white dashed vertical line in the center, and solid white horizontal lines at the top and bottom boundaries. Two white rectangular paddles are visible, one on the left and one on the right side of the screen. A small, pixelated gray and white square ball is shown near the center, moving towards the bottom right. The browser's address bar displays `localhost:8080/slides/CSSDay-2026/pongrid/`.
Screenshot of a game of Pong, depicting the game court with a dotted center line, top and bottom boundaries, two white paddles, and a small pixelated ball.

Demonstration of Interconnected Confirmation Dialogs

Screenshot of a desktop interface filled with numerous overlapping confirmation dialog boxes. Most dialogs have a dark title bar, but one prominent dialog in the upper middle has a red title bar labeled 'Confirm (move me)'. A magenta arrow-shaped mouse cursor is visible towards the bottom left of the screen.
Screenshot of a computer screen displaying numerous overlapping dialog boxes, most titled 'Confirm'. One dialog box at the top left is highlighted with a red border, and an arrow cursor hovers over it.

Screenshot of numerous confirmation dialog boxes

A computer screen displays a desktop cluttered with many open "Confirm" dialog boxes, resembling humorous system alerts. One dialog box is highlighted in red and a mouse cursor is positioned over it.

A demonstration of numerous intrusive 'Confirm' dialog boxes

A screen displaying multiple overlapping modal dialog boxes, each with the title "Confirm" and presenting a different intrusive or absurd question alongside "Cancel" and "OK" buttons.

Screenshot showing an overwhelming number of overlapping 'Confirm' dialog boxes

A computer screen displaying many overlapping "Confirm" dialog boxes, scattered across a light blue background. Each dialog box has a title of "Confirm" and contains a question, followed by "Cancel" and "OK" buttons. One dialog box near the top center is highlighted in red, suggesting it might be active or in focus.

Because computers are fun and we want to have fun.

A dotted line forms an incomplete rectangular frame around the text.

Why all this?

Because computers are fun.

Oh, and also because that's how the web remains relevant.

  • CONTROLLED AIR STREAM
  • TEST SECTION: Model mounted on balance and model attitude controlled by drive system.
  • Balance
  • TEST INSTRUMENTATION
  • MODEL
  • DRIVE SYSTEM
A diagram illustrating the components of a wind tunnel setup, showing a controlled airstream flowing over an airplane model mounted on a balance within a test section, connected to test instrumentation and a drive system.

TEST SECTION

Flow field about a model simulates conditions of flight.

CONTROLLED AIRSTREAM

MODEL

Balance

TEST INSTRUMENTATION

DRIVE SYSTEM

Motor

A diagram illustrates the components of a wind tunnel. It shows a controlled airstream entering from the left into a test section. Inside the test section, an aerodynamic model is mounted on a balance, which is connected to test instrumentation located below. Airflow lines are depicted around the model. To the right, a drive system with a motor and propeller is shown, presumably to generate or manage the airflow.

Masonry a.k.a. Grid Lanes

A screenshot of the Pinterest application showing a vertical navigation bar with icons for the Pinterest logo, home, grid, add, notifications, and messages.
A logo or abstract symbol composed of dark rectangular blocks arranged in a symmetrical, interlocking grid pattern on a light background.

Browser support

  • Safari → Shipped in March, with 26.4
  • Edge → Behind flag #css-grid-lanes-layout at about://flags
  • Chrome → Behind flag #css-grid-lanes-layout at about://flags
  • Firefox → First ever prototype, years ago. Follow at bugzil.la/grid-lanes

Browser support

  • Safari → Shipped in March, with 26.4
  • Edge → Behind flag #css-grid-lanes-layout at about://flags
  • Chrome → Behind flag #css-grid-lanes-layout at about://flags
  • Firefox → First ever prototype, years ago. Follow at bugzil.la/grid-lanes

Browser support

  • Safari → Shipped in March, with 26.4
  • Edge → Behind flag #css-grid-lanes-layout at about://flags
  • Chrome → Behind flag #css-grid-lanes-layout at about://flags
  • Firefox → First ever prototype, years ago. Follow at bugzil.la/grid-lanes
An illustration of a light purple elephant icon, centered within a rectangular border made of small, orange-brown square blocks.
A diagram showing a grid layout composed of brown square blocks. Seven blocks form a horizontal row, with three additional blocks stacked vertically below the leftmost block, creating an L-shape. A partial gray and white object is visible at the bottom, within the space defined by the blocks.
Illustration of a light blue elephant icon inside a square frame made of small orange-brown blocks.
An illustration of a light blue elephant enclosed within a square made of brown blocks.
A colorful, animated masonry layout composed of many thin, vertical rectangular bars of varying heights, forming a dense pattern across the bottom of the screen.
An abstract visualization displaying a dense masonry layout composed of hundreds of narrow, vertical bars. The bars vary in height and color, stacking from the bottom to the top, and feature diagonal patterns, creating a dynamic and colorful visual effect.
A visualization showing a masonry layout composed of numerous vertical, multicolored bars of varying heights, animated and densely packed, suggesting a large number of items.
An abstract visual representation of a dynamic layout, possibly a masonry grid, composed of many thin, vertical, multi-colored bars of varying heights against a black background. The bars are arranged in a complex, organic-looking pattern, some forming curved or jagged edges.
A visualization of numerous colored vertical bars forming a dense, dynamic pattern, representing a 10,000-item grid lane layout.
A visual demonstration of a dynamic layout, featuring numerous thin vertical bars of varying heights and colors arranged in columns. The bars show color gradients and form diagonal patterns, suggesting an animated or experimental layout.
An abstract visualization showing a gradient of numerous thin, vertical lines. The lines transition in color from purple on the far left to pink, red, orange, and yellow on the right. A diagonal black line cuts across the upper-left portion of the colored lines, segmenting that area, but the lines continue on both sides of it, representing items in a dynamic layout.
An abstract visualization of a grid or masonry layout, featuring a dense arrangement of vertical colored lines. The lines in the top section transition from red to orange/yellow, while lines in the bottom section transition from light blue to dark blue/purple. A diagonal line separates the two color-gradient sections on the left, with the right side of the image being black.
An abstract pattern composed of vertical, wavy, and zig-zagging bands in various shades of purple. Some of these bands contain dense horizontal lines, creating a layered and dynamic visual effect.
Abstract pattern of many horizontal purple lines, varying in length and shade, arranged in vertical, undulating columns, resembling a dynamic grid or masonry layout.
An abstract pattern of numerous horizontal purple lines with varying widths and shades, creating a stacked, wave-like, or hypnotic effect.
Description of an abstract, dynamic pattern made of numerous horizontal lines in varying shades of purple. The lines are arranged in vertical columns, with differing lengths and spacing, creating a wave-like, striped effect, demonstrating a grid layout with animated gaps and different widths.
An abstract pattern composed of numerous horizontal lines of varying lengths and shades of purple. The lines are arranged in vertical columns, with their horizontal starting points shifting to create wave-like or undulating visual effects. Some areas appear as solid blocks of color.
A grid of colorful spheres in various shades of purple, green, red, orange, yellow, pink, and light blue. Several positions in the grid are empty, shown as black circles. A mouse cursor is pointing at a light blue sphere in the bottom middle section of the grid.
A grid of multicolored circles and empty black spaces, resembling a puzzle or a physics simulation. A small hand icon is visible, pointing to a yellow circle near the bottom center.
Screenshot of a grid-based game or simulation featuring a dense arrangement of colorful spheres (yellow, orange, pink, purple, green, teal, red, blue) and some black empty circular spaces. A pink mouse cursor in the shape of a pointing hand is hovering over a yellow sphere near the center-bottom of the grid.
A grid of colorful, spherical objects (bubbles or balls) arranged in vertical stacks of varying heights. There are 8 columns, with stacks ranging from 2 to 6 balls high. The balls are in various colors including orange, pink, light green, light blue, yellow, and purple. A mouse cursor, shaped like a pink hand, points at a yellow ball in the middle of the grid, suggesting an interactive demonstration of a stacking layout where elements can be removed and stacks adjust.
An interactive demonstration showing multiple blue, semi-transparent spheres arranged in vertical columns, simulating objects with gravity, moving from top to bottom and bottom to top, with items being removed and the stack pulling down.
Illustration depicting a dense packing of blue spheres or bubbles. The spheres vary in size and are arranged in different patterns, with some sections showing spheres stacked from top to bottom and others from bottom to top, suggesting varying layout responses.

Hello

A blue gradient background with numerous translucent blue bubbles. The word 'Hello' is displayed in large white text, overlaid on the field of bubbles.

grid -

An illustration of a stick figure swimmer doing freestyle, with a dotted line indicating a swim lane.

grid -

An illustration of a stick figure swimmer in a lane, with dashed lines indicating lane boundaries, representing the concept of swim lanes.

grid -

An illustration of a stick figure swimming horizontally between two dashed lines, representing a "swim lane" concept.

grid -

An illustration of a stick figure person swimming or floating horizontally between two dashed lines, representing a swim lane.
.layout {
	display: grid;
	display: grid-lanes;
}
Two identical grid-like arrangements of colored rectangular blocks, one on the left and one on the right, illustrate a layout concept. Each arrangement shows blocks of varying sizes and colors (light green, teal, purple, yellow, dark blue, and a different shade of light green) seemingly placed within an invisible grid.
.layout {
  display: grid;
  display: grid-lanes;
}
Two identical grid layouts are displayed on the slide, one on the left and one on the right. Each layout consists of six colored rectangular blocks. The top row shows a light green block, a turquoise block, and a blue block. The bottom row shows a magenta block, a gold block, and a taller light green block. These layouts demonstrate the effect of the CSS properties shown in the code snippet.
.layout {
  display: grid;
  display: grid-lanes;
}
Two visual representations of multicolored rectangular blocks. The arrangement on the left shows blocks with some spacing and gaps between them. The arrangement on the right, partially visible, appears to have blocks arranged more tightly. A mouse cursor points to the `.layout` selector in the CSS code.
.layout {
  display: grid;
  display: grid-lanes;
}
On the left, a layout composed of several colored rectangular blocks arranged in a grid. On the right, a similar layout of colored rectangular blocks, showing a different arrangement. A mouse cursor points to the `grid-lanes` property in the CSS code, which is highlighted.
.layout {
  display: grid;
  display: grid-lanes;
}
A visual comparison of two grid layouts. On the left, colorful rectangular blocks are arranged in a standard grid. On the right, a partially visible arrangement of similar blocks suggests an alternative grid layout.

Shape & Orientation

shape

&

orientation

The words "shape", "&", and "orientation" are displayed vertically, each enclosed by white L-shaped brackets, on a dark background.

shape

&

orientation

The shape of grid-lanes

: 1fr 1fr;

1fr 1fr;

: 2fr 1fr 3fr 1fr;

A diagram illustrating horizontal grid lanes. On the right, a stack of rectangular elements represents the lanes, with one lane highlighted in red and another in green. On the left, code snippets display values like '1fr 1fr' and '2fr 1fr 3fr 1fr', which are typical for defining grid track sizes.

The shape of grid-lanes

...s: 1fr 1fr;

...1fr 1fr;

...s: 2fr 1fr 3fr 1fr;

A visual demonstration of grid lanes, showing a stack of five horizontal rectangular boxes on the right. The top three boxes are white, the fourth box is red, and the bottom box is light green.

The shape of grid-lanes


s: 1fr 1fr;
1fr 1fr;
s: 2fr 1fr 3fr 1fr;
On the right, a vertical stack of seven white rectangles, outlined in grey, representing grid lanes. The fourth rectangle from the top is highlighted in red, and the fifth rectangle from the top is highlighted in green.

The shape of grid-lanes

grid-template-rows: 1fr 1fr;
grid-template-rows: 1fr 1fr;
grid-template-rows: 2fr 1fr 3fr 1fr;

On the right side of the slide, three visual examples of CSS Grid layouts for rows are displayed vertically. The first example shows two stacked white rectangular boxes, with the top box being significantly taller than the bottom one. The second example shows three equally sized stacked white rectangular boxes. The third example shows three stacked rectangular boxes: a tall red box at the top, a medium-height green box in the middle, and a shorter white box at the bottom.

The shape of grid-lanes

s: 1fr 1fr;
1fr 1fr;
s: 2fr 1fr 3fr 1fr;
A visual representation of grid lanes, showing two separate examples. The first example consists of two equally sized horizontal white rectangular lanes. The second example, below it, shows a stack of four horizontal rectangular lanes: the top one is empty and white, the next is filled red, the one after is filled green, and the bottom one is empty and white.

The shape of grid-lanes

...s: 1fr 1fr;
1fr 1fr;
...s: 2fr 1fr 3fr 1fr;
A visual representation of a grid layout with two columns and multiple rows. Some cells are empty, some are colored red, and one is light green, illustrating different grid lane configurations based on the CSS code snippets on the left.

The shape of grid-lanes

s: 1fr 1fr;
1fr 1fr;
s: 2fr 1fr 3fr 1fr;
A visual demonstration of CSS grid lanes. On the left are code snippets showing grid track sizing values using `fr` units. On the right, a series of horizontal rectangular lanes visually represents the grid layout, with one lane highlighted in red and another in green.

The shape of grid-lanes

grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
grid-template-columns: 2fr 1fr 3fr 1fr;
A diagram illustrates grid lanes. On the left, three large empty rectangular grid cells are stacked vertically. On the right, a column of five smaller rectangular grid cells is stacked; from top to bottom, these are white, red, green, white, and red, demonstrating different lane sizes and content distribution.

The shape of grid-lanes

...s: 1fr 1fr;
1fr 1fr;
...s: 2fr 1fr 3fr 1fr;
The slide demonstrates CSS Grid lane shaping. On the left, code snippets show CSS Grid track sizing values. On the right, a visual grid layout illustrates the effect of these values. The top right grid shows two equal-width columns. Below it, a grid displays four columns with widths proportioned as 2:1:3:1, corresponding to the `2fr 1fr 3fr 1fr` code example. Several grid cells are highlighted in red and one in light green.

The shape of grid-lanes

grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
grid-template-columns: 2fr 1fr 3fr 1fr;
A diagram illustrating a CSS grid layout with multiple rectangular items. On the left, three items are stacked vertically, colored light blue, green, and red. To their right, two more light blue items are stacked, with the bottom one spanning two vertical grid tracks. Further right, a larger light blue item spans multiple columns and rows, demonstrating varying grid lane sizes and item placement.

The shape of grid-lanes

1fr 1fr;
1fr 1fr;
2fr 1fr 3fr 1fr;
A diagram illustrating a CSS grid layout with several rectangular items of different colors and sizes. The grid shows multiple lanes and items spanning them. On the left, there is a stack of rectangular items: a light blue box, a green box, and a red box, each in the first column, with corresponding light blue boxes in the second column; the bottom-right light blue box is taller, spanning two rows. To the far right, a large light blue box spans horizontally across multiple grid columns and rows.

The shape of grid-lanes

s: 1fr 1fr;
1fr 1fr;
s: 2fr 1fr 3fr 1fr;
A diagram illustrating CSS grid layouts with rectangular boxes representing grid lanes and items. On the left, three sets of boxes demonstrate different column configurations. The top set shows two equal-width columns. The middle set shows three equal-width columns, with the middle box colored green and the bottom box colored red. The bottom set shows four columns with varying widths. On the right, larger rectangular boxes show grid items spanning multiple columns or rows: a tall vertical box, a narrow horizontal box, and a wide horizontal box.

The shape of grid-lanes

grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
grid-template-columns: 2fr 1fr 3fr 1fr;
A diagram illustrating CSS grid layouts. It shows multiple rectangular items of different sizes and colors (light blue/white, red, light green) arranged within a grid. The items demonstrate varying column spans and flexible sizing, with some items taking up more space than others. For example, a long red box spans across multiple columns in the middle row, and a wider light blue/white box is on the right of the top row.

← row fill-reverse

Two arrangements of seven rounded-corner colored blocks demonstrating different row filling directions. The left arrangement, indicated by a right arrow, shows blocks filled from left to right across three rows. The top row contains green, purple, and light green blocks. The middle row contains green, red, and blue blocks. The bottom row contains a blue and a light green block. The right arrangement, labeled "row fill-reverse" and indicated by a left arrow, shows the same blocks filled from right to left across three rows, mirroring the horizontal order of the left arrangement. The top row contains light green, purple, and green blocks. The middle row contains blue, red, and green blocks. The bottom row contains a light green and a blue block.

row

row fill-reverse

column

column fill-reverse

The slide is divided into four quadrants, each demonstrating a different layout direction with a 3x3 grid of nine colored, rounded-rectangle blocks. The center block is pink. In the top-left quadrant, labeled 'row', the blocks are arranged with light green blocks in the first column, purple and yellow in the middle column (top and bottom respectively, with pink in the center), and light blue blocks in the third column. In the top-right quadrant, labeled 'row fill-reverse', the arrangement of blocks within each row is horizontally reversed compared to the 'row' example. Light blue blocks are in the first column, purple and yellow in the middle column (top and bottom respectively, with pink in the center), and light green blocks in the third column. The bottom-left quadrant, labeled 'column', shows a block arrangement that is visually identical to the 'row' example. The bottom-right quadrant, labeled 'column fill-reverse', shows a block arrangement that is visually identical to the 'row fill-reverse' example.
  • row ⭢
  • row fill-reverse ⭢
  • column ⭣
  • column fill-reverse ⭣
Four diagrams illustrating different layout fill directions. Each diagram shows a central red square surrounded by other colored rectangles. The top-left diagram shows blocks filling from left to right in a row. The top-right diagram shows blocks filling from right to left in a row (fill-reverse). The bottom-left diagram shows blocks filling from top to bottom in a column. The bottom-right diagram shows blocks filling from bottom to top in a column (fill-reverse).

Defining lanes

1fr 1fr
repeat(3, 1fr)
100px 200px auto 1fr
10px 1fr 10px auto
repeat(auto-fill, minmax(100px, 1fr))

Intrinsic lanes

NEW repeat(auto-fill, auto)

A grid layout displaying multiple small images of various plants and flowers.

Intrinsic lanes

repeat(auto-fill, auto)

A grid of small images depicting various plants and flowers, demonstrating a flexible layout of content with natural sizes.

Intrinsic lanes

NEW repeat(auto-fill, auto)

A grid of various photographs depicting different plants and flowers, illustrating a flexible grid layout.

flow

A large word "flow" is centered within a grid. Surrounding the word, the grid cells contain various wavy and straight line segments.
A slide divided vertically into two halves; the left half is solid black, and the right half is solid white.
A slide divided vertically into two halves, with the left half being black and the right half being white.
A pattern of black rectangular blocks on a white background, illuminated by purple light from below. The blocks are arranged in a dense, grid-like composition, with various horizontal and vertical orientations filling four main quadrants.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
Screenshot of a user interface demonstrating a CSS Grid layout with gaps between items. It displays 11 numbered rectangular items (1 through 11) arranged in an irregular grid of rows and columns. Above the grid, "Grid" is highlighted as the active viewing mode, with options for "Grid without gaps" and "Grid-lanes" also visible.

Grid

Grid without gaps

Grid-lanes

A diagram comparing three layout concepts: "Grid", "Grid without gaps", and "Grid-lanes". The "Grid" section displays a layout of rectangular colored boxes (labeled '1' brown, '4' light green) with uniform gaps between them. The "Grid without gaps" section shows a similar layout where the boxes (labeled '2' light green, '5' light blue) are positioned adjacently without visible gaps. The "Grid-lanes" section shows a different arrangement of rectangular colored boxes (labeled '3' light green, '6' blue), illustrating how elements are placed in a grid-lane system.

Grid Layout Options

  • Grid
  • Grid without gaps
  • Grid-lanes
A demonstration of different CSS Grid layouts, showing a grid of eleven numbered, colored rectangular blocks. A mouse pointer hovers over the "Grid without gaps" option, and the displayed layout shows blocks 1-11 arranged in a grid with no visible gaps between the cells, indicated by faint dotted lines. Blocks 1, 4, 7, 10 are in the first column; blocks 2, 5, 8, 11 are in the second column; and blocks 3, 6, 9 are in the third column.

Grid

Grid without gaps

Grid-lanes

The slide shows three different grid layouts, each composed of various colored and numbered rectangles (1 through 11). The first layout is labeled "Grid," the second is labeled "Grid without gaps" with a cursor pointing to its label, and the third is labeled "Grid-lanes." The arrangements of the rectangles differ significantly in each layout, demonstrating various grid configurations.

Grid Layout Demonstration

  • Grid
  • Grid without gaps
  • Grid-lanes

Numbered grid items: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

A visual demonstration of a grid layout, featuring eleven numbered, colored rectangular boxes. The boxes are arranged in various sizes and positions, forming a grid pattern with visible gaps between some elements. Above the grid, three interactive labels are displayed: "Grid", "Grid without gaps", and "Grid-lanes". A cursor icon hovers over the "Grid without gaps" label, indicating it is the selected or active view.
Step
Four evenly spaced, tall grey rectangular columns on a white background. A button labeled 'Step' is in the top-left corner.
An interactive diagram displaying a large white area divided into four equally wide vertical columns. A 'Step' button and a mouse cursor are visible in the top left corner, indicating a demonstration of a layout algorithm.
A software interface demonstrating an algorithm. It shows a 'Step' button with a right-pointing arrow, and four empty vertical columns representing process lanes or containers. A mouse cursor is pointing at the 'Step' button.
A layout showing three vertical, light gray rectangular columns, separated by thin white lines. The right portion of the slide is blank white.

shortest, right in the middle of the pack.

#15 Here we have a card with a moderate paragraph. It sits comfortably in the middle range of heights, adding some visual rhythm to the grid.

Small.

#13 This card is deliberately long. It contains enough text to really stretch the column height and create a visible imbalance between the columns in the layout.

One more medium-sized card to round things out nicely.

#14 Just a few words.

A layout demonstrating three vertical columns with colored cards stacked at the top, leaving gray empty space below. The first column contains a pink card and a blue card, with the empty space below the blue card measured as 625px and the total column's empty height indicated as 648px. The second column contains a red card and a long green card, with the total column's empty height indicated as 648px. The third column contains an orange card and a short light green card, with the empty space below the light green card measured as 556px.
A visual representation of a grid layout, featuring several vertical white lines on a light grey background, creating multiple columns of varying widths.

Screenshot showing a multi-column layout with a 'Tolerance' control

Screenshot of a user interface with a control bar at the top, featuring labels like 'Stop', 'Tolerance' (with an arrow indicating an adjustable setting), 'Tons (default)', and 'Anima'. Below the control bar, the screen is divided into four equally wide, vertical columns.
Screenshot of a user interface showing a button labeled "▶︎▶︎ Ste" in the top right corner, with a pink arrow pointing to it. The interface consists of a black panel on the left, separated by a thin white vertical line from a light grey panel on the right.

Step

#1

Short t

#5

This is quite a long card, has quite a few lines of text that take up significant vertical space to display. The ideal flow tolerance for this item is to have equal heights.

#9

A card with very little content. This makes it the shortest card on the page.

A user interface displaying three distinct content blocks. A hand cursor points to a 'Step' button.

  • #1 Short t
  • #5 This is quite a long card that has quite a lot of content filling up significant vertical space for the item. The ideal flow tolerance for this item is to match its heights.
  • #9 A card with minimal content that is much shorter than some of the pack.
  • #13 This card contains text that stretches to create space between the layout.
A partial view of a vertical column displaying four colorful sticky note-style cards, numbered #1, #5, #9, and #13. The cards exhibit varying heights, with some appearing taller than others.

#1 Short t

#5 This is qu has qu up sign space t The ide toleran item is heights

#11 One m round

#16 Done!

Four rectangular cards are displayed vertically on a white background, representing items in a layout. The top card is tan with the text "#1 Short t". Below it, a light blue card contains longer text starting "#5 This is qu...". Next is another tan card with text "#11 One m...". The bottom card is blue with the text "#16 Done!", partially obscured on the left by a diagonal green and white striped pattern.

#1

Short t

#5

This is quite a long text that has quite a lot of lines, filling up significant vertical space to demonstrate the ideal behavior of a flow tolerant item in different heights.

#12

Tiny.

#16

Done!

A user interface showing four cards with varying heights, labelled #1, #5, #12, and #16. Card #5 is significantly taller than the others, which are short. A light green and white diagonal striped pattern is visible at the bottom of the slide.

#1

Short text.

#5

This is quite a long text that has quite a lot of lines and takes up significant vertical space to test the flow tolerance value. Each item is considered to have its own heights and

#12

Tiny.

#16

Done!

A user interface showing multiple rectangular cards of varying sizes and colors: beige, light blue, light green, and light purple. Each card contains a number and text. A green diagonal striped pattern is visible in the bottom left.

Controls: Done! Tolerance: 1em, 0, 1em (default), infinite

Cards:

  • #1: Short text.
  • #2: A bit more content here so this card is taller than the first one.
  • #3: This card has a moderate amount of text. Enough to make it noticeably taller than the short ones, but not the tallest overall.
  • #4: Medium length content for variety.
  • #5: This is the tallest card in the set. It has quite a lot of text so it takes up significantly more vertical space than any of the other cards. The idea is to show how flow-tolerance affects where the next item is placed when column heights differ.
  • #6: Another short one.
  • #7: Three lines of text, maybe four depending on the column width. Let's see how it goes.
  • #8: Brief.
  • #9: A card with a fair amount of content. Not the longest, not the shortest, right in the middle of the pack.
  • #10: Small.
  • #11: One more medium-sized card to round things out nicely.
  • #12: Tiny.
  • #13: This card is deliberately long. It contains enough text to really stretch the column height and create a visible imbalance between the columns in the layout.
  • #14: Just a few words.
  • #15: Here we have a card with a moderate paragraph. It sits comfortably in the middle range of heights, adding some visual rhythm to the grid.
  • #16: Done!

Layout measurements: 625px, 648px, 556px, tolerance: 16px

A user interface demonstrating a responsive grid layout with 16 colorful cards of varying heights, simulating content blocks. A control bar for "Tolerance" is at the top with values 1em, 0, 1em (default), and infinite. Visual annotations indicate column widths as 625px and 648px, a specific card height of 556px, and a "tolerance: 16px" marker.
.my-layout {
  // Define the layout as grid-lanes.
  display: grid-lanes;

  // Set the orientation of the layout
  // and the sizes of the lanes.
  grid-template-columns: 200px repeat(auto-fill, auto);

  // Set the gap between lanes.
  gap: 1lh;

  // Set a custom flow tolerance.
  flow-tolerance: 2lh;
}

.wide-item {
  // Make items span multiple lanes.
  grid-column: span 2;
}

.positioned-item {
  // Place items in specific lanes.
  grid-column: 1;
}

Grid Lanes examples

One city feels restless, the other feels reflective, both keep changing with the light.

Even when the city softens a little, it still feels unnotably urban. There is always structure hiding behind the atmosphere.

Some streets in New York feel like they are always already in motion. Everything seems to be heading somewhere just out of frame.

These two places carry very different rhythms. Somehow they both feel familiar after a while.

New York often gives the impression of density without needing much explanation. A lot can happen in a very small slice of space.

One city leans into momentum, the other into atmosphere. Each one leaves a distinct mood.

This slide features seven photographs illustrating urban environments and concepts. Top left: A blurred night scene conveying motion and restlessness. Middle left: A modern building facade with horizontal, reflective curves. Bottom left: A black and white night shot of a city street. Top middle: An aerial view of the New York City skyline. Bottom middle: A close-up of a glass skyscraper facade. Top right: A vibrant, densely lit street scene at night, resembling Times Square. Bottom right: The Brooklyn Bridge at night, lit from below, highlighting its architectural form.

One city feels restless, the other feels reflective. Both keep changing with the light.

Some streets in New York feel like they are always already in motion. Everything seems to be heading somewhere just out of frame.

These two places carry very different rhythms. Somehow they both feel familiar after a while.

New York often gives the impression of density without needing much explanation. A lot can happen in a very small slice of space.

Even when the city softens a little, it still feels unmistakably urban. There is always structure hiding behind the atmosphere.

One city leans into momentum, the other into atmosphere. Each one leaves a distinct mood behind.

Image of a person riding a bicycle on a city street, blurred to convey motion.

Aerial view of a dense cityscape, featuring numerous high-rise buildings and skyscrapers, with the Empire State Building visible.

Nighttime street scene in a city, with blurred red and white lights from vehicles and streetlights.

A low-angle view of Times Square at night, showcasing tall buildings covered in brightly lit digital billboards.

Black and white architectural photograph looking up at the curved, repetitive structures of a modern building facade.

A partially visible image showing the glass and balcony facade of a modern high-rise building.

Nighttime photograph of the Brooklyn Bridge's stone towers and suspension cables, illuminated against a dark sky.

A partially visible black and white image of a city street at night with buildings and visible streetlights.

GridLanes Examples User Interface

Screenshot of a dark-themed user interface displaying a vertical stack of content cards with a scrollbar on the right. The first visible card contains an image of a street scene with a person holding a sign that includes the red word "KILLER" and other text like "for hire". Below this image, a section of truncated text is visible. The second visible card features a dark, abstract image with radiating thin lines, possibly representing cracked glass. Below this image, another section of truncated text is visible.

A screenshot of a user interface element displaying a city street scene with buildings and large text, including the partial word "KILLA", likely an example of a GridLanes layout or an entry animation.

A screenshot of a user interface element with a black background and white lines resembling broken glass, illustrating a design effect or animation.

Distinct mood

A black and white image depicting an abstract, dark, and fragmented pattern, possibly cracked glass or interwoven branches. Below it, a black and white image of a street scene with a large tree in the foreground and multi-story buildings in the background. The images are displayed within a scrolling interface, indicated by a scrollbar on the right.

landmark. Big shapes exist easily.

different e urban

Black and white photograph of a large tree in front of several buildings.

Black and white photograph of food, possibly roasted potatoes, on a white plate.

  • ...different the urban
  • ...at changes feel close
A split-layout slide displaying two content cards. The top card shows a grayscale photograph of roasted potatoes on a white plate. The bottom card shows a color photograph of a sunset over water with industrial cranes in the distance.

There is a different tempo in each place. You can feel it before you can name it.

Some parts of New York feel designed to keep your attention moving. Light, scale, and noise all seem to layer on top of each other.

In one place, energy rises quickly. In the other, it settles and stretches out.

There is a softness to Seattle that changes how distance reads. Things can feel close and far away at the same time.

One city leans into momentum, the other into atmosphere. Each one leaves a distinct mood behind.

In New York, reflective surfaces often turn the city back onto itself. The surroundings feel multiplied rather than simply repeated.

A sepia-toned photograph of a suspension bridge at sunset.

A black and white street photograph showing several people crossing a city intersection at night, with buildings lit up in the background.

A black and white photograph of a brick building with several wall-mounted light fixtures casting shadows.

A dark, moody photograph of wooden pilings or structures in water.

A black and white photograph of the architectural arches and cables of the Brooklyn Bridge from below.

A night photograph of a brightly lit food cart with a yellow and blue striped umbrella on a city street.

A black and white street photograph of an intersection with elevated structures and reflections in a puddle.

One city leans into momentum, the other into atmosphere. Each one leaves a distinct mood behind.

Both cities feel alive in very different ways. The contrast is quiet, but impossible to miss.

These two p rhythms. So after a while

One city feels immediate and sharp. The other feels layered and patient.

A black and white photograph of a city street reflected in a puddle, showing buildings and a crosswalk. A blurred night photo of a city street with red and blue emergency vehicle lights reflecting on wet pavement. A blurry photo of a moving New York City subway train, showing an American flag decal and passengers through a window. A wide aerial view of a dense cityscape with numerous skyscrapers.

One city feels immediate and sharp. The other feels layered and patient.

There is a softness to Seattle that changes how distance reads. Things can feel close and far away at the same time.

Even when the city softens a little, it still feels unmistakably urban. There is always structure hiding behind the atmosphere.

Some streets always already seems to be of frame.

A blurred photograph from inside a moving train, showing the interior and a window with a blurred view outside, including an American flag sticker.

A silhouette image of the Statue of Liberty against an orange sunset over water, with dark vertical structures in the foreground.

A black and white architectural photograph of a modern building with curved, stacked balconies, viewed from a low angle.

An aerial photograph of a dense urban city with numerous tall buildings, mostly visible on the right side of the slide.

A close-up photograph of two white hard-boiled eggs on a dark plate, partially visible at the bottom right.

Both cities feel

The contrast

One city feels immediate and sharp. The other feels layered and

There is a softness to Seattle that changes how distance reads. Things can feel close and far away at the same time.

The slide features a split layout. The left side top shows a blurred, abstract image of what appears to be an interior architectural or industrial space with glowing horizontal lines. Below it, an image of the Statue of Liberty stands against a sunset sky with a city skyline in the background, overlaid with several tall, dark, semi-transparent vertical bars. The right side features a blurred, abstract image composed of repeating circular or cylindrical forms, resembling layered tubes or pipes.

Some parts of New York feel designed to keep your attention moving. Light, scale, and noise all seem to layer on top of each other.

Both cities feel alive in very different ways. The contrast is quiet, but impossible to miss.

A composite, desaturated image of a city street with buildings on either side and an elevated structure overhead, creating a layered, almost ghostly effect.

Angular gestures and overlapping strokes create a rhythmic field of greens, oscillating between organic growth and constructed movement. The composition suggests direction without destination, like paths cutting through a dense landscape.

— STUDY IN GREEN, acrylic on canvas, 2023

Abstract painting titled "STUDY IN GREEN" featuring angular and overlapping strokes primarily in various shades of green, with hints of blue, depicting a rhythmic and organic landscape.

Angular gestures and overlapping strokes create a rhythmic field of greens, oscillating between organic growth and constructed movement. The composition suggests direction without destination, like paths cutting through a dense landscape.

— STUDY IN GREEN, acrylic on canvas, 2023

An abstract painting with blue and purple tones is partially visible in the top left. An abstract painting with various shades of green, depicting a rhythmic field, is partially visible in the bottom left.

Angular gestures and overlapping strokes create a rhythmic field of greens, oscillating between organic growth and constructed movement. The composition suggests direction without destination, like paths cutting through a dense landscape.

— STUDY IN GREEN, acrylic on canvas, 2023

An abstract painting titled 'Study in Green' depicting a rhythmic field of overlapping green strokes, suggesting organic growth and constructed paths through a dense landscape. A portion of the artwork is visible at the bottom left.

Angular gestures and overlapping strokes create a rhythmic field of greens, oscillating between organic growth and constructed movement. The composition suggests direction without destination, like paths cutting through a dense landscape.

– STUDY IN GREEN, acrylic on canvas, 2023

A framed abstract artwork is partially visible in the bottom left, featuring vibrant green and yellow shapes.

Cool, translucent tones intersect in a composition that feels both structured and fluid. Lines dissolve into planes, suggesting architectural fragments suspended in water.

– STUDY IN AQUA, acrylic on canvas, 2023

An abstract artwork titled 'Study in Aqua', featuring translucent green and yellow shapes with intersecting lines, is partially visible on the left side. A similar, smaller artwork in purple tones is partially visible at the bottom left.

intersect in a composition that feels both structured and fluid. Lines dissolve into planes, suggesting architectural fragments suspended in water.

– STUDY IN AQUA, acrylic on canvas, 2023

old, dynamic strokes dominate the surface, driven by contrast and intensity. The

An abstract painting featuring overlapping organic shapes in various shades of purple and pink, set within a frame.

Bold, dynamic strokes dominate the surface, driven by contrast and intensity. The composition captures a moment of tension—raw, immediate, and deliberately unresolved.

— STUDY IN RED, acrylic on canvas, 2023

An abstract painting in a frame, featuring various shades of purple and pink in bold, dynamic strokes.

ading

In porro dicta non praesentium autem voluptates nesciunt quibusdam culpa necessitatibus est laudantium, voluptatem exercitationem fugiat voluptatibus similique incidunt neque hic ducimus.

Possimus odio eveniet aliquam tempore minima dolor libero quibusdam asperiores repellendus?

Beatae officiis ex minima nemo doloribus nostrum quam provident architecto ipsa, consequatur asperiores laborum fugit quas quia expedita cupiditate quod hic non, illo magni magnam deserunt nesciunt!

Preferendis illum necessitatibus,

minima totam omnis tempore

culpa mos res in rotam.

tibus ex edita, cum

culpa et a qui ob

Image of green grass or leaves on a yellow sticky note. A pink mouse cursor points at the edge of a green sticky note.

Demo of Infinite Loading with GridLanes

A screenshot of a user interface demonstrating infinite loading. It displays several overlapping rectangular cards, like sticky notes, against a patterned background. One card shows an image of green plants with small pinkish-white flowers. A vertical scrollbar is visible on the right side.
Screenshot of a web interface demonstrating an infinite loading feature with GridLanes, displaying virtual sticky notes with placeholder text on a patterned background. A vertical scrollbar is visible on the right side.

Suscipit voluptatem doloribus ipsa, soluta nemo vel voluptatum accusamus quos porro quibusdam, nam velit nulla exercitationem officia, pariatur dicta eius quae.

Quisquam fugiat voluptatibus quis, officiis a explicabo cum voluptas ex expedita repudiandae porro facere aperiam ipsa, architecto sed aliquam laboriosam nulla, beatae nemo earum aspernatur velit.

Praesentium exercitationem assumenda, cumque neque nisi temporibus harum accusantium soluta porro atque, maxime delectus odio tempora?

Lorem ipsum dolor sit amet consectetur adipisicing elit.

ndus?

ipsa,

Quos sed illo, tempore culpa et

Image of dry grass or reeds against a blue sky. Close-up image of flowering plants.

Earum neque eius quod error inventore perferendis consectetur laboriosam, impedit, sunt porro possimus harum velit nam tenetur corporis magni alias eveniet aut, repudiandae cum itaque.

delectus odio tempora? Lorem ipsum dolor sit amet consectetur adipisicing elit.

Quisquam fugiat voluptatibus quis, officiis a explicabo cum voluptas ex expedita repudiandae porro facere aperiam ipsa, architecto sed aliquam laboriosam nulla, beatae nemo earum aspernatur velit.

Quos sed illo, tempore culpa et ipsam ut in consequatur a aspernatur dolore sequi qui ab accusamus cupiditate! Inventore blanditiis modi facere debitis labore, delectus deleniti obcaecati ipsa optio porro sint perferendis, tenetur recusandae quis ipsum vel aut eos magnam!

Earum neque eius quod error inventore perferendis consectetur laboriosam, impedit, sunt porro possimus harum velit nam tenetur corporis magni alias eveniet aut, repudiandae cum itaque. Quas vitae recusandae illo, quos

Quas vitae recusandae illo, quos eius rerum mollitia asperiores laboriosam iste beatae porro aut dignissimos ex, fugit tempore?

Possimus odio eveniet aliquam tempore minima dolor libero quibusdam asperiores repellendus?

Eius molestiae necessitatibus ex amet ipsum unde ad, expedita, cum vero inventore libero.

An image of a patch of small white and pink daisy-like flowers in a garden.

s voluptates autem eaque m n neque

repudiandae eaque ipsum at corporis obcaecati. Eius molestiae necessitatibus ex amet ipsam unde ad, expedita, cum vero inventore libero.

Beatae officiis ex doloribus nostrum architecto ipsa, asperiores laboru expedita cupidita illo magni magnan nesciunt!

uptatum dolorem s dolor nam atur nulla!

Optio laborum obcaecati culpa suscipit cum, ad dignissimos cupiditate aperiam maiores in delectus reprehenderit totam. In porro dicta non praesentium autem voluptates nesciunt quibusdam culpa necessitatibus est

Inventore blandit debitis labore, de obcaecati ipsa op perferendis, tene quis ipsum vel aut

Six sticky notes, in shades of orange, pink, purple, light green, and yellow, are arranged on a background with a light floral pattern. Each note contains Latin placeholder text.

Eum, provident blanditiis voluptates fugiat temporibus nisi, autem eaque dolorum, iusto quibusdam recusandae maxime enim neque veniam velit et.

Sit officia dicta aliquam praesentium earum, voluptatum quidem. Ratione libero, dolorem culpa vel eum, voluptates dolor nam accusantium provident exercitationem consequatur nulla! Veritatis, tempore eius.

Quos sed illo, tempore culpa et ipsam ut in consequatur a aspernatur dolore sequi qui ab accusamus cupiditate!

repudiandae eaque ipsum at corporis obcaecati.

Eius molestiae necessitatibus ex amet ipsam unde ad, expedita, cum vero inventore libero.

Optio laborum obcaecati culpa suscipit cum, ad dignissimos cupiditate aperiam maiores in delectus reprehenderit totam.

In porro dicta non praesentium autem voluptates nesciunt quibusdam culpa necessitatibus est laudantium, voluptatem exercitationem fugiat voluptatibus similique incidunt neque hic ducimus.

Beatae officiis ex minima nemo doloribus nostrum quam provident architecto ipsa, consequatur asperiores laborum fugit quas quia expedita cupiditate quod hic non, illo magni magnam deserunt nesciunt!

Inventore blanditiis modi facere debitis labore, delectus deleniti obcaecati ipsa optio porro sint perferendis, tenetur recusandae quis ipsum vel aut eos magnam!

Eum, labore quibusdam alias maiores ipsam quam eaque aliquid delectus.

Praesentium exercitationem assumenda, cumque neque nisi temporibus harum accusantium soluta porro atque, maxime

Image of white flowers.

Image of white flowers.

Image of white flowers.

expedita cupiditate quod hic non suscipit cum, ad dignissima cupiditate aperiam maiores in delectus reprehenderat nesciunt!

Eum, labore quibusdams alias maiores ipsom quam eaue aliquid delectus.

Earum neque eius quod error inventore perferendis consectetur laboriosam, impedit, sunt porro possimus harum velit non tenetur corporis magni alias eveniet aut, repudiandae cum itaque.

Suscipit voluptatem doloribus ipsa soluta nemo vel voluptatem accusamus quos porro quibusdams, nam velit nulla exercitationem officia, pariatur dicta eius quae.

Optio laborum obcaecati culpa suscipit cum, ad dignissimos cupiditate aperiam maiores in delectus reprehenderit totam.

Eum, provident blanditiis voluptatas fugiat temporibus nisi, autem coque dolorums, justo quibusdams recusandae maxime enim neque veniam velit et.

Sit officia dicta aliquam praesentium earum, voluptatum quidem Ratione libero, dolorem culpa vel eum, voluptates dolor non accusantium provident exercitationem consequatur nulla! Veritatis, tempore eius.

Quas vitae recusandae illo, quos eius rerum mollitia asperiores laboriosam iste beatae porro aut.

Possimus odio eveniet aliquam.

Image of white daisies with yellow centers. Image of green grass blades.

laboriosam iste beatae porro aut dignissimos ex, fugit tempore?

tempore minima dolor libero quibusdam asperiores repellendus?

Praesentium exercitationem assumenda, cumque neque nisi temporibus harum accusantium soluto porro atque, maxime delectus odio tempora?

Suscipit voluptatem doloribus ipsa, soluta nemo vel voluptatum accusamus quos porro quibusdam, nam velit nulla exercitationem officia, pariatur dicta eius quae.

Qui quam fugiat voluptatibus quis, officiis o explicabo cum voluptas ex expedita repudiandae porro facere aperiam ipsa, architecto sed aliquam laboriosam nulla, beatae nemo earum aspernatur velit.

Lorem ipsum dolor sit amet consectetur adipisicing elit.

Optio laborum obcaecati culpa suscipit cum, ad dignissimos cupiditate aperiam maiores in delectus reprehenderit totam.

Inventore blanditiis modi facere debitis labore, delectus deleniti obcaecati ipsa optio porro sint perferendis, tenetur recusandae quis ipsum vel aut eos magnam!

Quos sed illo, tempore culpa et ipsam ut in consequatur a aspernatur dolore sequi qui ob accusamus cupiditate!

In porro dicta non praesentium autem voluptates nesciunt quibusdam culpa necessitatibus est laudantium, voluptatem exercitationem fugiat voluptatibus similique incidunt neque hic ducimus.

Inventore blanditiis modi facere debitis labore, delectus deleniti obcaecati ipsa optio porro sint perferendis, tenetur recusandae quis ipsum vel aut eos magnam!

Inventore blanditiis modi facere debitis labore, delectus deleniti obcaecati ipsa optio porro sint perferendis, tenetur recusandae quis ipsum vel aut eos magnam!

Eum, provident blanditiis voluptates fugiat temporibus nisi, autem eaque dolorem justo quibusdam.

Suscipit voluptatem doloribus ipsa, soluta nemo vel voluptatum accusamus quos porro quibusdam, nam velit nulla exercitationem officia, pariatur dicta eius quae.

An image of purple flowers with green stems in a field.

Team Kanban Board

An illustration of a Kanban board with four columns of varying widths, containing several yellow rectangular cards representing tasks or items.

Tea

A visual demonstration of a layout system, possibly CSS Grid, showing two yellow rectangular elements arranged vertically within a larger light grey container, illustrating item placement.

Tea

An illustration showing a gray rectangular container with two yellow rounded rectangles inside, likely demonstrating a layout or grid system.

After taking this course I'm more aware of what I'm writing and having CSS work as expected!

Georgiana

It helped me understand CSS. I know What's going on when looking at CSS.

Katara

You won't regret it, it will change the way you understand CSS.

Ciro

It's worth it. I don't know better source for learn CSS after trying some Youtube or Udemy tutorials or courses.

Vašek

I learned how to get started, think with the right mindset along the way, and problem solve when the need arises. Feeling much more motivated now. :)

Judson

It definitely helped a lot! I think I can make much more conscious decisions before even writing the first line of CSS in a project.

Balazs

Even after years working with CSS the approaches are professional and you can take a lot with you.

Mario Graf-Schantl

I have gained a better understanding of how to structure the markup for the css, and yes I understand css it's self alot better.

JWord

It resolved a lot of the problems of misunderstanding to the point I feel I could write my own CSS. A major improvement from where I started from.

Roddy M

I now view CSS as a complex language in its own right which can be leveraged once it is well understood.

Joe Sheridan

You *will* learn to write CSS with confidence. This course makes CSS very accessible. It gives you a structured guide on how to approach CSS by teaching you how to think and by giving you plenty of truly practical tools.

Igor dos Reis

If they wanted to learn how the browser actually applies CSS, they should start here.

thecodeviking

After taking this course I'm more aware of what I'm writing and having CSS work as expected!

Georgiana

It helped me understand CSS. I know what's going on when looking at CSS.

Katara

You won't regret it, it will change the way you understand CSS.

Ciro

It's worth it, I don't know better source for learn CSS after trying some YouTube or Udemy tutorials or courses.

Valak

I learned how to get started, think with the right mindset along the way, and problem solve when the need arises. Feeling much more motivated now. :)

Judson

It definitely helped a lot! I think I can make much more conscious decisions before even writing the first line of CSS in a project.

Balazs

Even after years working with CSS the approaches are professional and you can take a lot with you.

Mario Graf-Schmitt

I have gained a better understanding of how to structure the markup for the css, and yes I understand css it's self a lot better

JWord

It resolved a lot of the problems of misunderstanding to the point I feel I could write my own CSS. A major improvement from where I started from.

Reddy M

I now view CSS as a complex language in its own right which can be leveraged once it is well understood.

Joe Sheridan

You will learn to write CSS with confidence. This course makes CSS very accessible. It gives you a structured guide on how to approach CSS by teaching you how to think and by giving you plenty of truly practical tools.

Igor den Bois

If they wanted to learn how the browser actually applies CSS they should start here thecodeofliving

After taking this course I'm more aware of what I'm writing and having CSS work as expected!

Georgiana

It helped me understand CSS. I know what's going on when looking at CSS.

Katara

You won't regret it, it will change the way you understand CSS.

Cira

It's worth it, I don't know better source for learn CSS after trying some Youtube or Udemy tutorials or courses.

Valak

I learned how to get started, think with the right mindset along the way, and problem solve when the need arises. Feeling much more motivated now :)

Judson

It definitely helped a lot! I think I can make much more conscious decisions before even writing the first line of CSS in a project.

Balazs

Even after years working with CSS the approaches are professional and you can take a lot with you.

Maria Graf-Schmitt

I've gained a better understanding of how to structure the markup for the css, and yes I understand css it's self alot better.

JWard

It resolved a lot of the problems of misunderstanding to the point I feel I could write my own CSS. A major improvement from where I started from.

Reddy M

I now view CSS as a complex language in its own right which can be leveraged once it is well understood.

Joe Sheridan

You will learn to write CSS with confidence. This course makes CSS very accessible. It gives you a structured guide on how to approach CSS by teaching you how to think and by giving you plenty of truly practical tools.

Igor des Bois

If they wanted to learn how the browser actually applies CSS, they should start here.

thedecoding

After taking this course I'm more aware of what I'm writing and having CSS work as expected!

Georgiana

It's worth it. I don't know better source for learn CSS after trying some Youtube or Udemy tutorials or courses.

Vašek

Even after years working with CSS the approaches are professional and you can take a lot with you.

Mario Graf-Schantl

I now view CSS as a complex language in its own right which can be leveraged once it is well understood.

Joe Sheridan

It helped me understand CSS. I know What's going on when looking at CSS.

Katara

I learned how to get started, think with the right mindset along the way, and problem solve when the need arises. Feeling much more motivated now. :)

Judson

I have gained a a better understanding of how to structure the markup for the css, and yes I understand css it's self alot better.

JWord

You *will* learn to write CSS with confidence. This course makes CSS very accessible. It gives you a structured guide on how to approach CSS by teaching you how to think and by giving you plenty of truly practical tools.

Igor dos Reis

You won't regret it, it will change the way you understand CSS.

Ciro

It definitely helped a lot! I think I can make much more conscious decisions before even writing the first line of CSS in a project.

Balazs

It resolved a lot of the problems of misunderstanding to the point I feel I could write my own CSS. A major improvement from where I started from.

Roddy M

If they wanted to learn how the browser actually applies CSS, they should start here.

thecodeviking

New York City

Change orientation controls: Columns, Rows (selected).

A photo gallery user interface displaying a grid of twelve images of New York City, including cityscapes, bridges, and street scenes. Above the gallery, there are orientation controls, with the 'Rows' option highlighted by a cursor as currently selected.

New York City

A screenshot of a photo gallery interface showing images of New York City arranged in columns, with radio buttons to change orientation between 'Columns' and 'Rows'.
A composite image showing urban architecture. The top part is an aerial view of a city skyline with many tall buildings under a light sky, featuring one very slender skyscraper prominently. The bottom part is a close-up of a modern building with multiple balconies and glass railings.
A gallery layout featuring three vertical images: top shows white daisies and a butterfly, middle shows green wheat, and bottom shows pitcher plants.

NATURE

Column layout options:

  • Same size columns
  • Fixed first and last columns (selected)
  • Narrow and wide columns
  • Fibonacci sequence columns
A grid layout of various nature images, including white daisies, lavender, green foliage, red clover, orange protea flowers, and a succulent. The images are arranged to demonstrate a column layout where the first and last columns have fixed widths, and the middle columns adapt.

NATURE

  • Same size columns
  • Fixed first and last columns
  • Narrow and wide columns
  • Fibonacci sequence columns
A grid gallery of nature photographs, including white daisies, green grass, purple clover, ferns, various flowers, and a succulent plant, demonstrating different column layout options.

NATURE

A photo gallery displaying a grid of nature images, including various flowers, plants, and greenery. Above the gallery, there are four radio button options for column layouts, with "Narrow and wide columns" currently selected.

NATURE

A large grid of nature-themed photographs, including images of diverse plants, flowers, succulents, and foliage. The layout appears to be dynamically arranged, demonstrating different column configurations based on the selected radio button option, with 'Fibonacci sequence columns' currently active.

NEW YORK CITY

Patrick Brosset - October 2024

A gallery of seventeen photographs showcasing various scenes and landmarks of New York City, each with a descriptive label:

  • Manhattan from the One World tower: An aerial view of the Manhattan cityscape with many buildings, including the Empire State Building, under a clear sky.
  • Smoke rising from a manhole: A street-level night shot with red light and smoke emanating from a manhole, with blurry cars and buildings in the background.
  • Hot-dog stand: A dimly lit night shot of a hot-dog stand with a yellow and blue striped umbrella, parked on a street.
  • Graffitis in Brooklyn: A building wall with colorful graffiti artwork featuring cartoon-like characters, with a red stop sign visible on the left.
  • Bridges and Buildings: A view looking up at the underside of a bridge structure with a modern glass building in the background.
  • Glass buildings: A worm's-eye view looking up at several modern glass skyscrapers reflecting the sky.
  • The Brooklyn Bridge: A nighttime photo of the Brooklyn Bridge's stone arches and suspension cables, lit up against a dark sky.
  • Times Square: A bustling street scene in Times Square at night, dominated by giant illuminated digital billboards displaying advertisements.
  • More glass buildings: A modern high-rise building with a facade of glass and balconies, viewed from a slightly upward angle.
  • Plane: A small airplane flying in a gradient sky above the silhouette of a suspension bridge.
  • The Westfield World Trade Center: An interior shot of the Oculus structure at the Westfield World Trade Center, showing its distinctive white ribbed architecture looking upwards.
  • Statue of Liberty: A silhouette of the Statue of Liberty in the distance, framed by dark foreground elements and an orange sunset sky.
  • The High Line: A walkway on The High Line park, surrounded by modern glass and steel buildings, with greenery along the path.
  • Subway scene: The interior of a subway car, showing seats, windows, and an American flag sticker on the wall.
  • Broadway & Murray: A dark night photo of a street sign indicating "Broadway" and "Murray St," with blurry city lights in the background.
  • Biking: A blurred action shot of a person riding a bicycle, conveying motion and speed.
  • Beneath the Brooklyn Bridge: A view looking up at the underside of a bridge structure against the sky.
Screenshot of a dark-themed user interface, possibly a photo gallery or list of content, featuring multiple image thumbnails and truncated text labels on the left. A prominent vertical scrollbar is on the right side of this content area, with a pink mouse cursor pointing at its handle.
A split screen interface with a white panel on the left and a black panel on the right. A vertical scrollbar with a thumb near the top is visible on the dividing line, and a pink mouse cursor points towards it.

Screenshot of the Microsoft Edge Blog

A screenshot of the Microsoft Edge Blog, displaying a grid of article cards with titles, dates, and images.

Microsoft Edge web platform blog

A screenshot of the Microsoft Edge web platform blog page, featuring a prominent title and description at the top. Below, several article cards are displayed in a grid layout. The articles include titles like "Bring your PWA closer to users with App Actions on Windows," "Creating a more accessible web with Aria Notify," "Removing -ms-high-contrast and embracing standards-based forced colors in Microsoft Edge," and "The Edge 2025 web platform top developer needs dashboard." Each article card also shows a publication date and an accompanying image or graph, such as a laptop screen displaying a blue waveform, a comparison of browser interfaces with a red arrow, and a line graph tracking browser compatibility for Chrome, Edge, Firefox, and Safari over several months.

Microsoft Edge web platform blog

Screenshot of the Microsoft Edge web platform blog displaying several article snippets.

Microsoft Edge web platform blog

Screenshot of the Microsoft Edge web platform blog displaying various article snippets.

Microsoft Edge web platform blog

A screenshot of the Microsoft Edge web platform blog, displaying several recent blog posts with titles like "Creating a more accessible web with Aria Notify," "Removing -ms-high-contrast and embracing standards-based forced colors in Microsoft Edge," and "The Edge 2025 web platform top developer needs dashboard."

Microsoft Edge and Interop 2025

  • Bring your PWA closer to users with App Actions on Windows
  • Creating a more accessible web with Aria Notify
  • Removing .ms-high-contrast and embracing standards-based forced colors in Microsoft Edge
  • The Edge 2025 web platform top developer needs dashboard
  • Empowering Microsoft Edge Add-ons developers with faster reviews
  • Contextual logging with console context()
  • Minding the gaps: A new way to draw separators in CSS
Screenshot of a web page displaying a grid of seven blog post summaries, each with an image, title, date, and short description. The posts are related to Microsoft Edge and web development topics.

Microsoft Edge web platform blog

Screenshot of the Microsoft Edge web platform blog.

STREETS OF SEATTLE

A grid of black and white photographs showcasing various scenes, including food, street views, buildings, and portraits, arranged in an irregular, masonry-like layout.

STREETS OF SEATTLE

A collage of black and white street photographs, including urban architecture, a mural, a car in an alley, birds in the sky, a grungy door, and vents on a brick wall.

STREETS OF

A multi-panel grid layout displaying various grayscale urban scenes, including buildings, a mural of a woman's face, trees, and street views, with the text "STREETS OF" overlaid across several panels.

STREETS OF SEATTLE

A gallery grid featuring multiple black and white photographs depicting various street scenes and landmarks in Seattle, such as urban buildings, the Space Needle, people walking, and reflections.

SEATTLE

A collage of black and white photographs depicting various scenes from Seattle, including a close-up of a door handle with the word "PULL", a textured wall, a narrow street with buildings and trees, a night view of people crossing a street at a crosswalk, a street seen from under an overpass, a building facade with a large circular design, and a hanging sign with an arrow that reads "RESTROOMS".

SEATTLE

A collage of black and white street photographs. One image shows an urban alleyway or passage with contrasting light and shadow. Another image depicts several industrial-style lamps mounted on a brick wall, casting strong shadows. A partially visible image in the bottom left shows a door handle labeled "PULL" and pipes.

Streets of Seattle

Screenshot of a web layout design featuring overlaid black and white photographs of street scenes and fragmented text. The layout includes vertical scrollbars, suggesting a dynamic content display.

TITLE

A dark-themed layout featuring two vertical rectangular content blocks, likely representing a GridLanes layout. A vertical scrollbar is visible on the right side.
Black and white photograph of two doors with vertical 'PULL' signs and dark handles. A blurred bright light is visible in the background, possibly depicting a street scene in Seattle.

STREETS OF SEATTLE

A collage of black and white photographs depicting various scenes from the streets of Seattle, including architecture, street views with reflections in puddles, a mural of a face, a bird in the sky, a building at night, and a market interior. The monorail and Space Needle are visible in some images.

The Daily Oddity

Screenshot of 'The Daily Oddity' website, which mimics a news outlet with a grid layout displaying various article headlines and images.

The Daily Oddity! News Website Demo

Screenshot of 'The Daily Oddity!' news website demonstrating a multi-column, grid-based layout for articles.

Mock News Website Layout Demo

A black and white screenshot showing a mock news website with articles arranged in a grid layout. Featured articles include headlines such as "World's First Time-Traveling Tourist Arrives in 2025", "Scientists Create World's First Edible Smartphone", "Alien Life Discovered in Backyard Garden", "Bicycle Riders Demand Lanes Made of Marshmallows", "City Hires Flocks of Trained Seagulls for Garbage Collection", and "City Introduces Singing Trams to Boost Commuter Morale". Images accompanying articles include a street scene with a person and blurred cars, a bicycle, a collection of trash bins and a fire hydrant, and tram tracks with "BUS T" painted on the road.

The Daily Oddity! News Website Layout

A screenshot of a news website interface, titled "The Daily Oddity!", featuring multiple articles displayed in a grid layout.

3 March 2025

New Moon Discovered to Have Pizza-Like Crust

2 March 2025

Scientists Find Evidence of Talking Trees in Forests

27 February 2025

Unicorns Spotted in Remote Icelandic Mountains

24 February 2025

Aliens Offer Earth Free Wi-Fi, No Strings Attached

27 February 2025

Government Announces 3-Day Workweek for All

26 February 2025

Caffeine Banned After Causing 'Superhuman' Energy Spikes

23 February 2025

Giant Panda Declared World's New Fashion Icon

A multi-column news website layout demonstrating Grid Lanes, featuring several mock articles. Visual elements include: an image of a gnarled tree trunk above the article "New Moon Discovered to Have Pizza-Like Crust"; an image of a white animal, possibly a panda, lying on a pile of cut bamboo sticks above the article "Government Announces 3-Day Workweek for All"; an image of a mountainous landscape above the article "Unicorns Spotted in Remote Icelandic Mountains"; and an image of fuzzy fibers above the article "Aliens Offer Earth Free Wi-Fi, No Strings Attached".

24 FEBRUARY 2025

Aliens Offer Earth Free Wi-Fi, No Strings Attached

Extraterrestrial beings have reportedly made contact, offering Earth unlimited Wi-Fi access. In exchange, they demand nothing but a daily supply of pineapples.

Read more →

23 FEBRUARY 2025

Giant Panda Declared World's New Fashion Icon

A giant panda from the Chengdu Wildlife Reserve has been crowned the world's top fashion icon, gracing runways with its natural black-and-white fur patterns. Designers scramble to mimic the look.

Read more →

23 FEBRUARY 2025

Caffeine Banned After Causing 'Superhuman' Energy Spikes

A global ban on caffeine has been enacted after reports of people achieving superhuman feats— such as lifting cars— while under its influence. Experts warn of the dangerous side effects.

Read more →

Subscribe to The Daily Oddity!

Get the latest odd news delivered to your inbox every day. Sign up now and receive the 2025 Oddity Calendar for free!

Subscribe Now →

Daily Oddity - Where 'eird Meets the News

21 FEBRUARY 2025

Scientists Create World's First Edible Smartphone

In a groundbreaking innovation, scientists have developed a smartphone that can

20 FEBRUARY 2025

Alien Life Discovered in Backyard Garden

A suburban family has discovered a new form of alien life thriving in their backyard garden.

19 FEBRUARY 2025

Bicycle Riders Demand Lanes Made of Marshmallows

A screenshot of a mock online newspaper or blog, featuring multiple columns of whimsical news articles. The layout includes headlines, dates, and short article snippets. Below a prominent subscription banner for "The Daily Oddity", there are additional articles. One article features an image of a person walking on a city street, partially obscured. Another article features an image of a bicycle parked on a street.

Strings Attached

Extraterrestrial beings have reportedly made contact, offering Earth unlimited Wi-Fi access. In exchange, they demand nothing but a daily supply of pineapples.

Read more

A giant panda from the Chengdu Wildlife Reserve has been crowned the world's top fashion icon, bracing runways with its natural black-and-white fur patterns. Designers scramble to mimic the look.

Read more

A global ban on caffeine has been enacted after reports of people achieving superhuman feats—such as lifting cars—while under its influence. Experts warn of the dangerous side effects.

Read more

Subscribe to The Daily Oddity!

Get the latest odd news delivered to your inbox every day. Sign up now and receive the 2025 Oddity Calendar for free!

Subscribe Now

22 FEBRUARY 2025

World's First Time-Traveling Tourist Arrives in 2025

A time traveler from the year 3025 has arrived in 2025, claiming to have come back to witness the...

21 FEBRUARY 2025

Scientists Create World's First Edible Smartphone

In a groundbreaking innovation, scientists have developed a smartphone that can be eaten after use. The device is made from organic materials and is said to be "deliciously functional."

20 FEBRUARY 2025

Alien Life Discovered in Backyard Garden

A suburban family has discovered a new form of alien life thriving in their backyard garden. Scientists are baffled by the creature's ability to photosynthesize and communicate through light.

19 FEBRUARY 2025

Bicycle Riders Demand Lanes Made of Marshmallows

Cyclists everywhere are calling for roads to be paved with soft, bouncy marshmallows,

Screenshot of a fictional news website or online newspaper, showcasing various articles in a grid layout. The top section displays three text-only articles with headlines and short summaries. Below these is a black banner promoting "The Daily Oddity" subscription, featuring a stylized image of a person reading a newspaper. The bottom section presents four articles, each with a grayscale image: a blurry street scene with a person's back to the viewer, a blocky textured object resembling a device, an abstract dark and blurred image, and a classic road bicycle.

Daily Oddity - Where Weird Meets the News

Screenshot of 'The Daily Oddity' news website. The top banner, in black, features a circular logo on the left with the publication's name and tagline. To the right, a prominent call to action encourages users to subscribe for daily odd news and a free 2025 Oddity Calendar, accompanied by a yellow 'Subscribe Now' button. Below the banner, several news article snippets are displayed with dates, headlines, and black and white images, including 'Scientists Create World's First Edible Smartphone' and 'Alien Life Discovered in Backyard Garden'.

Welcome to my gallery

Screenshot of a personal art gallery or portfolio website.

Patrick

Welcome to my gallery

Here you can find a selection of my best works, showcasing my creativity and passion for art. Feel free to explore and contact me if you're interested in purchasing any of the pieces or commissioning a custom artwork.

Latest news

Check out my latest exhibitions and projects. I am constantly creating new pieces and participating in art events around the world. Stay tuned for updates on upcoming shows and collaborations!

A website homepage featuring a logo and the name "Patrick" in the header, followed by navigation links: Home, Hire me, Exhibits, Contact. Below the main heading "Welcome to my gallery", there is introductory text and two call-to-action buttons: "Hire me" and "Get in touch". A "Latest news" section follows with an introductory paragraph, showcasing a grid of six image thumbnails, each with accompanying descriptive text. The images depict: a blurry, textured black and white scene, a long-exposure night shot with star trails and reflections, rippling water under moonlight, a night cityscape, a black and white image of a swing set, and a dark, arched tunnel.

Search the Art Institute of Chicago collection

Screenshot of a search interface for the Art Institute of Chicago collection, showing a search input field and a dropdown with recent search suggestions.

Search the Art Institute of Chicago collection

Screenshot of a search interface for the Art Institute of Chicago collection, featuring a text input field pre-filled with "vase" and a "Search" button.

Project Planning Timeline

Initial event: Kick-off meeting

  • Frontend Team Tasks:
    • Design system setup
    • Auth UI flows
    • Dashboard implementation
  • Backend Team Tasks:
    • Database schema
    • REST API endpoints
    • Auth service
  • DevOps Team Tasks:
    • CI/CD pipeline
    • Cloud provisioning
    • Monitoring & alerts
A Gantt chart-style project timeline illustrating tasks for Frontend, Backend, and DevOps teams, starting with a Kick-off meeting. Tasks are shown as colored blocks across a horizontal timeline with weekly increments.

Project Timeline

Kick-off meeting (initial phase)

Frontend Tasks
Design system setup
Auth UI flows
Dashboard implementation
Backend Tasks
Database schema
REST API endpoints
Auth service
Data migration
DevOps Tasks
CI/CD pipeline
Cloud provisioning
Monitoring & alerts
Load testing
A project timeline chart, similar to a Gantt chart, showing tasks divided into three horizontal lanes: Frontend, Backend, and DevOps. A vertical bar on the left indicates a "Kick-off meeting" for all teams. Each lane contains colored horizontal blocks representing specific tasks and their estimated durations, arranged chronologically from left to right.

Project Task Breakdown

Kick-off meeting

Frontend

  • Design system setup
  • Auth UI flow
  • Dashboard implementation

Backend

  • Database schema
  • REST API endpoints
  • Auth service
  • Data migration

DevOps

  • CI/CD pipeline
  • Cloud provisioning
  • Monitoring & alerting
  • Load testing framework

A project timeline chart displaying tasks categorized by Frontend, Backend, and DevOps. An initial 'Kick-off meeting' bar spans all categories, followed by specific tasks represented by horizontal bars indicating their duration.

Project Plan

Lane Initial Event Tasks
Frontend Kick-off meeting
  • Design system setup
  • Auth UI flow
Backend
  • Database schema
  • REST API endpoint
DevOps
  • CI/CD pipeline
  • Cloud provisioning

Little details

Fountain diplomacy

Screenshot of a webpage or blog post demonstrating a flexible layout with multiple content blocks. It includes a section titled 'Little details', an image of flowers, an image of a statue's head, and a section titled 'Fountain diplomacy'.

different here, bikes are almighty. I mean, you've made it to the church, right? So, you know.

The Amsterdam tra

Flowers at the Estherea hotel.

Inspi

Maximali grandma

Fountain diplomacy

Image of a street with what appears to be a tram track.

A vibrant arrangement of pink and red flowers in various vases, with candles on a patterned table, set in an indoor environment.

Close-up image of a carved stone face, possibly from a sculpture or relief.

A visual example of an organic layout, featuring a partial image of a green leaf in a rounded frame at the top, and abstract white shapes with soft shadows at the bottom, likely demonstrating the creative use of space and elements discussed in relation to 'GridLanes'.

Nature does not hurry, yet everything is accomplished.

Look deep into nature, and then you will understand everything better.

A grid of three images displaying close-ups of green plant leaves and stems against a light background. The images have rounded corners and overlap slightly, creating an organic, gallery-like layout.
Look deep into nature, and then you will understand everything better.
To tend a plant is to practice a slower kind of hope, one rooted in daily care, quiet attention, and trust in unseen progress.

The art of becoming:

Growth is not always visible.

Sometimes it happens beneath the surface.

Discover more →

Images of green plant stems and leaves are shown alongside the text.

Nature does not hurry, yet everything is accomplished.

Look deep into nature, and then you will understand everything better.

A web page design featuring a grid of rounded rectangular images. Each image is a close-up of green plant leaves and stems against a light background. Two nature-themed quotes are interspersed within the layout.

PLANT STORIES

Screenshot of a minimalist website design for "Plant Stories," featuring plant photography and quotes arranged in a grid-like layout.
A large grey screen with a pink mouse cursor in the upper middle section.

Not just Pinterest in CSS

Key Takeaways on CSS Grid

  • Not just Pinterest in CSS
  • Very creative
  • Power of grid track sizing
  • Fundamentally 1D
  • Opportunistic placement
  • Allows for design decisions

Try it today

Not just Pinterest in CSS

Very creative

Power of grid track sizing

Fundamentally 1D

Opportunistic placement

Allows for design decisions

Try it today

That's all friends!

An illustration of a person (likely the speaker) emerging from a series of concentric circles, reminiscent of the 'That's all folks!' outro from Looney Tunes cartoons.

That's all friends!

An illustration of a person, likely the presenter, with outstretched arms, emerging from a series of red and orange concentric circles, styled like the "That's all folks!" ending screen from Looney Tunes cartoons.

https://patrickbrosset.com/slides/CSSDay-2026

https://patrickbrosset.com/slides/CSSDay-2026

@patrickbrosset.com

@patrickbrosset@mas.to

A QR code linking to patrickbrosset.com/slides/CSSDay-2026.

https://patrickbrosset.com/slides/CSSDay-2026

https://patrickbrosset.com/slides/CSSDay-2026

@patrickbrosset.com

@patrickbrosset@mas.to

A QR code linking to the presentation slides.

.now {

10:55 | Patrick Brosset

.now {

10:55 | Patrick Brosset

CSS DAY

Google AG Grid

Abstract geometric logo for CSS DAY. Google logo. AG Grid logo with a small grid icon. An 'X' icon.

10:55 | Patrick Brosset

CHAI DAY

Stylized text "CHAI DAY" rendered in black rectangular blocks on a light grey background.

CSS DAY

#cssday www.cssday.nl

Logo for CSS Day event, spelled out using black rectangular blocks.

Technologies & Tools

  • @supports
  • Anchor Positioning
  • Chromium
  • CSS Grid
  • CSS GridLanes
  • CSS Multi-column
  • dialog element
  • Dreamweaver
  • Firefox
  • Flexbox
  • Flow Tolerance
  • focusgroup attribute
  • Intersection Observer
  • Intrinsic Lanes
  • lh unit
  • Offset Path
  • Photoshop
  • Reading Flow
  • Safari
  • Scroll-driven Animations
  • View Transitions

Standards & Specs

  • CSS Logical Properties
  • MathML

Concepts & Methods

  • Gantt chart
  • Kanban
  • Masonry
  • Progressive Enhancement

Organisations & Products

  • Apple
  • Art Institute of Chicago
  • CSS Working Group
  • Google
  • MDN
  • Microsoft Edge
  • Netscape
  • Open WebDocs
  • Pinterest
  • State of CSS
  • Web Design Museum
  • WebDX