<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> <link href="resources/grid.css" rel="stylesheet"> <style> .singleSingleTrackRepeat { grid-template-rows: repeat(1, 18px); grid-template-columns: repeat(1, 15%); } .twoSingleTrackRepeat { grid-template-rows: repeat(2, auto); grid-template-columns: repeat(2, minmax(15px, 50%)); } .twoDoubleTrackRepeat { grid-template-rows: repeat(2, minmax(5px, 10px) auto); grid-template-columns: repeat(2, auto minmax(100px, 120px)); } .twoDoubleTrackWithNamedGridLineRepeat { grid-template-rows: repeat(2, 10px [start] auto [end]); grid-template-columns: repeat(2, auto [middle] 250px [end]); } .twoDoubleTrackWithTrailingNamedGridLineRepeat { grid-template-rows: repeat(2, [before] 10px); grid-template-columns: repeat(2, [before] auto); } .trailingNamedGridLineRepeat { grid-template-rows: repeat(1, 10px) [end]; grid-template-columns: repeat(1, 250px) [end]; } .leadingNamedGridLineRepeat { grid-template-rows: [start] repeat(2, 10px); grid-template-columns: [start] repeat(2, 250px); } .mixRepeatAfterNonRepeat { grid-template-rows: auto repeat(2, 10px); grid-template-columns: [start] 140px repeat(2, 250px); } .mixNonRepeatAfterRepeat { grid-template-rows: repeat(2, 10px) [end] auto; grid-template-columns: repeat(2, 250px) 15% [last]; } </style> <script src="../../resources/js-test.js"></script> </head> <body> <div class="singleSingleTrackRepeat" id="singleSingleTrackRepeat"></div> <div class="twoSingleTrackRepeat" id="twoSingleTrackRepeat"></div> <div class="twoDoubleTrackRepeat" id="twoDoubleTrackRepeat"></div> <div class="twoDoubleTrackWithNamedGridLineRepeat" id="twoDoubleTrackWithNamedGridLineRepeat"></div> <div class="twoDoubleTrackWithTrailingNamedGridLineRepeat" id="twoDoubleTrackWithTrailingNamedGridLineRepeat"></div> <div class="trailingNamedGridLineRepeat" id="trailingNamedGridLineRepeat"></div> <div class="leadingNamedGridLineRepeat" id="leadingNamedGridLineRepeat"></div> <div class="mixRepeatAfterNonRepeat" id="mixRepeatAfterNonRepeat"></div> <div class="mixNonRepeatAfterRepeat" id="mixNonRepeatAfterRepeat"></div> <script src="resources/grid-definitions-parsing-utils.js"></script> <script> description('Test that setting and getting grid-template-columns and grid-template-rows with repeat() works as expected'); debug("Test getting grid-template-columns and grid-template-rows set through CSS"); testGridDefinitionsValues(document.getElementById("singleSingleTrackRepeat"), "15%", "18px"); testGridDefinitionsValues(document.getElementById("twoSingleTrackRepeat"), "minmax(15px, 50%) minmax(15px, 50%)", "auto auto"); testGridDefinitionsValues(document.getElementById("twoDoubleTrackRepeat"), "auto minmax(100px, 120px) auto minmax(100px, 120px)", "minmax(5px, 10px) auto minmax(5px, 10px) auto"); testGridDefinitionsValues(document.getElementById("twoDoubleTrackWithNamedGridLineRepeat"), "auto [middle] 250px [end] auto [middle] 250px [end]", "10px [start] auto [end] 10px [start] auto [end]"); testGridDefinitionsValues(document.getElementById("twoDoubleTrackWithTrailingNamedGridLineRepeat"), "[before] auto [before] auto", "[before] 10px [before] 10px"); testGridDefinitionsValues(document.getElementById("trailingNamedGridLineRepeat"), "250px [end]", "10px [end]"); testGridDefinitionsValues(document.getElementById("leadingNamedGridLineRepeat"), "[start] 250px 250px", "[start] 10px 10px"); testGridDefinitionsValues(document.getElementById("mixRepeatAfterNonRepeat"), "[start] 140px 250px 250px", "auto 10px 10px"); testGridDefinitionsValues(document.getElementById("mixNonRepeatAfterRepeat"), "250px 250px 15% [last]", "10px 10px [end] auto"); debug(""); debug("Test invalid repeat syntax."); function testInvalidSyntax(gridColumn) { element = document.createElement("div"); document.body.appendChild(element); element.style.gridTemplateColumns = gridColumn; shouldBeEqualToString("window.getComputedStyle(element, '').getPropertyValue('grid-template-columns')", "none"); document.body.removeChild(element); } testInvalidSyntax("repeat("); testInvalidSyntax("repeat()"); testInvalidSyntax("repeat(3 / auto)"); testInvalidSyntax("repeat(3 , ,)"); testInvalidSyntax("repeat(0, 15px)"); testInvalidSyntax("repeat(-1, auto)"); // Nesting is no allowed. testInvalidSyntax("repeat(2, repeat(1, auto))"); </script> </body> </html>