216 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			216 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: bad87fee1348bd9aec908845
 | |
| title: 使用 Bootstrap 响应式排列表单元素
 | |
| challengeType: 0
 | |
| forumTopicId: 18225
 | |
| required:
 | |
|   - 
 | |
|     link: >-
 | |
|       https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.css
 | |
|     raw: true
 | |
| dashedName: line-up-form-elements-responsively-with-bootstrap
 | |
| ---
 | |
| 
 | |
| # --description--
 | |
| 
 | |
| 现在把表单里的 `input` 元素和 submit `button` (提交按钮)放在同一行。 跟着之前的做法来就行:准备好一个具有 `row` class 的 `div` 元素还有几个具有 `col-xs-*` class 的 `div` 元素。
 | |
| 
 | |
| 先把表单的 text `input` (文本输入框)和 submit `button` (提交按钮)放进具有 `row` class 的 `div` 中。 再用 `col-xs-7` class 的 div 包裹表单的 text `input` (文本输入框), `col-xs-5` class 的 `div` 包裹表单的 submit `button` (提交按钮)。
 | |
| 
 | |
| 这是我们到目前为止 Cat Photo App 的最后一个挑战了。 祝你编码愉快。
 | |
| 
 | |
| # --hints--
 | |
| 
 | |
| 确保提交按钮和文本输入框都在同一个具有 class 属性 `row` 的 div 元素中。
 | |
| 
 | |
| ```js
 | |
| assert(
 | |
|   $('div.row:has(input[type="text"])').length > 0 &&
 | |
|     $('div.row:has(button[type="submit"])').length > 0
 | |
| );
 | |
| ```
 | |
| 
 | |
| 表单的文本输入框应该嵌入到 `col-xs-7` class 属性的 div 内。
 | |
| 
 | |
| ```js
 | |
| assert($('div.col-xs-7:has(input[type="text"])').length > 0);
 | |
| ```
 | |
| 
 | |
| 表单的提交按钮应该嵌入到 `col-xs-5` class 属性的 div 内。
 | |
| 
 | |
| ```js
 | |
| assert($('div.col-xs-5:has(button[type="submit"])').length > 0);
 | |
| ```
 | |
| 
 | |
| 确保每一个 `div` 元素都有一个闭合标签。
 | |
| 
 | |
| ```js
 | |
| assert(
 | |
|   code.match(/<\/div>/g) &&
 | |
|     code.match(/<div/g) &&
 | |
|     code.match(/<\/div>/g).length === code.match(/<div/g).length
 | |
| );
 | |
| ```
 | |
| 
 | |
| # --seed--
 | |
| 
 | |
| ## --seed-contents--
 | |
| 
 | |
| ```html
 | |
| <link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css">
 | |
| <style>
 | |
|   h2 {
 | |
|     font-family: Lobster, Monospace;
 | |
|   }
 | |
| 
 | |
|   .thick-green-border {
 | |
|     border-color: green;
 | |
|     border-width: 10px;
 | |
|     border-style: solid;
 | |
|     border-radius: 50%;
 | |
|   }
 | |
| 
 | |
| </style>
 | |
| 
 | |
| <div class="container-fluid">
 | |
|   <div class="row">
 | |
|     <div class="col-xs-8">
 | |
|       <h2 class="text-primary text-center">CatPhotoApp</h2>
 | |
|     </div>
 | |
|     <div class="col-xs-4">
 | |
|       <a href="#"><img class="img-responsive thick-green-border" src="https://bit.ly/fcc-relaxing-cat" alt="A cute orange cat lying on its back."></a>
 | |
|     </div>
 | |
|   </div>
 | |
|   <img src="https://bit.ly/fcc-running-cats" class="img-responsive" alt="Three kittens running towards the camera.">
 | |
|   <div class="row">
 | |
|     <div class="col-xs-4">
 | |
|       <button class="btn btn-block btn-primary"><i class="fa fa-thumbs-up"></i> Like</button>
 | |
|     </div>
 | |
|     <div class="col-xs-4">
 | |
|       <button class="btn btn-block btn-info"><i class="fa fa-info-circle"></i> Info</button>
 | |
|     </div>
 | |
|     <div class="col-xs-4">
 | |
|       <button class="btn btn-block btn-danger"><i class="fa fa-trash"></i> Delete</button>
 | |
|     </div>
 | |
|   </div>
 | |
|   <p>Things cats <span class="text-danger">love:</span></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="https://freecatphotoapp.com/submit-cat-photo">
 | |
|     <div class="row">
 | |
|       <div class="col-xs-6">
 | |
|         <label><input type="radio" name="indoor-outdoor"> Indoor</label>
 | |
|       </div>
 | |
|       <div class="col-xs-6">
 | |
|         <label><input type="radio" name="indoor-outdoor"> Outdoor</label>
 | |
|       </div>
 | |
|     </div>
 | |
|     <div class="row">
 | |
|       <div class="col-xs-4">
 | |
|         <label><input type="checkbox" name="personality"> Loving</label>
 | |
|       </div>
 | |
|       <div class="col-xs-4">
 | |
|         <label><input type="checkbox" name="personality"> Lazy</label>
 | |
|       </div>
 | |
|       <div class="col-xs-4">
 | |
|         <label><input type="checkbox" name="personality"> Crazy</label>
 | |
|       </div>
 | |
|     </div>
 | |
|     <input type="text" class="form-control" placeholder="cat photo URL" required>
 | |
|     <button type="submit" class="btn btn-primary"><i class="fa fa-paper-plane"></i> Submit</button>
 | |
|   </form>
 | |
| </div>
 | |
| ```
 | |
