Skip to content

Commit d59e6f8

Browse files
committed
[css-overflow-3] Allow single-axis scrollability w3c#12289
1 parent 83012c0 commit d59e6f8

1 file changed

Lines changed: 35 additions & 26 deletions

File tree

css-overflow-3/Overview.bs

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ Scrolling Overflow</h3>
235235
coincides with its padding box,
236236
and is called the <dfn export>scrollport</dfn>.
237237
A box’s <dfn export>nearest scroll container</dfn>
238-
is the its nearest [=scroll container=] ancestor in the [=containing block chain=].
238+
is the nearest [=scroll container=] ancestor in the [=containing block chain=].
239239
(See [[#overflow-properties]] for control over whether a box clips or scrolls its overflow.)
240240

241241
Scrolling operations can be initiated by the user
@@ -325,24 +325,24 @@ Clipping and Scrolling Overflow</h2>
325325

326326
The properties in this chapter specify whether and where a box’s [=overflow=] is clipped;
327327
if so, whether it is a [=scroll container=];
328-
and if so, in which axis(es) it is allowed to scroll,
328+
and if so, in which axis(es) it is allowed to scroll (its <dfn export lt="scrollable axis">scrollable axis(es)</dfn>),
329329
thus which of the following types of [=scroll container=] it is:
330330

331331
<dl>
332-
<dt><dfn>single-axis scroll container</dfn>
332+
<dt><dfn export>single-axis scroll container</dfn>
333333
<dd>
334-
A [=scroll container=] that can scroll in only one axis.
334+
A [=scroll container=] that is scrollable in only one axis.
335335

336-
<dt><dfn>dual-axis scroll container</dfn>
336+
<dt><dfn export>dual-axis scroll container</dfn>
337337
<dd>
338-
A [=scroll container=] that can scroll in both axes.
338+
A [=scroll container=] that is scrollable in both axes.
339339

340-
<dt><dfn>block-axis scroll container</dfn>
341-
<dt><dfn>inline-axis scroll container</dfn>
342-
<dt><dfn>x-axis scroll container</dfn>
343-
<dt><dfn>y-axis scroll container</dfn>
340+
<dt><dfn export>block-axis scroll container</dfn>
341+
<dt><dfn export>inline-axis scroll container</dfn>
342+
<dt><dfn export>x-axis scroll container</dfn>
343+
<dt><dfn export>y-axis scroll container</dfn>
344344
<dd>
345-
A [=scroll container=] that can scroll in the specified axis,
345+
A [=scroll container=] that is scrollable in the specified axis,
346346
regardless of whether it can also scroll in the other axis.
347347
</dl>
348348

@@ -398,7 +398,6 @@ Managing Overflow: the 'overflow-x', 'overflow-y', and 'overflow' properties</h3
398398
<dd>
399399
There is no special handling of overflow, that is,
400400
the box’s content is rendered outside the box if positioned there.
401-
The box is not a <a>scroll container</a>.
402401

403402
<dt><dfn>hidden</dfn>
404403
<dd>
@@ -410,8 +409,7 @@ Managing Overflow: the 'overflow-x', 'overflow-y', and 'overflow' properties</h3
410409
such as dragging on a touch screen
411410
or using the scrolling wheel on a mouse.
412411
However, the content must still be scrollable programmatically,
413-
for example using the mechanisms defined in [[CSSOM-VIEW]],
414-
and the box is therefore still a <a>scroll container</a>.
412+
for example using the mechanisms defined in [[CSSOM-VIEW]].
415413

416414
<dt><dfn>clip</dfn>
417415
<dd>
@@ -422,8 +420,7 @@ Managing Overflow: the 'overflow-x', 'overflow-y', and 'overflow' properties</h3
422420
In addition, unlike ''overflow: hidden''
423421
which still allows programmatic scrolling,
424422
''overflow: clip'' forbids scrolling entirely,
425-
through any mechanism,
426-
and therefore the box is not a <a>scroll container</a>.
423+
through any mechanism.
427424

428425
Unlike ''hidden'', this value <strong>does not</strong> cause
429426
the element to establish a new formatting context.
@@ -435,8 +432,8 @@ Managing Overflow: the 'overflow-x', 'overflow-y', and 'overflow' properties</h3
435432
<dd>
436433
This value indicates that
437434
the content is clipped to the [=overflow clip edge=],
438-
but can be scrolled into view
439-
(and therefore the box is a <a>scroll container</a>).
435+
but can be scrolled into view.
436+
440437
Furthermore, if the user agent uses a scrolling mechanism
441438
that is visible on the screen (such as a scroll bar or a panner),
442439
that mechanism should be displayed
@@ -458,21 +455,28 @@ Managing Overflow: the 'overflow-x', 'overflow-y', and 'overflow' properties</h3
458455
</dl>
459456

460457
The ''overflow/scroll'', ''overflow/auto'', and ''overflow/hidden'' values
461-
are known as the <dfn export lt="scrollable overflow value">scrollable values</dfn> of 'overflow'.
458+
are known as the <dfn export lt="scrollable overflow value" local-lt="scrollable value">scrollable values</dfn> of 'overflow'.
459+
They cause the box to be a [=scroll container=]
460+
and the affected axis to be a [=scrollable axis=].
461+
A [=block box=] that becomes a [=scroll container=]
462+
also establishes an [=independent formatting context=].
463+
462464
The ''overflow/visible'' and ''overflow/clip'' values
463465
are known as the <dfn export lt="non-scrollable overflow value">non-scrollable values</dfn>.
466+
However, if the other axis specifies a [=scrollable value=],
467+
a specified value of ''visible''
468+
[=computed value|computes=] to ''overflow/auto'',
469+
enabling scrolling in its axis.
470+
If neither axis computes to a [=scrollable value=],
471+
the box is not a [=scroll container=].
472+
If only one axis computes to a [=scrollable value=]
473+
(i.e. the other axis is ''overflow/clip''),
474+
the box is a [=single-axis scroll container=].
464475

465-
The ''visible''/''overflow/clip'' values of 'overflow'
466-
compute to ''overflow/auto''/''hidden'' (respectively)
467-
if one of 'overflow-x' or 'overflow-y' is neither ''visible'' nor ''overflow/clip''.
468476
On [=replaced elements=],
469477
a [=computed value|computed=] ''overflow/hidden'' value further resolves
470478
to a [=used value=] of ''overflow/clip''.
471479

472-
If the computed value of 'overflow' on a <a>block box</a>
473-
is neither ''overflow/visible'' nor ''overflow/clip'' nor a combination thereof,
474-
it [=establishes an independent formatting context=] for its contents.
475-
476480
User agents must also support
477481
the <dfn value for="overflow, overflow-x, overflow-y, overflow-block, overflow-inline">overlay</dfn> keyword
478482
as a [=legacy value alias=] of ''overflow/auto''.
@@ -1334,6 +1338,11 @@ ellipsis interaction with scrolling interfaces</h4>
13341338

13351339
This appendix is <em>informative</em>.
13361340

1341+
Significant changes since the <a href="https://www.w3.org/TR/2025/WD-css-overflow-3-20251007/">7 October 2025 Working Draft</a>:
1342+
* Allow combining ''overflow: clip'' behavior in one axis with scrolling in the other,
1343+
to allow single-axis trapping for e.g. [=sticky positioning=].
1344+
(<a href="https://github.com/w3c/csswg-drafts/issues/12289">Issue 12289</a>)
1345+
13371346
Significant changes since the <a href="https://www.w3.org/TR/2023/WD-css-overflow-3-20230329/">29 March 2023 Working Draft</a>:
13381347

13391348
* Define that ''overflow: hidden'' is treated as ''overflow: clip'' on [=replaced elements=].

0 commit comments

Comments
 (0)