216 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			216 lines
		
	
	
		
			6.6 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://cdn.freecodecamp.org/curriculum/cat-photo-app/relaxing-cat.jpg" alt="A cute orange cat lying on its back."></a>
 | |
|     </div>
 | |
|   </div>
 | |
|   <img src="https://cdn.freecodecamp.org/curriculum/cat-photo-app/running-cats.jpg" 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://cdn.freecodecamp.org/curriculum/cat-photo-app/relaxing-cat.jpg" alt="A cute orange cat lying on its back."></a>
 | |
|     </div>
 | |
|   </div>
 | |
|   <img src="https://cdn.freecodecamp.org/curriculum/cat-photo-app/running-cats.jpg" 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>
 | |
| ```
 |