Skip to content

Commit bd67248

Browse files
committed
Omit 50% when the other color-mix() percentage is omitted
1 parent 8b92cf4 commit bd67248

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

__tests__/value.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3014,9 +3014,13 @@ describe('<color>', () => {
30143014
test('valid <color-mix()>', () => {
30153015
const valid = [
30163016
// Omitted component values
3017+
['color-mix(in srgb, red 50%, green)', 'color-mix(in srgb, red, green)'],
3018+
['color-mix(in srgb, red, green 50%)', 'color-mix(in srgb, red, green)'],
30173019
['color-mix(in srgb, red 50%, green 50%)', 'color-mix(in srgb, red, green)'],
30183020
['color-mix(in srgb, red 51%, green 49%)', 'color-mix(in srgb, red 51%, green)'],
30193021
['color-mix(in srgb, red 49%, green 51%)', 'color-mix(in srgb, red 49%, green)'],
3022+
['color-mix(in srgb, red 49%, green)'],
3023+
['color-mix(in srgb, red, green 51%)', 'color-mix(in srgb, red 49%, green)'],
30203024
['color-mix(in srgb, red 100%, green 100%)'],
30213025
// Preserve channel values except <hue> and <alpha-value>
30223026
['color-mix(in srgb, rgba(-100% 200% 0 / 101%), hsla(540deg -1% 0 / 50%))', 'color-mix(in srgb, rgb(-255 510 0), hsl(180 -1 0 / 0.5))'],

lib/serialize.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ function serializeColor({ name, types, value }, specified) {
331331
c1 = serializeColor(c1, true)
332332
c2 = serializeColor(c2, true)
333333
if (isOmitted(p2)) {
334-
if (isOmitted(p1)) {
334+
if (isOmitted(p1) || (p1.types.includes('<percentage>') && p1.value === 50)) {
335335
return `color-mix(${interpolation}, ${c1}, ${c2})`
336336
}
337337
return `color-mix(${interpolation}, ${c1} ${serializeCSSComponentValue(p1)}, ${c2})`
@@ -347,6 +347,9 @@ function serializeColor({ name, types, value }, specified) {
347347
return `color-mix(${interpolation}, ${c1} ${serializeCSSComponentValue(p1)}, ${c2} ${serializeCSSComponentValue(p2)})`
348348
}
349349
if (isOmitted(p1)) {
350+
if (p2.value === 50) {
351+
return `color-mix(${interpolation}, ${c1}, ${c2})`
352+
}
350353
return `color-mix(${interpolation}, ${c1} ${serializeCSSComponentValue({ ...p2, value: 100 - p2.value })}, ${c2})`
351354
}
352355
return `color-mix(${interpolation}, ${c1} ${serializeCSSComponentValue(p1)}, ${c2} ${serializeCSSComponentValue(p2)})`

0 commit comments

Comments
 (0)