From 2a814f1d66bb3632da8e9402af98cc149dc31f10 Mon Sep 17 00:00:00 2001 From: ahmadabdolsaheb Date: Thu, 15 Feb 2018 19:41:53 +0300 Subject: [PATCH] feat(seed): Adds the json file for css grid challenges order or json files changed and new css grid challenges json is added --- .../01-responsive-web-design/css-grid.json | 1286 +++++++++++++++++ .../responsive-web-design-projects.json | 2 +- 2 files changed, 1287 insertions(+), 1 deletion(-) create mode 100644 seed/challenges/01-responsive-web-design/css-grid.json diff --git a/seed/challenges/01-responsive-web-design/css-grid.json b/seed/challenges/01-responsive-web-design/css-grid.json new file mode 100644 index 00000000000..20bfb7bf7e6 --- /dev/null +++ b/seed/challenges/01-responsive-web-design/css-grid.json @@ -0,0 +1,1286 @@ +{ + "name": "CSS Grid", + "order": 6, + "time": "5 hours", + "helpRoom": "Help", + "challenges": [ + { + "id": "5a858937d96184f06fd60d60", + "title": "Introduction to the CSS Grid Challenges", + "description": [ + [ + "", + "", + "CSS Grid helps you easily build complex web designs. It works by turning an HTML element into a grid container with rows and columns for you to place children elements where you want within the grid.", + "" + ] + ], + "releasedOn": "Feb 15, 2018", + "challengeSeed": [], + "tests": [], + "type": "waypoint", + "challengeType": 7, + "isRequired": false, + "translations": {} + }, + { + "id": "5a858944d96184f06fd60d61", + "title": "Create your first CSS Grid", + "description": [ + "Turn any HTML element into a grid container by setting its display property to grid. This gives you the ability to use all the other properties associated with CSS Grid.", + "Note
In CSS Grid, the parent element is referred to as the container and its children are called items.", + "
", + "Change the display of the div with the container class to grid." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*display\\s*?:\\s*?grid\\s*?;[\\s\\S]*}/gi), 'message: container class should have a display property with a value of grid.');" + ], + "solutions": [], + "hints": [], + "type": "waypoint", + "releasedOn": "Feb 15, 2018", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a9036d038fddaf9a66b5d32", + "title": "Add columns with grid-template-columns", + "description": [ + "Simply creating a grid element doesn't get you very far. You need to define the structure of the grid as well. To add some columns to the grid, use the grid-template-columns property on a grid container as demonstrated below:", + "
.container {
display: grid;
grid-template-columns: 50px 50px;
}
", + "This will give your grid two columns that are 50px wide each.", + "The number of parameters given to the grid-template-columns property indicates the number of columns in the grid, and the value of each parameter indicates the width of each column.", + "
", + "Give the grid container three columns that are 100px wide each." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?100px\\s*?100px\\s*?100px\\s*?;[\\s\\S]*}/gi), 'message: container class should have a grid-template-columns property with three units of 100px.');" + ], + "solutions": [], + "hints": [], + "type": "waypoint", + "releasedOn": "Feb 15, 2018", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a9036e138fddaf9a66b5d33", + "title": "Add rows with grid-template-rows", + "description": [ + "The grid you created in the last challenge will set the number of rows automatically. To adjust the rows manually, use the grid-template-rows property in the same way you used grid-template-columns in previous challenge.", + "
", + "Add two rows to the grid that are 50px tall each." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-rows\\s*?:\\s*?50px\\s*?50px\\s*?;[\\s\\S]*}/gi), 'message: container class should have a grid-template-rows property with two units of 50px.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a9036ee38fddaf9a66b5d34", + "title": "Use CSS Grid units to change the size of columns and rows", + "description": [ + "You can use absolute and relative units like px and em in CSS Grid to define the size of rows and columns. You can use these as well:", + "fr: sets the column or row to a fraction of the available space,", + "auto: sets the column or row to the width or height of its content automatically,", + "%: adjusts the column or row to the percent width of its container.", + "Here's the code that generates the output in the preview:", + "
grid-template-columns: auto 50px 10% 2fr 1fr;
", + "This snippet creates five columns. The first column is as wide as its content, the second column is 50px, the third column is 10% of its container, and for the last two columns; the remaining space is divided into three sections, two are allocated for the fourth column, and one for the fifth.", + "
", + "Make a grid with three columns whose widths are as follows: 1fr, 100px, and 2fr." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?1fr\\s*?100px\\s*?2fr\\s*?;[\\s\\S]*}/gi), 'message: container class should have a grid-template-columns property that has three columns with the following widths: 1fr, 100px, and 2fr.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a9036ee38fddaf9a66b5d35", + "title": "Create a column gap using grid-column-gap", + "description": [ + "So far in the grids you have created, the columns have all been tight up against each other. Sometimes you want a gap in between the columns. To add a gap between the columns, use the grid-column-gap property like this:", + "
grid-column-gap: 10px;
", + "This creates 10px of empty space between all of our columns.", + "
", + "Give the columns in the grid a 20px gap." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*grid-column-gap\\s*?:\\s*?20px\\s*?;[\\s\\S]*}/gi), 'message: container class should have a grid-column-gap property that has the value of 20px.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a9036ee38fddaf9a66b5d36", + "title": "Create a row gap using grid-row-gap", + "description": [ + "You can add a gap in between the rows of a grid using grid-row-gap in the same way that you added a gap in between columns in the previous challenge.", + "
", + "Create a gap for the rows that is 5px of the grid's height." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*grid-row-gap\\s*?:\\s*?5px\\s*?;[\\s\\S]*}/gi), 'message: container class should have a grid-row-gap property that has the value of 5px.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a9036ee38fddaf9a66b5d37", + "title": "Add gaps faster with grid-gap", + "description": [ + "grid-gap is a shorthand property for grid-row-gap and grid-column-gap from the previous two challenges that's more convenient to use. If grid-gap has one value, it will a create a gap between all rows and columns. However, if there are two values, it will use the first one to set the gap between the rows and the second value for the columns.", + "
", + "Use grid-gap to introduce a 10px gap between the rows and 20px gap between the columns." + ], + "challengeSeed": [ + "", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*grid-gap\\s*?:\\s*?10px\\s*?20px\\s*?;[\\s\\S]*}/gi), 'message: container class should have a grid-gap property that introduces 10px gap between the rows and 20px gap between the columns.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a90372638fddaf9a66b5d38", + "title": "Use grid-column to control spacing", + "description": [ + "Up to this point, all the properties that have been discussed are for grid containers. The grid-column property is the first one for use on the grid items themselves.", + "The hypothetical horizontal and vertical lines that create the grid are referred to as lines. These lines are numbered starting with 1 at the top left corner of the grid and move right for columns and down for rows, counting upward.", + "To control the amount of columns an item will consume, you can use the grid-column property in conjunction with the line numbers you want the item to start and stop at.", + "Here's an example:", + "
grid-column: 1 / 3;
", + "This will make the item start at the first vertical line of the grid on the left and span to the 3rd line of the grid, consuming two columns.", + "
", + "Make the item with the class item5 consume the last two columns of the grid." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.item5\\s*?{[\\s\\S]*grid-column\\s*?:\\s*?2\\s*?\\/\\s*?4\\s*?;[\\s\\S]*}/gi), 'message: item5 class should have a grid-column property that has the value of 2 / 4.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a90373638fddaf9a66b5d39", + "title": "Use grid-row to control spacing", + "description": [ + "Of course, you can make items consume multiple rows just like you can with columns. You define the horizontal lines you want an item to start and stop at using the grid-row property on a grid item.", + "
", + "Make the element with the item5 class consume the last two rows." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.item5\\s*?{[\\s\\S]*grid-row\\s*?:\\s*?2\\s*?\\/\\s*?4\\s*?;[\\s\\S]*}/gi), 'message: item5 class should have a grid-row property that has the value of 2 / 4.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a90374338fddaf9a66b5d3a", + "title": "Align an item horizontally using justify-self", + "description": [ + "In CSS Grid, the content of each item is located in a box which is referred to as a cell. You can align the content's position within its cell horizontally using the justify-self property on a grid item. By default, this property has a value of stetch, which will make the content fill the whole width of the cell. This CSS Grid property accepts other values as well:", + "start: aligns the content at the left of the cell,", + "center: aligns the content in the center of the cell,", + "end: aligns the content at the right of the cell.", + "
", + "Use the justify-self property to center the item with the class item2." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.item2\\s*?{[\\s\\S]*justify-self\\s*?:\\s*?center\\s*?;[\\s\\S]*}/gi), 'message: item2 class should have a justify-self property that has the value of center.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a90375238fddaf9a66b5d3b", + "title": "Align an item vertically using align-self", + "description": [ + "Just as you can align an item horizontally, there's a way to align an item vertically as well. To do this, you use the align-self property on an item. This property accepts all of the same values as justify-self from the last challenge.", + "
", + "Align the item with the class item3 vertically at the end." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.item3\\s*?{[\\s\\S]*align-self\\s*?:\\s*?end\\s*?;[\\s\\S]*}/gi), 'message: item3 class should have a align-self property that has the value of end.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a90376038fddaf9a66b5d3c", + "title": "Align all items horizontally using justify-items", + "description": [ + "Sometimes you want all the items in your CSS Grid to share the same alignment. You can use the previously learned properties and align them individually, or you can align them all at once horizontally by using justify-items on your grid container. This property can accept all the same values you learned about in the previous two challenges, the difference being that it will move all the items in our grid to the desired alignment.", + "
", + "Use this property to center all our items horizontally." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*justify-items\\s*?:\\s*?center\\s*?;[\\s\\S]*}/gi), 'message: container class should have a justify-items property that has the value of center.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a94fdf869fb03452672e45b", + "title": "Align all items vertically using align-items", + "description": [ + "Using the align-items property on a grid container will set the vertical alignment for all the items in our grid.", + "
", + "Use it now to move all the items to the end of each cell." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*align-items\\s*?:\\s*?end\\s*?;[\\s\\S]*}/gi), 'message: container class should have a align-items property that has the value of end.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a94fe0569fb03452672e45c", + "title": "Divide the grid into an area template", + "description": [ + "You can group cells of your grid together into an area and give the area a custom name. Do this by using grid-template-areas on the container like this:", + "
grid-template-areas:
\"header header header\"
\"advert content content\"
\"footer footer footer\";
", + "The code above merges the top three cells together into an area named header, the bottom three cells into a footer area, and it makes two areas in the middle row; advert and content.", + "Note
Every word in the code represents a cell and every pair of quotation marks represent a row.", + "In addition to custom labels, you can use a period (.) to designate an empty cell in the grid.", + "
", + "Place the area template so that the cell labeled advert becomes an empty cell." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-areas\\s*?:\\s*?\"\\s*?header\\s*?header\\s*?header\\s*?\"\\s*?\"\\s*?.\\s*?content\\s*?content\\s*?\"\\s*?\"\\s*?footer\\s*?footer\\s*?footer\\s*?\"\\s*?;[\\s\\S]*}/gi), 'message: container class should have a grid-template-areas propertiy similar to the preview but has . instead of the advert area.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a94fe1369fb03452672e45d", + "title": "Place items in grid areas using the grid-area property", + "description": [ + "After creating an areas template for your grid container, as shown in the previous challenge, you can place an item in your custom area by referencing the name you gave it. To do this, you use the grid-area property on an item like this:", + "
.item1 { grid-area: header; }
", + "This lets the grid know that you want the item1 class to go in the area named header. In this case, the item will use the entire top row because that whole row is named as the header area.", + "
", + "Place an element with the item5 class in the footer area using the grid-area property." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.item5\\s*?{[\\s\\S]*grid-area\\s*?:\\s*?footer\\s*?;[\\s\\S]*}/gi), 'message: item5 class should have a grid-area property that has the value of footer.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a94fe2669fb03452672e45e", + "title": "Use grid-area without creating an areas template", + "description": [ + "The grid-area property you learned in the last challenge can be used in another way. If your grid doesn't have an areas template to reference, you can create an area on the fly for an item to be placed like this:", + "
item1 { grid-area: 1/1/2/4; }
", + "This is using the line numbers you learned about earlier to define where the area for this item will be. The numbers in the example above represent these values:", + "
grid-area: horizontal line to start at / vertical line to start at / horizontal line to end at / vertical line to end at;
", + "So the item in the example will consume the rows between lines 1 and 2, and the columns between lines 1 and 4.", + "
", + "Using the grid-area property, place the element with item5 class between the first and forth horizontal lines and between the third and forth vertical lines." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.item5\\s*?{[\\s\\S]*grid-area\\s*?:\\s*?3\\s*?\\/\\s*?1\\s*?\\/\\s*?4\\s*?\\/\\s*?4\\s*?;[\\s\\S]*}/gi), 'message: item5 class should have a grid-area property that has the value of 3/1/4/4.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a94fe3669fb03452672e45f", + "title": "Reduce repetition using the repeat function", + "description": [ + "When you used grid-template-columns and grid-template-rows to define the structure of a grid, you entered a value for each row or column you created.", + "Lets say you want a grid with 100 rows of the same height. It isn't very practical to insert 100 values individually. Fortunately, there's a better way - by using the repeat function to specify the number of times you want your column or row to be repeated, followed by a comma and the value you want to repeat.", + "Here's an example that would create the 100 row grid, each row at 50px tall.", + "
grid-template-rows: repeat(100, 50px);
", + "You can also repeat multiple values with the repeat function, and insert the function amongst other values when defining a grid structure. Here's what I mean:", + "
grid-template-columns: repeat(2, 1fr 50px) 20px;
", + "This translates to:", + "
grid-template-columns: 1fr 50px 1fr 50px 20px;
", + "Note
1fr 50px is repeated twice followed by 20px.", + "
", + "Use repeat to remove repetition from the grid-template-columns property." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?3\\s*?,\\s*?1fr\\s*?\\)\\s*?;[\\s\\S]*}/gi), 'message: container class should have a grid-template-columns property that is set to repeat 3 columns with the width of 1fr.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a94fe4469fb03452672e460", + "title": "Limit item size using the minmax function", + "description": [ + "There's another built-in function to use with grid-template-columns and grid-template-rows called minmax. It's used to limit the size of items when the grid container changes size. To do this you need to specify the acceptable size range for your item. Here is an example:", + "
grid-template-columns: 100px minmax(50px, 200px);
", + "In the code above, grid-template-columns is set to create three columns; the first is 100px wide, and the second has the minimum width of 50px and the maximum width of 200px.", + "
", + "Using the minmax function, replace the 1fr in the repeat function with a column size that has the minimum width of 90px and the maximum width of 1fr, and resize the preview panel to see the effect." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?3\\s*?,\\s*?minmax\\s*?\\(\\s*?90px\\s*?,\\s*?1fr\\s*?\\)\\s*?\\)\\s*?;[\\s\\S]*}/gi), 'message: container class should have a grid-template-columns property that is set to repeat 3 columns with the minimum width of 90px and maximum width of 1fr.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a94fe5469fb03452672e461", + "title": "Create flexible layouts using auto-fill", + "description": [ + "The repeat function comes with a option called auto-fill. This allows you to automatically insert as many rows or columns of your desired size as possible depending on the size of the container. You can create flexible layouts when combining auto-fill with minmax.", + "In the preview, grid-template-columns is set to", + "
repeat(auto-fill, minmax(60px, 1fr));
", + "When the container changes size, this setup keeps inserting 60px columns and stretching them until it can insert another one.", + "Note
If your container can't fit all your items on one row, it will move them down to a new one.", + "
", + "In the first grid, use auto-fill with repeat to fill the grid with columns that have a minimum width of 60px and maximum of 1fr. Then resize the preview to see auto-fill in action." + ], + "challengeSeed": [ + "", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?auto-fill\\s*?,\\s*?minmax\\s*?\\(\\s*?60px\\s*?,\\s*?1fr\\s*?\\)\\s*?\\)\\s*?;[\\s\\S]*}/gi), 'message: container class should have a grid-template-columns property with repeat and auto-fill that will fill the grid with columns that have a minimum width of 60px and maximum of 1fr.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a94fe6269fb03452672e462", + "title": "Create flexible layouts using auto-fit", + "description": [ + "auto-fit works almost identical to auto-fill. The only difference is that when the container's size exceeds the size of all the items combined, auto-fill keeps inserting empty rows or columns and pushes your items to the side, while auto-fit collapses those empty rows or columns and stretches your items to fit the size of the container.", + "Note
If your container can't fit all your items on one row, it will move them down to a new one.", + "
", + "In the second grid, use auto-fit with repeat to fill the grid with columns that have a minimum width of 60px and maximum of 1fr. Then resize the preview to see the difference." + ], + "challengeSeed": [ + "", + " ", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
", + "
", + "
1
", + "
2
", + "
3
", + "
4
", + "
5
", + "
" + ], + "tests": [ + "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?auto-fit\\s*?,\\s*?minmax\\s*?\\(\\s*?60px\\s*?,\\s*?1fr\\s*?\\)\\s*?\\)\\s*?;[\\s\\S]*}/gi), 'message: container2 class should have a grid-template-columns property with repeat and auto-fit that will fill the grid with columns that have a minimum width of 60px and maximum of 1fr.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a94fe7769fb03452672e463", + "title": "Use media queries to create responsive layouts", + "description": [ + "CSS Grid can be an easy way to make your site more responsive by using media queries to rearrange grid areas, change dimensions of a grid, and rearrange the placement of items.", + "In the preview, when the viewport width is 300px or more, the number of columns changes from 1 to 2. The advertisement area then occupies the left column completely.", + "
", + "When the viewport width is 400px or more, make the header area occupy the top row completely and the footer area occupy the bottom row completely." + ], + "challengeSeed": [ + "", + " ", + "
", + "
header
", + "
advert
", + "
content
", + "
footer
", + "
" + ], + "tests": [ + "assert(code.match(/@media\\s*?\\(\\s*?min-width\\s*?:\\s*?400px\\s*?\\)[\\s\\S]*.container\\s*?{[\\s\\S]*grid-template-areas\\s*?:\\s*?\"\\s*?header\\s*?header\\s*?\"\\s*?\"\\s*?advert\\s*?content\\s*?\"\\s*?\"\\s*?footer\\s*?footer\\s*?\"\\s*?;[\\s\\S]*}/gi), 'message: When the viewport is 400px or more, container class should have a grid-template-columns property in which the footer and header areas occupy the top and bottom rows respectively and advert and content occupy the left and right columns of the middle row.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + }, + { + "id": "5a94fe8569fb03452672e464", + "title": "Create grids within grids", + "description": [ + "Turning an element into a grid only affects the behavior of its direct descendants. So by turning a direct descendant into a grid, you have a grid within a grid.", + "For example, by setting the display and grid-template-columns properties of the element with the item3 class, you create a grid within your grid.", + "
", + "Turn the element with the item3 class into a grid with two columns with a width of auto and 1fr using display and grid-template-columns." + ], + "challengeSeed": [ + "", + " ", + "
", + "
header
", + "
advert
", + "
", + "
paragraph1
", + "
paragraph2
", + "
", + "
footer
", + "
" + ], + "tests": [ + "assert(code.match(/.item3\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?auto\\s*?1fr\\s*?;[\\s\\S]*}/gi), 'message: item3 class should have a grid-template-columns property with auto and 1fr as values.');", + "assert(code.match(/.item3\\s*?{[\\s\\S]*display\\s*?:\\s*?grid\\s*?;[\\s\\S]*}/gi), 'message: item3 class should have a display property with the value of grid.');" + ], + "solutions": [], + "hints": [], + "type": "", + "releasedOn": "", + "challengeType": 0, + "translations": {} + } + ] +} diff --git a/seed/challenges/01-responsive-web-design/responsive-web-design-projects.json b/seed/challenges/01-responsive-web-design/responsive-web-design-projects.json index 9d6c23c1589..e7f40bc06d8 100644 --- a/seed/challenges/01-responsive-web-design/responsive-web-design-projects.json +++ b/seed/challenges/01-responsive-web-design/responsive-web-design-projects.json @@ -1,6 +1,6 @@ { "name": "Applied Responsive Web Design Projects", - "order": 6, + "order": 7, "time": "150 hours", "helpRoom": "Help", "challenges": [