- From: porg via GitHub <sysbot+gh@w3.org>
- Date: Thu, 23 Feb 2023 12:58:55 +0000
- To: public-css-archive@w3.org
porg has just created a new issue for https://github.com/w3c/csswg-drafts: == [css-grid] Design rationale behind grid lines starting at index 1 ? Contrary to 0 origin in all coordinate systems! == - This is no change request at all. Way too late! This is more of an "academic" question: - **What were the design considerations of the original/later authors behind grid lines starting to count at 1?** - Please answered here in this very issue. Plus later in a section of the spec, if adequate. - A specification usually only states ***how*** something shall be, but mostly not ***why*** something is as it is. - But in some specs, at least regarding fundamental principles, rationales or certain Don't-s are explicitly and transparently stated. To spare re-evaluations and/or prevent later changes and common pitfalls already ruled out for good reasons. - So maybe in the section 3, entitled [Core Concepts of the Grid](https://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/#grid-concepts) (in the original working draft 20110407), now [Grid Layout Concepts and Terminology](https://www.w3.org/TR/2020/CRD-css-grid-1-20201218/) (valid 20201218 version), the essence of the design rationales and/or a link to an extended pro/con evaluation would be appreciated! ## CSS Grid Lines — Line Count starts at 1 <img src="https://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/images/grid-concepts.png" alt="CSS Grid Layout Working Draft 20110407, Figure 7: A diagram illustrating the relationship between the Grid element and its Tracks, Lines, Cells and Items." width=400> Source: Figure 7 shown in section 3 [Core Concepts of the Grid](https://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/#grid-concepts) (original 20110407 working draft) ## Geometry — All Coordinate Systems use 0 as their origin point <img src="https://upload.wikimedia.org/wikipedia/commons/9/93/Number-line.svg" alt="Number line" width=400> <img src="https://upload.wikimedia.org/wikipedia/commons/0/0e/Cartesian-coordinate-system.svg" alt="Cartesian coordinate system" width=200> <img src="https://upload.wikimedia.org/wikipedia/commons/8/83/Coord_planes_color.svg" alt="Euclidian space" width=200> *Images sources: All from the respective linked Wikipedia articles.* - The origin point of a coordinate system is at 0 in 1D, 2D, and 3D. - Every pupil learns that at school. - 0 (x) in [1D](https://en.wikipedia.org/wiki/One-dimensional_space) on a [Number line](https://en.wikipedia.org/wiki/Number_line) - 0/0 (x/y) in [2D](https://en.wikipedia.org/wiki/Two-dimensional_space), the [Cartesian coordinate system](https://en.wikipedia.org/wiki/Cartesian_coordinate_system) - 0/0/0 (x/y/z) in [3D](https://en.wikipedia.org/wiki/Three-dimensional_space), the [Euclidian space](https://en.wikipedia.org/wiki/Euclidean_space) ## Practical reason behind origin 0 for geometrical applications seems obvious - Put your finger at 0. - Now you can very easily express both vectors or dimensions. - Vector: e.g. move an object by 3 units: Move finger to 1,2,3. Done. - Dimension: e.g. object shall be 5 units long. Move finger to 1,2,3,4,5. Done. - No +1 offset. Very easy. ## Problems with CSS grid line numbering in the spatial mental model of the user <img src="https://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/images/grid-concepts.png" alt="CSS Grid Layout Working Draft 20110407, Figure 7: A diagram illustrating the relationship between the Grid element and its Tracks, Lines, Cells and Items." width=400> - With the short syntax forms like `grid-column: item1-start / item1-end;` I somehow still manage to get it right. - You start at line 1 and end at line 2. - But what you have created is track nr 1. - You note the offset? - At latest with the shorthand formats which state more positional values my mental gymnastics problems start: `grid-area: row-start / column-start / row-end / column-end` this always breaks my mental process. Why? - The (seemingly) analogous expression in a coordinate system is `p1x / p1y / p2x / p2y`. - But then you always need to add "+1". - This complicates things with the human mathematical short term memory! - Not only in the original calculation. But also when further spanning/shifting. - Always one extra computation step. Complicates it unnecessarily. - I very often catch myself to make mistakes with this, and only get it right at the second try or after some trial-n-error. - Why was this usability / practicality issue not caught during speficication? - Or did the advantages of a "consistent 1-index in CSS lingo" outweigh that particular con? > Probably because all of CSS uses 1-index (ex: :nth-child) [justintoon](https://news.ycombinator.com/user?id=justintoon) [on Dec 24, 2018](https://news.ycombinator.com/item?id=18753616#18754813) ## My attempts to search for reasons in the spec [3. Core Concepts of the Grid](https://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/#grid-concepts) - Nothing at all which could serve as an explanation. - If somewhere in the specification then I would have expected it here, given the section title. - Here would be a worthy place to state the rationales/considerations. [6.2 Named Grid Lines](https://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/#grid-named-grid-lines) - A short explanation: > When a name is not specified, Grid Lines can be referred to in the order which they occur. The first line is 1, the second 2 and so on. - But no reasons stated. Would also be inappropriate here. [7. Placing Grid Items](https://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/#grid-item-placement) - That's closest to how you work in a coordinate system, so if stating a memory hook, then here. - But found no explanation/hint here either. Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/8490 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Thursday, 23 February 2023 12:58:56 UTC