121 lines
4.6 KiB
Markdown
121 lines
4.6 KiB
Markdown
---
|
|
id: bad88fee1348ce8acef08815
|
|
title: Use the Bootstrap Grid to Put Elements Side By Side
|
|
challengeType: 0
|
|
---
|
|
|
|
## Description
|
|
<section id='description'>
|
|
Bootstrap uses a responsive 12-column 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 <code>div</code> element.
|
|
Bootstrap has different column width attributes that it uses depending on how wide the user's screen is. For example, phones have narrow screens, and laptops have wider screens.
|
|
Take for example Bootstrap's <code>col-md-*</code> class. Here, <code>md</code> means medium, and <code>*</code> is a number specifying how many columns wide the element should be. In this case, the column width of an element on a medium-sized screen, such as a laptop, is being specified.
|
|
In the Cat Photo App that we're building, we'll use <code>col-xs-*</code>, where <code>xs</code> means extra small (like an extra-small mobile phone screen), and <code>*</code> is the number of columns specifying how many columns wide the element should be.
|
|
Put the <code>Like</code>, <code>Info</code> and <code>Delete</code> buttons side-by-side by nesting all three of them within one <code><div class="row"></code> element, then each of them within a <code><div class="col-xs-4"></code> element.
|
|
The <code>row</code> class is applied to a <code>div</code>, and the buttons themselves can be nested within it.
|
|
</section>
|
|
|
|
## Instructions
|
|
<section id='instructions'>
|
|
|
|
</section>
|
|
|
|
## Tests
|
|
<section id='tests'>
|
|
|
|
```yml
|
|
tests:
|
|
- text: Your buttons should all be nested within the same <code>div</code> element with the class <code>row</code>.
|
|
testString: assert($("div.row:has(button)").length > 0, 'Your buttons should all be nested within the same <code>div</code> element with the class <code>row</code>.');
|
|
- text: Each of your Bootstrap buttons should be nested within its own <code>div</code> element with the class <code>col-xs-4</code>.
|
|
testString: assert($("div.col-xs-4:has(button)").length > 2, 'Each of your Bootstrap buttons should be nested within its own <code>div</code> element with the class <code>col-xs-4</code>.');
|
|
- text: Make sure each of your <code>button</code> elements has a closing tag.
|
|
testString: assert(code.match(/<\/button>/g) && code.match(/<button/g) && code.match(/<\/button>/g).length === code.match(/<button/g).length, 'Make sure each of your <code>button</code> elements has a closing tag.');
|
|
- text: Make sure each of your <code>div</code> elements has a closing tag.
|
|
testString: assert(code.match(/<\/div>/g) && code.match(/<div/g) && code.match(/<\/div>/g).length === code.match(/<div/g).length, 'Make sure each of your <code>div</code> elements has a closing tag.');
|
|
|
|
```
|
|
|
|
</section>
|
|
|
|
## Challenge Seed
|
|
<section id='challengeSeed'>
|
|
|
|
<div id='html-seed'>
|
|
|
|
```html
|
|
<link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css">
|
|
<style>
|
|
.red-text {
|
|
color: red;
|
|
}
|
|
|
|
h2 {
|
|
font-family: Lobster, Monospace;
|
|
}
|
|
|
|
p {
|
|
font-size: 16px;
|
|
font-family: Monospace;
|
|
}
|
|
|
|
.thick-green-border {
|
|
border-color: green;
|
|
border-width: 10px;
|
|
border-style: solid;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.smaller-image {
|
|
width: 100px;
|
|
}
|
|
</style>
|
|
|
|
<div class="container-fluid">
|
|
<h2 class="red-text text-center">CatPhotoApp</h2>
|
|
|
|
<p>Click here for <a href="#">cat photos</a>.</p>
|
|
|
|
<a href="#"><img class="smaller-image thick-green-border" src="https://bit.ly/fcc-relaxing-cat" alt="A cute orange cat lying on its back."></a>
|
|
|
|
<img src="https://bit.ly/fcc-running-cats" class="img-responsive" alt="Three kittens running towards the camera.">
|
|
<button class="btn btn-block btn-primary">Like</button>
|
|
<button class="btn btn-block btn-info">Info</button>
|
|
<button class="btn btn-block btn-danger">Delete</button>
|
|
<p>Things cats love:</p>
|
|
<ul>
|
|
<li>cat nip</li>
|
|
<li>laser pointers</li>
|
|
<li>lasagna</li>
|
|
</ul>
|
|
<p>Top 3 things cats hate:</p>
|
|
<ol>
|
|
<li>flea treatment</li>
|
|
<li>thunder</li>
|
|
<li>other cats</li>
|
|
</ol>
|
|
<form action="/submit-cat-photo">
|
|
<label><input type="radio" name="indoor-outdoor"> Indoor</label>
|
|
<label><input type="radio" name="indoor-outdoor"> Outdoor</label>
|
|
<label><input type="checkbox" name="personality"> Loving</label>
|
|
<label><input type="checkbox" name="personality"> Lazy</label>
|
|
<label><input type="checkbox" name="personality"> Crazy</label>
|
|
<input type="text" placeholder="cat photo URL" required>
|
|
<button type="submit">Submit</button>
|
|
</form>
|
|
</div>
|
|
```
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</section>
|
|
|
|
## Solution
|
|
<section id='solution'>
|
|
|
|
```js
|
|
// solution required
|
|
```
|
|
</section>
|