Issue
I am having trouble seeing why the following CSS code involving custom css variables fails to work as expected:
html
<ul class="grid">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
css
.grid > *:nth-child(2n) {
border-right-width: calc((1 - abs(clamp(-1, var(--columns, 1) - 2, 1))) * 5px);
}
.grid {
--column-gap: 10px;
--row-gap: 20px;
--columns: 5;
}
Output:
The problem is that every 2n item has a right border width, when by calculation the border-right-width should be zero (since --columns has a value other than 2 and 1 - abs(clamp(-1, var(--columns, 1) - 2, 1)) should evaluate to 0).
What am I missing? And how can the border-right-width calculation activate only when --columns takes the value of 2 and not otherwise (otherwise 0)?
Solution
As of now abs() is only supported by Firefox and Safari. Change abs(x) to max(x, 0 - x)
.grid>*:nth-child(2n) {
border-right-width: calc((1 - max(clamp(-1, var(--columns, 1) - 2, 1),
0 - clamp(-1, var(--columns, 1) - 2, 1))) * 5px);
}
Answered By - haolt

0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.