| 
 | |
| # --solutions--
 | |
| 
 | |
| ```html
 | |
| <link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css">
 | |
| <style>
 | |
|   h2 {
 | |
|     font-family: Lobster, Monospace;
 | |
|   }
 | |
| 
 | |
|   .thick-green-border {
 | |
|     border-color: green;
 | |
|     border-width: 10px;
 | |
|     border-style: solid;
 | |
|     border-radius: 50%;
 | |
|   }
 | |
| 
 | |
| </style>
 | |
| 
 | |
| <div class="container-fluid">
 | |
|   <div class="row">
 | |
|     <div class="col-xs-8">
 | |
|       <h2 class="text-primary text-center">CatPhotoApp</h2>
 | |
|     </div>
 | |
|     <div class="col-xs-4">
 | |
|       <a href="#"><img class="img-responsive thick-green-border" src="https://bit.ly/fcc-relaxing-cat" alt="A cute orange cat lying on its back."></a>
 | |
|     </div>
 | |
|   </div>
 | |
|   <img src="https://bit.ly/fcc-running-cats" class="img-responsive" alt="Three kittens running towards the camera.">
 | |
|   <div class="row">
 | |
|     <div class="col-xs-4">
 | |
|       <button class="btn btn-block btn-primary"><i class="fa fa-thumbs-up"></i> Like</button>
 | |
|     </div>
 | |
|     <div class="col-xs-4">
 | |
|       <button class="btn btn-block btn-info"><i class="fa fa-info-circle"></i> Info</button>
 | |
|     </div>
 | |
|     <div class="col-xs-4">
 | |
|       <button class="btn btn-block btn-danger"><i class="fa fa-trash"></i> Delete</button>
 | |
|     </div>
 | |
|   </div>
 | |
|   <p>Things cats <span class="text-danger">love:</span></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="https://freecatphotoapp.com/submit-cat-photo">
 | |
|     <div class="row">
 | |
|       <div class="col-xs-6">
 | |
|         <label><input type="radio" name="indoor-outdoor"> Indoor</label>
 | |
|       </div>
 | |
|       <div class="col-xs-6">
 | |
|         <label><input type="radio" name="indoor-outdoor"> Outdoor</label>
 | |
|       </div>
 | |
|     </div>
 | |
|     <div class="row">
 | |
|       <div class="col-xs-4">
 | |
|         <label><input type="checkbox" name="personality"> Loving</label>
 | |
|       </div>
 | |
|       <div class="col-xs-4">
 | |
|         <label><input type="checkbox" name="personality"> Lazy</label>
 | |
|       </div>
 | |
|       <div class="col-xs-4">
 | |
|         <label><input type="checkbox" name="personality"> Crazy</label>
 | |
|       </div>
 | |
|     </div>
 | |
|     <div class="row">
 | |
|       <div class="col-xs-7">
 | |
|         <input type="text" class="form-control" placeholder="cat photo URL" required>
 | |
|       </div>
 | |
|       <div class="col-xs-5">
 | |
|         <button type="submit" class="btn btn-primary"><i class="fa fa-paper-plane"></i> Submit</button>
 | |
|       </div>
 | |
|     </div>
 | |
|   </form>
 | |
| </div>
 | |
| ```
 |