121 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			121 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | id: 587d781e367417b2b2512acc | |||
|  | title: 固定定位的參照物是瀏覽器的窗口 | |||
|  | challengeType: 0 | |||
|  | videoUrl: 'https://scrimba.com/c/c2MDNUR' | |||
|  | forumTopicId: 301061 | |||
|  | dashedName: lock-an-element-to-the-browser-window-with-fixed-positioning | |||
|  | --- | |||
|  | 
 | |||
|  | # --description--
 | |||
|  | 
 | |||
|  | 接下來要介紹的是 `fixed` 定位,它是一種特殊的絕對(absolute)定位,將元素相對於瀏覽器窗口定位。 類似於絕對位置,它與 CSS 偏移屬性一起使用,並且也會將元素從當前的文檔流裏面移除。 其它元素會忽略它的存在,這樣也許需要調整其他位置的佈局。 | |||
|  | 
 | |||
|  | 但 `fixed` 和 `absolute` 的最明顯的區別在於,前者定位的元素不會隨着屏幕滾動而移動。 | |||
|  | 
 | |||
|  | # --instructions--
 | |||
|  | 
 | |||
|  | 我們已經將代碼裏導航欄的 id 設置爲了 `navbar`。 請把它的 `position` 設置成 `fixed`,同時分別設定其 `top` 和 `left` 屬性值爲 0 像素。 修改後,你可以滑動預覽窗口,觀察導航欄的位置。 | |||
|  | 
 | |||
|  | # --hints--
 | |||
|  | 
 | |||
|  | `#navbar` 元素的 `position` 屬性值應爲 `fixed`。 | |||
|  | 
 | |||
|  | ```js | |||
|  | assert($('#navbar').css('position') == 'fixed'); | |||
|  | ``` | |||
|  | 
 | |||
|  | `#navbar` 元素的 `top` 屬性值應爲 0px。 | |||
|  | 
 | |||
|  | ```js | |||
|  | assert($('#navbar').css('top') == '0px'); | |||
|  | ``` | |||
|  | 
 | |||
|  | `#navbar` 元素的 `left` 屬性值應爲 0px。 | |||
|  | 
 | |||
|  | ```js | |||
|  | assert($('#navbar').css('left') == '0px'); | |||
|  | ``` | |||
|  | 
 | |||
|  | # --seed--
 | |||
|  | 
 | |||
|  | ## --seed-contents--
 | |||
|  | 
 | |||
|  | ```html | |||
|  | <style> | |||
|  |   body { | |||
|  |     min-height: 150vh; | |||
|  |   } | |||
|  |   #navbar { | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |     width: 100%; | |||
|  |     background-color: #767676; | |||
|  |   } | |||
|  |   nav ul { | |||
|  |     margin: 0px; | |||
|  |     padding: 5px 0px 5px 30px; | |||
|  |   } | |||
|  |   nav li { | |||
|  |     display: inline; | |||
|  |     margin-right: 20px; | |||
|  |   } | |||
|  |   a { | |||
|  |     text-decoration: none; | |||
|  |   } | |||
|  | </style> | |||
|  | <body> | |||
|  |   <header> | |||
|  |     <h1>Welcome!</h1> | |||
|  |     <nav id="navbar"> | |||
|  |       <ul> | |||
|  |         <li><a href="">Home</a></li> | |||
|  |         <li><a href="">Contact</a></li> | |||
|  |       </ul> | |||
|  |     </nav> | |||
|  |   </header> | |||
|  |   <p>I shift up when the #navbar is fixed to the browser window.</p> | |||
|  | </body> | |||
|  | ``` | |||
|  | 
 | |||
|  | # --solutions--
 | |||
|  | 
 | |||
|  | ```html | |||
|  | <style> | |||
|  |   body { | |||
|  |     min-height: 150vh; | |||
|  |   } | |||
|  |   #navbar { | |||
|  |     position: fixed; | |||
|  |     top: 0; | |||
|  |     left: 0; | |||
|  |     width: 100%; | |||
|  |     background-color: #767676; | |||
|  |   } | |||
|  |   nav ul { | |||
|  |     margin: 0px; | |||
|  |     padding: 5px 0px 5px 30px; | |||
|  |   } | |||
|  |   nav li { | |||
|  |     display: inline; | |||
|  |     margin-right: 20px; | |||
|  |   } | |||
|  |   a { | |||
|  |     text-decoration: none; | |||
|  |   } | |||
|  | </style> | |||
|  | <body> | |||
|  |   <header> | |||
|  |     <h1>Welcome!</h1> | |||
|  |     <nav id="navbar"> | |||
|  |       <ul> | |||
|  |         <li><a href="">Home</a></li> | |||
|  |         <li><a href="">Contact</a></li> | |||
|  |       </ul> | |||
|  |     </nav> | |||
|  |   </header> | |||
|  |   <p>I shift up when the #navbar is fixed to the browser window.</p> | |||
|  | </body> | |||
|  | ``` |