- From: Sebastian Zartner via GitHub <sysbot+gh@w3.org>
- Date: Fri, 08 Dec 2023 20:31:40 +0000
- To: public-css-archive@w3.org
SebastianZ has just created a new issue for https://github.com/w3c/csswg-drafts:
== [css-grid] Allow to define overlapping grid areas using `grid-area` syntax ==
In #2808, a way to define overlapping grid areas using the existing string-based syntax is discussed.
While this is nice and visual, the string syntax used is a one-shot in CSS and doesn't align well with other syntaxes in CSS. This is especially true for when looking at how grid areas are defined in `grid-template-areas` and how they are used in `grid-area`.
Therefore, I suggest to re-use the grid-lines-based syntax of `grid-area` to define areas, allowing to define overlapping areas.
As noted in the issue suggesting to extend the string-based syntax, here's an example for how this may look like:
```css
.grid {
display: grid;
grid-template: repeat(3, 1fr) / repeat(3, 1fr);
grid-template-areas:
a 1 / 1 / -1 / 3,
b 1 / 2 / 3 / -1,
c 1 / 1 / 3 / 3,
d 2 / 2 / -1 / -1;
}
.a { grid-area: a; }
.b { grid-area: b; }
.c { grid-area: c; }
.d { grid-area: d; }
```
So the formal syntax of `grid-template-areas` would be
```ebnf
grid-template-areas = none | <string>+ | <custom-ident> && <grid-template-line> [ / <grid-template-line> ]{0,3}
<grid-template-line> = <integer [-∞,-1]> | <integer [1,∞]> | span && [ <integer [1,∞]>
```
The big advantage of this approach is that the syntax fits perfectly to the syntax used in `grid-area` and to other syntaxes in CSS.
A small downside is that it's probably not integratable into the syntax of `grid-template`. Though that just means you have to define the track sizes and areas separately. And it might also be a case in which the syntax suggested in #2808 comes in handy.
Sebastian
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/9687 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Friday, 8 December 2023 20:31:43 UTC