| <html> |
| <link href="resources/grid.css" rel="stylesheet"/> |
| <style> |
| .grid { font: 10px/1 Ahem; } |
| |
| .minWidth10 { min-width: 10px; } |
| .minWidth20 { min-width: 20px; } |
| .minWidth30 { min-width: 30px; } |
| .minWidth40 { min-width: 40px; } |
| .minWidth50 { min-width: 50px; } |
| .minWidth60 { min-width: 60px; } |
| .minWidth70 { min-width: 70px; } |
| .minWidth90 { min-width: 90px; } |
| .minWidthMaxContent { min-width: max-content; } |
| |
| .width50 { width: 50px; } |
| .width60 { width: 60px; } |
| .width200 { width: 200px; } |
| |
| .border5 { border: 5px solid #abc; } |
| .padding8 { padding: 0px 8px 0px; } |
| |
| /* All these 4 cases are equivalent. We use them interchangeably. */ |
| .gridAuto { grid-template-columns: auto; } |
| .gridMinMaxAutoAuto { grid-template-columns: minmax(auto, auto); } |
| .gridMinMaxAutoMaxContent { grid-template-columns: minmax(auto, max-content); } |
| .gridMinMaxMinContentAuto { grid-template-columns: minmax(min-content, auto); } |
| |
| /* All these 3 cases are equivalent. We use them interchangeably. */ |
| .gridAutoAndAuto { grid-template-columns: auto auto; } |
| .gridAutoAndMinMaxAutoAuto { grid-template-columns: auto minmax(auto, auto); } |
| .gridMinMaxAutoMaxContentAndAuto { grid-template-columns: minmax(auto, max-content) auto; } |
| |
| </style> |
| <script src="../../resources/js-test.js"></script> |
| <body> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAuto"> |
| <div class="firstRowFirstColumn minWidth40">XXXXXX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoItemSmallerThanMinSize"> |
| <div class="firstRowFirstColumn minWidth40">XX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridMinMaxAutoAuto" id="gridMinMaxAutoAuto"> |
| <div class="firstRowFirstColumn minWidth40">XX XX XX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridMinMaxAutoMaxContent" id="gridMinMaxAutoMaxContent"> |
| <div class="firstRowFirstColumn minWidth40">XXX XX X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridMinMaxMinContentAuto" id="gridMinMaxMinContentAuto"> |
| <div class="firstRowFirstColumn minWidth40">X X X X X X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoMultipleItems"> |
| <div class="firstRowFirstColumn minWidth30">XX</div> |
| <div class="secondRowFirstColumn minWidth20"">XXXX XXXX</div> |
| <div class="thirdRowAutoColumn minWidth10">XX XXXXX X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridMinMaxAutoAuto" id="gridMinMaxAutoAutoMultipleItemsOneWithoutMinWidth"> |
| <div class="firstRowFirstColumn minWidth30">XX</div> |
| <div class="secondRowFirstColumn">XXXXXX</div> |
| <div class="thirdRowAutoColumn minWidth20">XXXX XXXX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridMinMaxAutoMaxContent" id="gridMinMaxAutoMaxContentMultipleItemsOneWithAutoMinWidth"> |
| <div class="firstRowFirstColumn minWidth30">XX</div> |
| <div class="secondRowFirstColumn">XX XXXXXXXX</div> |
| <div class="thirdRowAutoColumn minWidth20">XXXX XXXX</div> |
| </div> |
| </div> |
| |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAutoAndAuto" id="gridAutoAndAutoFixedWidthChildren"> |
| <div class="firstRowFirstColumn width200 minWidth50"></div> |
| <div class="firstRowSecondColumn width50"></div> |
| </div> |
| </div> |
| |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAutoAndAuto" id="gridAutoAndAutoOneSpanningOneNonSpannig"> |
| <div class="firstRowFirstColumn">XX XX</div> |
| <div class="secondRowBothColumn minWidth50">XXXXXX X XXX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAutoAndAuto" id="gridAutoAndAutoOneSpanningMultipleNonSpanning"> |
| <div class="secondRowBothColumn minWidth60">XX XX XX</div> |
| <div class="firstRowSecondColumn">X X</div> |
| <div class="firstRowSecondColumn">XXXX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAutoAndMinMaxAutoAuto" id="gridAutoAndMinMaxAutoAutoOneSpanningOneNonSpanning"> |
| <div class="firstRowSecondColumn">X XXX XX</div> |
| <div class="secondRowBothColumn minWidth70">XXX XXXX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAutoAndMinMaxAutoAuto" id="gridAutoAndMinMaxAutoAutoMultipleSpanning"> |
| <div class="secondRowBothColumn minWidth70">XX XX XX</div> |
| <div class="firstRowBothColumn">XXXXX X XXXXX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridMinMaxAutoMaxContentAndAuto" id="gridMinMaxAutoMaxContentAndAutoOneSpanningMultipleNonSpanning"> |
| <div class="firstRowSecondColumn minWidth60">X XXX XX</div> |
| <div class="secondRowBothColumn minWidth90">XXXXX XXXXX</div> |
| <div class="firstRowFirstColumn">XX XX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridMinMaxAutoMaxContentAndAuto" id="gridMinMaxAutoMaxContentAndAutoMultipleSpanningMultipleNonSpanning"> |
| <div class="secondRowBothColumn">XX XX XX XX</div> |
| <div class="firstRowFirstColumn minWidth40">XXX</div> |
| <div class="firstRowBothColumn minWidth90">X XX XXX</div> |
| <div class="firstRowSecondColumn">X XX X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoWithFixedWidthChild"> |
| <div class="firstRowFirstColumn width60">XXX X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoWithFixedWidthChildAndMinWidth"> |
| <div class="firstRowFirstColumn width60 minWidth40">XXX X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoWithFixedWidthChildAndHigherMinWidth"> |
| <div class="firstRowFirstColumn width60 minWidth90">XXX X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAutoAndAuto" id="gridAutoAndAutoOneSpanningFixedWidth"> |
| <div class="firstRowBothColumn width50">XX XXX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAutoAndAuto" id="gridAutoAndAutoOneSpanningFixedWidthAndMinWidth"> |
| <div class="firstRowBothColumn width60 minWidth50">XX XXX XX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAutoAndAuto" id="gridAutoAndAutoOneSpanningFixedWidthAndHigherMinWidth"> |
| <div class="firstRowBothColumn width60 minWidth70">XX XXX XX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoFixedMinWidthWithBorder"> |
| <div class="firstRowFirstColumn minWidth40 border5">XXXXXX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoFixedMinWidthWithPadding"> |
| <div class="firstRowFirstColumn minWidth40 padding8">XXXXXX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoFixedMinWidthWithBorderAndPadding"> |
| <div class="firstRowFirstColumn minWidth40 border5 padding8">XXXXXX</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoAutoMinWidthWithBorder"> |
| <div class="firstRowFirstColumn border5">XX XXX X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoAutoMinWidthWithPadding"> |
| <div class="firstRowFirstColumn padding8">XX XXX X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoAutoMinWidthWithBorderAndPadding"> |
| <div class="firstRowFirstColumn border5 padding8">XX XXX X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoMaxContentMinWidthWithBorder"> |
| <div class="firstRowFirstColumn minWidthMaxContent border5">X XXXX X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoMaxContentMinWidthWithPadding"> |
| <div class="firstRowFirstColumn minWidthMaxContent padding8">X XXXX X</div> |
| </div> |
| </div> |
| |
| <div class="constrainedContainer"> |
| <div class="grid gridAuto" id="gridAutoMaxContentMinWidthWithBorderAndPadding"> |
| <div class="firstRowFirstColumn border5 padding8 minWidthMaxContent">X XXXX X</div> |
| </div> |
| </div> |
| |
| <script> |
| function testGridColumnsValues(id, computedColumnValue) |
| { |
| shouldBeEqualToString("window.getComputedStyle(" + id + ", '').getPropertyValue('grid-template-columns')", computedColumnValue); |
| } |
| |
| debug("Check that min-width is honored when sizing auto columns."); |
| testGridColumnsValues("gridAuto", "40px"); |
| testGridColumnsValues("gridAutoItemSmallerThanMinSize", "40px"); |
| testGridColumnsValues("gridMinMaxAutoAuto", "40px"); |
| testGridColumnsValues("gridMinMaxAutoMaxContent", "40px"); |
| testGridColumnsValues("gridMinMaxMinContentAuto", "40px"); |
| testGridColumnsValues("gridAutoMultipleItems", "30px"); |
| testGridColumnsValues("gridMinMaxAutoAutoMultipleItemsOneWithoutMinWidth", "60px"); |
| testGridColumnsValues("gridMinMaxAutoMaxContentMultipleItemsOneWithAutoMinWidth", "80px"); |
| testGridColumnsValues("gridAutoAndAutoFixedWidthChildren", "200px 50px"); |
| |
| debug(""); |
| debug("Check that min-width is honored when sizing auto columns and spanning grid items."); |
| testGridColumnsValues("gridAutoAndAutoOneSpanningOneNonSpannig", "35px 15px"); |
| testGridColumnsValues("gridAutoAndAutoOneSpanningMultipleNonSpanning", "20px 40px"); |
| testGridColumnsValues("gridAutoAndMinMaxAutoAutoOneSpanningOneNonSpanning", "20px 50px"); |
| testGridColumnsValues("gridAutoAndMinMaxAutoAutoMultipleSpanning", "35px 35px"); |
| testGridColumnsValues("gridMinMaxAutoMaxContentAndAutoOneSpanningMultipleNonSpanning", "25px 65px"); |
| testGridColumnsValues("gridMinMaxAutoMaxContentAndAutoMultipleSpanningMultipleNonSpanning", "40px 50px"); |
| |
| debug(""); |
| debug("Check the interactions between width and min-width and auto tracks."); |
| testGridColumnsValues("gridAutoWithFixedWidthChild", "60px"); |
| testGridColumnsValues("gridAutoWithFixedWidthChildAndMinWidth", "60px"); |
| testGridColumnsValues("gridAutoWithFixedWidthChildAndHigherMinWidth", "90px"); |
| testGridColumnsValues("gridAutoAndAutoOneSpanningFixedWidth", "25px 25px"); |
| testGridColumnsValues("gridAutoAndAutoOneSpanningFixedWidthAndMinWidth", "30px 30px"); |
| testGridColumnsValues("gridAutoAndAutoOneSpanningFixedWidthAndHigherMinWidth", "35px 35px"); |
| |
| debug(""); |
| debug("Check that borders and paddings are considering when computing min sizes."); |
| testGridColumnsValues("gridAutoFixedMinWidthWithBorder", "50px"); |
| testGridColumnsValues("gridAutoFixedMinWidthWithPadding", "56px"); |
| testGridColumnsValues("gridAutoFixedMinWidthWithBorderAndPadding", "66px"); |
| testGridColumnsValues("gridAutoAutoMinWidthWithBorder", "40px"); |
| testGridColumnsValues("gridAutoAutoMinWidthWithPadding", "46px"); |
| testGridColumnsValues("gridAutoAutoMinWidthWithBorderAndPadding", "56px"); |
| testGridColumnsValues("gridAutoMaxContentMinWidthWithBorder", "90px"); |
| testGridColumnsValues("gridAutoMaxContentMinWidthWithPadding", "96px"); |
| testGridColumnsValues("gridAutoMaxContentMinWidthWithBorderAndPadding", "106px"); |
| |
| </script> |
| </body> |
| </html> |