CSS and Standards at the W3C

How web standards work, and some interesting upcoming things in CSS

Who am I?

Florian Rivoal

Web Standards at W3C

W3C

World Wide Web Consortium

Web Standards

Notable characteristics (1/2)

Notable characteristics (2/2)

Life cycle of a specification

The CSS Working Group

How to work with the CSS-WG

Examples of past projects

New pseudo-class


<div class=container>
	<button>Click me!</button>
	<input>
</div>
	

.container:focus-within {
	background: yellow;
}
	

New pseudo-element


ol li::marker {
	color: red;
}
ol li:nth-of-type(2n)::marker {
	font-size: 200%;
}
	
  1. Lorem
  2. ipsum
  3. dolor
  4. si
  5. amet

New behavior


.scroller > * {
	scroll-snap-align: center;
}
.scroller {
	overflow: scroll;
	scroll-snap-type: x mandatory;
}
	

UI Details


input {
	caret-color: orange;
}
	

New layout mode

#container {
  display: grid;
  grid-template-columns: max-content auto max-content;
}
label { grid-column: 1; } input { grid-column: 2; }
#dpt {
  grid-column: 3;
  grid-row: 1 / span 3;
}
#btns { grid-column: 2 / span 2; }

Performance boost

Fine-tuned line breaking

New and up-coming CSS features

Grouping topics by area

Syntax and language features

:has()

Container Queries

Like media-queries, but for part of the document

main { display: grid; }
#component {
	grid: 2 / 3;
	container: my-layout / inline-size;
}
@container my-layout (inline-size > 45em) {
	#component .foobar { font-size: 150%; }
}

Cascade Origins

Cascade Layers

Why Cascade Layers

UI & Interaction

Accent Color

Scrollbar control

.container {
	scrollbar-color: orange blue;
	scrollbar-width: thin;
}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Caret Control

#old-screen {
	caret: block manual;
	animation: old-caret 2s infinite;
}
@keyframes old-caret {
	from, 50% { caret-color: green; }
	75%, to { caret-color: transparent; }
}
>  

Layout

Sub-grid

Grid layout through nested structures

Masonry Layout

Evolution of line-clamp (1)

line-clamp allows authors to suppress
the text after a certain number of lines o…

p {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}

Evolution of line-clamp (2)

line-clamp allows authors to suppress
the text after a certain number of lines…

p {
  line-clamp: 2;
}
Which is the same as:
p {
  line-clamp: 2;
  block-ellipsis: "…";
}

Evolution of line-clamp (3)

line-clamp allows authors to suppress
the text after a certain (continued)

p {
  line-clamp: 2;
  block-ellipsis: "(continued)";
}
Which is the same as:
p {
  continue: discard;
  max-lines: 2;
  block-ellipsis: "(continued)
}

Beyond line-clamp

article { continue: fragments; }
article:nth-fragment(1) {
	max-lines: 3;
	font-size: 1.5em;
}
article:nth-fragment(2) {
	columns: 3;
}

Anchor positioning


.anchor {
  anchor-name: --tooltip;
}
.tooltip {
  position: fixed;
  bottom: anchor(--tooltip, outside);
  /* sizing */
}

Animations & Transitions

View Transitions

Typography

Balanced Wrapping

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore.
text-wrap: balance
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore.

CJK typography

Line Trimming

text-box-edge: cap alphabetic;
textbox-trim: both;

https://florian.rivoal.net/talks/css-2024-tour/