iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 6
0
Modern Web

勇者Jason和前端之鑰系列 第 6

【DAY6】將想要顯示的區域定位到版面上(一)position

  • 分享至 

  • xImage
  •  

當我們把裡面的資料填上,
將進入還記得第一次進入body寫的是hello world,
但是這次,我們可以開始模仿一些網站的樣式,這叫做切版

那些太艱深的網頁我們可以先不用管,
先找一個簡單的版型來切吧!
我們只需要切出樣子,把那些功能什麼的都先放一邊吧!

html裡面的各種element,
如果沒有給予他特別的位置,會依照左到右,上到下去排列。
因此沒有給予位置,有可能會造成版型破裂,稱為跑版、破版

而定位的方法有很多種,
就讓我來一一介紹吧!

position

position有四種常用的屬性
-static
-relative
-absolute
-fixed

首先我們先開啟一個index.html,
在css資料夾中則有一個style.css,

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>test</title>
    <link rel="stylesheet" href="css/style2.css">
</head>
<body>
       <div class="site-header">9527</div>
</body>
</html>

style.css

body{
    background-color:#999999;
}
.site-header{
    background-color:#5f5f5f;
}

以上我們都設定好了
在Goolechrome打開時會是這樣
https://ithelp.ithome.com.tw/upload/images/20171225/20107705WFT1gftDxH.png
接下來,就來玩看看吧!

##static(預設值)

這個屬性代表的是預設值,不過既然是預設值,所以我們不需要寫。


.site-header{
    background-color:#5f5f5f;
    position:static;
}

顯示結果沒有變化。

relative (相對位置)

.site-header{
    background-color:#5f5f5f;
    position:relative;
}

顯示結果依然沒有變化,不過其實是不一樣的。
當設定relative的時候就可以支援top、bottom、left、right等屬性。

此時我們加入

.site-header{
    background-color:#5f5f5f;
    position:relative;
    top:50px;
    left:50px;
}

就會變成這樣
https://ithelp.ithome.com.tw/upload/images/20171225/20107705zSO3MqiEhB.png

表示我們的header距離上方50px,左方50px。
這時將relative改回static時,位移消失,
這是因為這些屬性在position:static是不支援的。

absolute (絕對定位)

absolute並不會佔有同層元素的空間,而是被獨立出來。
這樣講一定很抽象吧,讓咱們上圖!
首先用先前教的shift+alt+a將9527註解。(即不會顯示)
再加入三個div如下:

index.html

<body> 
     <!-- <div class="site-header">9527</div>   -->
     <div class="red">9527</div>
     <div class="green">9528</div>
     <div class="blue">9529</div>                       
</body>

style.css

.red{
    background-color: red;
}

.green{
    background-color: green;
}

.blue{
    background-color: blue;
}

就會顯示如下圖
https://ithelp.ithome.com.tw/upload/images/20171225/20107705unomkgV49p.png

這時我們在.green加入positon:absolute;

會發現綠色獨立出來了
9529(藍色)跑到綠色的下面,所以9528消失,
但是為何綠色變短了呢?
這是因為absolute如果沒有設定上下左右的距離,
預設是auto,就會自動找元素的邊界。
因此,後面的藍色會顯示出來。
有興趣的人可以在index.html的9529後面加0000,
就會發現藍色部分多出了0000,而9529依然被擋住。

https://ithelp.ithome.com.tw/upload/images/20171225/20107705iO5Hyfh3Xb.png

如果將.red跟.blue也加入positon:absolute;
同時將index.html內的9527改為99、9528改為999、9529改為9999,
則會發現,藍色壓著綠色壓著紅色。
這是因為寫在越後面的element會排列在越上面的緣故。

fixed (固定定位)

fixed跟absolute擁有一樣的特性,但是他是以瀏覽器介面來定位。
也就是說被fixed的元素不會因為網頁的捲動而改變位置。

首先在index.html,我們將剛剛的.red、.green和.blue刪掉,並將9527給放出來。(取消註解)
接著在style.css中把.red、.green和.blue刪掉。
並改成position:fixed;
同時修改index.html如下。

index.html

<body> 
       <div class="site-header">9527</div> 
       <div class="container">123</div>        
</body>

style.css

.site-header{
    background-color:#5f5f5f;
    position: fixed;
}
.container{
    background-color: blue;
    height:3000px;
}

這時會發現,無論怎麼捲動,
9527永遠存在左上角,這就是fixed的功用了。

抱歉圖傳的有點小,
因為之前傳整張的,只能傳一張,之後就會卡住了。
傳小一點可以傳很多張


上一篇
【Day5】用CSS為網頁穿上新衣!
下一篇
【DAY7】將想要顯示的區域定位到版面上(二)float
系列文
勇者Jason和前端之鑰32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言