Source code
Revision control
Copy as Markdown
Other Tools
<!DOCTYPE html>
<html>
<head>
<title>CSS Masonry: masonry serializes properly when longhands are set</title>
<link rel="author" title="Yanling Wang" href="mailto:yanlingwang@microsoft.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
function testValidMasonry(gridTemplateRowsValue, gridTemplateColumnsValue, gridTemplateAreasValue, masonryDirectionValue, masonryFillValue, serializedMasonryValue) {
test(()=>{
const root = document.documentElement;
const properties = [
["gridTemplateRows", gridTemplateRowsValue],
["gridTemplateColumns", gridTemplateColumnsValue],
["gridTemplateAreas", gridTemplateAreasValue],
["masonryDirection", masonryDirectionValue],
["masonryFill", masonryFillValue],
];
for (const [property, value] of properties) {
root.style[property] = "";
root.style[property] = value;
}
assert_equals(root.style.masonry, serializedMasonryValue);
}, `grid-template-rows: ${gridTemplateRowsValue},
grid-template-columns: ${gridTemplateColumnsValue},
grid-template-areas: ${gridTemplateAreasValue},
masonry-direction: ${masonryDirectionValue},
masonry-fill: ${masonryFillValue} should be valid.`);
}
testValidMasonry("none", "none", "none", "column", "normal", "none column normal");
testValidMasonry("10px", "none", "none", "column", "reverse", "none column reverse");
testValidMasonry("10px 20px", "10% 20%", "none", "row", "normal", "10px 20px row normal");
testValidMasonry("none", "1fr 1fr 3fr", '"a a b"', 'column', 'reverse','"a a b" 1fr 1fr 3fr column reverse');
testValidMasonry("20% 40%", "none", '"b" "a"', 'row', 'normal', '"b a" 20% 40% row normal');
testValidMasonry("none", "fit-content(calc(0.5em + 10px))", "none", "column-reverse", "normal", "fit-content(calc(0.5em + 10px)) column-reverse normal");
testValidMasonry("10% 20% 40%", "none", '"a" "b" "c"', "row-reverse", "normal", '"a b c" 10% 20% 40% row-reverse normal');
</script>
</body>
</html>