/g).length, 'Make sure each of your
div elements has a closing tag.')"
],
"challengeSeed": [
"
",
"",
"",
"
CatPhotoApp ",
"",
"
Click here for cat photos .
",
"",
"
",
"",
"
",
"
Like ",
"
Info ",
"
Delete ",
"
Things cats love:
",
"
",
" cat nip ",
" laser pointers ",
" lasagna ",
" ",
"
Top 3 things cats hate:
",
"
",
" flea treatment ",
" thunder ",
" other cats ",
" ",
"
"
],
"challengeType": 0,
"nameCn": "",
"descriptionCn": [],
"nameFr": "",
"descriptionFr": [],
"nameRu": "",
"descriptionRu": [],
"nameEs": "",
"descriptionEs": [],
"namePt": "",
"descriptionPt": []
},
{
"_id": "bad87fee1348bd9aedf08845",
"name": "Waypoint: Ditch Custom CSS for Bootstrap",
"difficulty": 0.055,
"description": [
"Delete the \".red-text\", \"p\", and \".smaller-image\" CSS declarations from your
style element. Then Delete the
p element that contains a dead link. Then remove the \"red-text\" class from your
h2 element and replace it with the \"text-primary\" Bootstrap class. Finally, remove the \"smaller-image\" class from your first
img element and replace it with the
img-responsive class.",
"We can clean up our code and make our Cat Photo App look more conventional by using Bootstrap's built-in styles instead of the custom styles we created earlier.",
"Don't worry - there will be plenty of time to customize our CSS later."
],
"tests": [
"assert(!$('h2').hasClass('red-text'), 'You h2 element should no longer have the class \"red-text\".')",
"assert($('h2').hasClass('text-primary'), 'You h2 element should now have the class \"text-primary\".')",
"assert(!$('p').css('font-family').match(/monospace/i), 'Your paragraph elements should no longer use the font \"Monospace\".')",
"assert($('img').hasClass('img-responsive') && !$('img').hasClass('smaller-image'), 'Remove the \"smaller-image\" class from your top image and replace it with the \"img-responsive\" class.')"
],
"challengeSeed": [
"
",
"",
"",
"
CatPhotoApp ",
"",
"
Click here for cat photos .
",
"",
"
",
"",
"
",
"
",
"
",
"
",
" Like ",
"
",
"
",
" Info ",
"
",
"
",
" Delete ",
"
",
"
",
"
Things cats love:
",
"
",
" cat nip ",
" laser pointers ",
" lasagna ",
" ",
"
Top 3 things cats hate:
",
"
",
" flea treatment ",
" thunder ",
" other cats ",
" ",
"
"
],
"challengeType": 0,
"nameCn": "",
"descriptionCn": [],
"nameFr": "",
"descriptionFr": [],
"nameRu": "",
"descriptionRu": [],
"nameEs": "",
"descriptionEs": [],
"namePt": "",
"descriptionPt": []
},
{
"_id": "bad87fee1348bd9aede08845",
"name": "Waypoint: Create a Custom Heading",
"difficulty": 0.056,
"description": [
"Wrap your first image and your
h2 element within a single
<div class='row'> element. Wrap your
h2 text within a
<div class='col-xs-8'> and your image in a
<div class='col-xs-4'> so that they are on the same line.",
"We will make a simple heading for our Cat Photo App by putting them in the same row.",
"Remember, Bootstrap uses a responsive grid system, which makes it easy to put elements into rows and specify each element's relative width. Most of Bootstrap's classes can be applied to a
div element.",
"Here's a diagram of how Bootstrap's 12-column grid layout works:",
"
",
"Note that in this illustration, we use the \"col-md-*\" class. Here, \"md\" means \"medium\", and \"*\" is a number specifying how many columns wide the element should be. In this case, we're specifying how many columns wide an element should be on a medium-sized screen, such as a laptop.",
"In the Cat Photo App that we're building, we'll use \"col-xs-*\", where \"*\" is the number of columns wide the element should be, and \"xs\" means \"extra small\", like an extra-small mobile phone screen.",
"Notice how the image is now just the right size to fit along the text?"
],
"tests": [
"assert($('div.row:has(h2)').length > 0 && $('div.row:has(img)').length > 0, 'Your
h2 element and topmost
img element should both be wrapped together within a
div element with the class \"row\".')",
"assert($('div.col-xs-4:has(img)').length > 0, 'Wrap your topmost
img element within a
div with the class \"col-xs-4\".')",
"assert($('div.col-xs-8:has(h2)').length > 0, 'Wrap your
h2 element within a
div with the class \"col-xs-8\".')",
"assert(editor.match(/<\\/div>/g) && editor.match(/<\\/div>/g).length === editor.match(/
/g).length, 'Make sure each of your
div elements has a closing tag.')"
],
"challengeSeed": [
"
",
"",
"",
"",
"
CatPhotoApp ",
"",
"
",
"",
"
",
"
",
"
",
"
",
" Like ",
"
",
"
",
" Info ",
"
",
"
",
" Delete ",
"
",
"
",
"
Things cats love:
",
"
",
" cat nip ",
" laser pointers ",
" lasagna ",
" ",
"
Top 3 things cats hate:
",
"
",
" flea treatment ",
" thunder ",
" other cats ",
" ",
"
"
],
"challengeType": 0,
"nameCn": "",
"descriptionCn": [],
"nameFr": "",
"descriptionFr": [],
"nameRu": "",
"descriptionRu": [],
"nameEs": "",
"descriptionEs": [],
"namePt": "",
"descriptionPt": []
},
{
"_id": "bad87fee1348bd9aedd08845",
"name": "Waypoint: Add Font Awesome Icons to our Buttons",
"difficulty": 0.057,
"description": [
"Use Font Awesome to add a \"like\" icon to your like button.",
"Font Awesome is a convenient library of icons. These icons are vector graphics, stored in the \".svg\" file format. These icons are treated just like fonts. You can specify their size using pixels, and they will assume the font size of their parent HTML elements.",
"Go ahead and add a
<i class=\"fa fa-thumbs-up\"></i> within your like button's element."
],
"tests": [
"assert($('i').hasClass('fa fa-thumbs-up'), 'Add an
i element with the classes \"fa\" and \"fa-thumbs-up\".')",
"assert($('button').children('i').length > 0, 'Wrap your
i element within your
button element.')",
"assert(editor.match(/<\\/i>/g), 'Be sure to close your
i element with a closing tag.')",
"assert(editor.match(/<\\/i>/g) && editor.match(/<\\/i/g).length === editor.match(/
/g).length, 'Make sure your i element has a closing tag.')"
],
"challengeSeed": [
" ",
"",
"",
"",
"
",
"
CatPhotoApp ",
" ",
"
",
"
",
"
",
"
",
" ",
" ",
" ",
"",
"
",
" Like ",
"
",
"
",
" Info ",
"
",
"
",
" Delete ",
"
",
"
",
" Things cats love:
",
"
",
" cat nip ",
" laser pointers ",
" lasagna ",
" ",
"
Top 3 things cats hate:
",
"
",
" flea treatment ",
" thunder ",
" other cats ",
" ",
"
"
],
"challengeType": 0,
"nameCn": "",
"descriptionCn": [],
"nameFr": "",
"descriptionFr": [],
"nameRu": "",
"descriptionRu": [],
"nameEs": "",
"descriptionEs": [],
"namePt": "",
"descriptionPt": []
},
{
"_id": "bad87fee1348bd9aedc08845",
"name": "Waypoint: Add Font Awesome Icons all of our Buttons",
"difficulty": 0.058,
"description": [
"Use Font Awesome to add a \"info-circle\" icon to your info button and a \"trash\" icon to your delete button.",
"Font Awesome is a convenient library of icons. These icons are vector graphics, stored in the \".svg\" file format. These icons are treated just like fonts. You can specify their size using pixels, and they will assume the font size of their parent HTML elements.",
"Add
<i class=\"fa fa-info-circle\"></i> within your info button's element, and a
<i class=\"fa fa-trash\"></i> within your delete button."
],
"tests": [
"assert($('i').hasClass('fa fa-trash'), 'You should add a
<i class=\"fa fa-trash\"></i> within your delete button element.')",
"assert($('i').hasClass('fa fa-info-circle'), 'You should add a
<i class=\"fa fa-info-circle\"></i> within your info button element.')",
"assert(editor.match(/<\\/i>/g) && editor.match(/<\\/i/g).length === editor.match(/
/g).length, 'Make sure each of your i elements has a closing tag.')"
],
"challengeSeed": [
" ",
"",
"",
"",
"
",
"
CatPhotoApp ",
" ",
"
",
"
",
"
",
"
",
" ",
" ",
" ",
"",
"
",
" Like ",
"
",
"
",
" Info ",
"
",
"
",
" Delete ",
"
",
"
",
" Things cats love:
",
"
",
" cat nip ",
" laser pointers ",
" lasagna ",
" ",
"
Top 3 things cats hate:
",
"
",
" flea treatment ",
" thunder ",
" other cats ",
" ",
"
"
],
"challengeType": 0,
"nameCn": "",
"descriptionCn": [],
"nameFr": "",
"descriptionFr": [],
"nameRu": "",
"descriptionRu": [],
"nameEs": "",
"descriptionEs": [],
"namePt": "",
"descriptionPt": []
},
{
"_id": "bad87fee1348bd9aedb08845",
"name": "Waypoint: Responsively Style Radio Buttons",
"difficulty": 0.059,
"description": [
"Wrap all of your radio buttons within a
<div class='row'> element. Then wrap each of them within a
<div class='col-xs-6'> element.",
"You can use Bootstrap's \"col-xs-*\" classes on
form elements, too! This way, our radio buttons will be evenly spread out across the page, regardless of how wide the screen resolution is."
],
"tests": [
"assert($('div.row:has(input[type=\\'radio\\'])').length > 0, 'Wrap all of your radio buttons inside one
div with the class \"row\".')",
"assert($('div.col-xs-6:has(input[type=\\'radio\\'])').length > 1, 'Wrap each of your radio buttons inside its own
div with the class \"col-xs-6\".')",
"assert(editor.match(/<\\/div>/g) && editor.match(/<\\/div>/g).length === editor.match(/
/g).length, 'Make sure each of your
div elements has a closing tag.')"
],
"challengeSeed": [
"
",
"",
"",
"
",
"
",
"
CatPhotoApp ",
" ",
"
",
"
",
"
",
"
",
"
",
"
",
"
",
"
",
"
",
" Like ",
"
",
"
",
" Info ",
"
",
"
",
" Delete ",
"
",
"
",
"
Things cats love:
",
"
",
" cat nip ",
" laser pointers ",
" lasagna ",
" ",
"
Top 3 things cats hate:
",
"
",
" flea treatment ",
" thunder ",
" other cats ",
" ",
"
"
],
"challengeType": 0,
"nameCn": "",
"descriptionCn": [],
"nameFr": "",
"descriptionFr": [],
"nameRu": "",
"descriptionRu": [],
"nameEs": "",
"descriptionEs": [],
"namePt": "",
"descriptionPt": []
},
{
"_id": "bad87fee1348bd9aeda08845",
"name": "Waypoint: Responsively Style Checkboxes",
"difficulty": 0.060,
"description": [
"Wrap all your checkboxes in a
<div class='row'> element. Then wrap each of them in a
<div class='col-xs-4'> element.",
"You can use Bootstrap's \"col-xs-*\" classes on
form elements, too! This way, our checkboxes will be evenly spread out across the page, regardless of how wide the screen resolution is."
],
"tests": [
"assert($('div.row:has(input[type=\\'checkbox\\'])').length > 0, 'Wrap all of your checkboxes inside one
div with the class \"row\".')",
"assert($('div.col-xs-4:has(input[type=\\'checkbox\\'])').length > 2, 'Wrap each of your checkboxes inside its own
div with the class \"col-xs-4\".')",
"assert(editor.match(/<\\/div>/g) && editor.match(/<\\/div>/g).length === editor.match(/
/g).length, 'Make sure each of your
div elements has a closing tag.')"
],
"challengeSeed": [
"
",
"",
"",
"
",
"
",
"
CatPhotoApp ",
" ",
"
",
"
",
"
",
"
",
"
",
"
",
"
",
"
",
"
",
" Like ",
"
",
"
",
" Info ",
"
",
"
",
" Delete ",
"
",
"
",
"
Things cats love:
",
"
",
" cat nip ",
" laser pointers ",
" lasagna ",
" ",
"
Top 3 things cats hate:
",
"
",
" flea treatment ",
" thunder ",
" other cats ",
" ",
"
"
],
"challengeType": 0,
"nameCn": "",
"descriptionCn": [],
"nameFr": "",
"descriptionFr": [],
"nameRu": "",
"descriptionRu": [],
"nameEs": "",
"descriptionEs": [],
"namePt": "",
"descriptionPt": []
},
{
"_id": "bad87fee1348bd9aed908845",
"name": "Waypoint: Style Text Inputs as Form Controls",
"difficulty": 0.061,
"description": [
"Give your form's text input field a class of \"form-control\". Give your form's submit button the classes \"btn btn-primary\". Also give this button the Font Awesome icon of \"fa-paper-plane\".",
"You can add the \"fa-paper-plane\" Font Awesome icon by adding
<i class=\"fa fa-paper-plane\"></i> within your submit
button element."
],
"tests": [
"assert($('button[type=\\'submit\\']').hasClass('btn btn-primary'), 'Give the submit button in your form the classes \"btn btn-primary\".')",
"assert($('button[type=\\'submit\\']:has(i.fa.fa-paper-plane)').length > 0, 'Add a
<i class=\"fa fa-paper-plane\"></i> within your submit
button element.')",
"assert($('input[type=\\'text\\']').hasClass('form-control'), 'Give the text
input in your form the class \"form-control\".')",
"assert(editor.match(/<\\/i>/g) && editor.match(/<\\/i/g).length === editor.match(//g).length, 'Make sure each of your i elements has a closing tag.')"
],
"challengeSeed": [
" ",
"",
"",
"",
"
",
"
CatPhotoApp ",
" ",
"
",
"
",
"
",
"
",
" ",
" ",
" ",
"",
"
",
" Like ",
"
",
"
",
" Info ",
"
",
"
",
" Delete ",
"
",
"
",
" Things cats love:
",
"",
" cat nip ",
" laser pointers ",
" lasagna ",
" ",
"Top 3 things cats hate:
",
"",
" flea treatment ",
" thunder ",
" other cats ",
" ",
""
],
"challengeType": 0,
"nameCn": "",
"descriptionCn": [],
"nameFr": "",
"descriptionFr": [],
"nameRu": "",
"descriptionRu": [],
"nameEs": "",
"descriptionEs": [],
"namePt": "",
"descriptionPt": []
},
{
"_id": "bad87fee1348bd9aec908845",
"name": "Waypoint: Line up Form Elements Responsively with Bootstrap",
"difficulty": 0.062,
"description": [
"Now let's get your form input and your submission button on the same line. We'll do this the same way we have previously: by using a div element with the class \"row\", and other div elements within it using the \"col-xs-*\" class.",
"Wrap both your form's text input and submit button within a div with the class \"row\". Wrap your form's text input within a div with the class of \"col-xs-7\". Wrap your form's submit button in a div with the class \"col-xs-5\".",
"This is the last challenge we'll do for our Cat Photo App for now. We hope you've enjoyed learning Font Awesome, Bootstrap, and responsive design!"
],
"tests": [
"assert($('div.row:has(input[type=\\'text\\'])').length > 0 && $('div.row:has(button[type=\\'submit\\'])').length > 0, 'Wrap your form submission button and text area in a div with class \"row\".')",
"assert($('div.col-xs-5:has(button[type=\\'submit\\'])').length > 0, 'Wrap your form submission button in a div with the class \"col-xs-5\".')",
"assert($('div.col-xs-7:has(input[type=\\'text\\'])').length > 0, 'Wrap your form text area in a div with the class \"col-xs-7\".')",
"assert(editor.match(/<\\/div>/g) && editor.match(/<\\/div>/g).length === editor.match(//g).length, 'Make sure each of your
div elements has a closing tag.')"
],
"challengeSeed": [
"
",
"",
"",
"
",
"
",
"
CatPhotoApp ",
" ",
"
",
"
",
"
",
"
",
"
",
"
",
"
",
"
",
"
",
" Like ",
"
",
"
",
" Info ",
"
",
"
",
" Delete ",
"
",
"
",
"
Things cats love:
",
"
",
" cat nip ",
" laser pointers ",
" lasagna ",
" ",
"
Top 3 things cats hate:
",
"
",
" flea treatment ",
" thunder ",
" other cats ",
" ",
"
"
],
"challengeType": 0,
"nameCn": "",
"descriptionCn": [],
"nameFr": "",
"descriptionFr": [],
"nameRu": "",
"descriptionRu": [],
"nameEs": "",
"descriptionEs": [],
"namePt": "",
"descriptionPt": []
}
]
}