Skip to content

Commit

Permalink
[last-baseline] Set multicol last-baseline to lowest of all fragments
Browse files Browse the repository at this point in the history
See: w3c/csswg-drafts#7639

Effectively we need to propagate the last baseline from the lowest
of all fragments. This does change the baseline of a multi-col within
a inline-block context.

Bug: 885175
Change-Id: I8385f89cbe0bb3cc89fc972546f56ddd9ae391bd
  • Loading branch information
bfgeek authored and chromium-wpt-export-bot committed Oct 6, 2022
1 parent 4118fc1 commit 8e477f0
Show file tree
Hide file tree
Showing 7 changed files with 869 additions and 3 deletions.
142 changes: 142 additions & 0 deletions css/css-flexbox/alignment/flex-align-baseline-multicol-001.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
<!DOCTYPE html>
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/7639">
<style>
.target {
display: flex;
inline-size: 100px;
position: relative;
line-height: 0;
padding: 10px;
}
.target > div {
background: hotpink;
font-size: 20px;
}
.multicol {
columns: 3;
column-fill: auto;
padding: 10px;
border: solid 10px;
}
.multicol > div {
break-inside: avoid;
break-before: column;
break-after: column;
}
span {
display: inline-block;
width: 1em;
height: 1em;
outline: solid cyan 3px;
outline-offset: -3px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<body onload="checkLayout('.target > *')">

<!-- Three columns, largest in the middle. -->
<div class="target" style="align-items: first baseline;">
<div data-offset-y="20"><span></span></div>
<div class="multicol" data-offset-y="10">
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
</div>
</div>

<div class="target" style="align-items: last baseline;">
<div data-offset-y="100"><span></span></div>
<div class="multicol" data-offset-y="10">
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
</div>
</div>

<!-- Start spanning element. -->
<div class="target" style="align-items: first baseline;">
<div data-offset-y="30"><span></span></div>
<div class="multicol" data-offset-y="10">
<div style="column-span: all; background: orange;">
<span></span><br><span></span>
</div>
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
</div>
</div>

<div class="target" style="align-items: last baseline;">
<div data-offset-y="140"><span></span></div>
<div class="multicol" data-offset-y="10">
<div style="column-span: all; background: orange;">
<span></span><br><span></span>
</div>
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
</div>
</div>

<!-- End spanning element. -->
<div class="target" style="align-items: first baseline;">
<div data-offset-y="20"><span></span></div>
<div class="multicol" data-offset-y="10">
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="column-span: all; background: orange;">
<span></span><br><span></span>
</div>
</div>
</div>

<div class="target" style="align-items: last baseline;">
<div data-offset-y="140"><span></span></div>
<div class="multicol" data-offset-y="10">
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="column-span: all; background: orange;">
<span></span><br><span></span>
</div>
</div>
</div>
144 changes: 144 additions & 0 deletions css/css-flexbox/alignment/flex-align-baseline-multicol-002.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
<!DOCTYPE html>
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/7639">
<style>
.target {
display: flex;
inline-size: 200px;
position: relative;
line-height: 0;
margin: 40px;
padding: 10px;
writing-mode: vertical-rl;
}
.target > div {
background: hotpink;
font-size: 20px;
}
.multicol {
columns: 3;
column-fill: auto;
padding: 10px;
border: solid 10px;
}
.multicol > div {
break-inside: avoid;
break-before: column;
break-after: column;
}
span {
display: inline-block;
width: 1em;
height: 1em;
outline: solid cyan 3px;
outline-offset: -3px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<body onload="checkLayout('.target > *')">

<!-- Three columns, largest in the middle. -->
<div class="target" style="align-items: first baseline;">
<div data-offset-x="105"><span></span></div>
<div class="multicol" data-offset-x="10">
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
</div>
</div>

<div class="target" style="align-items: last baseline;">
<div data-offset-x="35"><span></span></div>
<div class="multicol" data-offset-x="10">
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
</div>
</div>

<!-- Start spanning element. -->
<div class="target" style="align-items: first baseline;">
<div data-offset-x="140"><span></span></div>
<div class="multicol" data-offset-x="10">
<div style="column-span: all; background: orange;">
<span></span><br><span></span>
</div>
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
</div>
</div>

<div class="target" style="align-items: last baseline;">
<div data-offset-x="35"><span></span></div>
<div class="multicol" data-offset-x="10">
<div style="column-span: all; background: orange;">
<span></span><br><span></span>
</div>
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
</div>
</div>

<!-- End spanning element. -->
<div class="target" style="align-items: first baseline;">
<div data-offset-x="145"><span></span></div>
<div class="multicol" data-offset-x="10">
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="column-span: all; background: orange;">
<span></span><br><span></span>
</div>
</div>
</div>

<div class="target" style="align-items: last baseline;">
<div data-offset-x="30"><span></span></div>
<div class="multicol" data-offset-x="10">
<div style="font-size: 10px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 30px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="font-size: 20px;">
<span></span><br><span></span><br><span></span>
</div>
<div style="column-span: all; background: orange;">
<span></span><br><span></span>
</div>
</div>
</div>
Loading

0 comments on commit 8e477f0

Please sign in to comment.