Pages

系列文章

2014/10/23

將DIV區塊固定在畫面某一處


常常有人在問我說要怎麼做出讓區塊固定在畫面上的右側
而且不會因為畫面項下捲動而區塊就消失
今天~~就是要來介紹這種方法
這個方式非常的簡單利用CSS就可以達成
但是請注意!!如果是IE瀏覽器要IE8+以上才可以正常使用唷~!
首先我們先建立一個DIV tag並設定其class名稱為「fix」
<div class="fix">123</div>

緊接著我們就要開始設定CSS的部分了
body{
  height:5000px;
  background:#FF0;
}
.fix{
  width:60px;
  height:60px;
  border:1px solid #000;
  position:fixed;
  top:50px;
  right:0px;
  background:#F00;
}

上述CSS CODE中我們為了方便讓大家看的明顯一點
所以另外替Body設定了一點點樣式
將body的高度設定為5000px是為了讓畫面出現下拉卷軸
被景色設不設定都沒差,這邊設定只是讓大家可以看到它的Z軸呈現

接著就要設定DIV區塊的樣式了
首先我們位fix定義寬高這樣才能讓區塊顯示在畫面上(否則區塊大小只會剛好符合文字123的寬高)
緊接著設定border邊界讓區塊看起來更明顯一點
再來用CSS的position屬性將區塊位置設定為fixed(固定)
然後設定區塊距離畫面頂端的距離跟右側的距離
如果要讓區塊固定在左側拿掉right:0px;這個屬性即可
最後被景色看各位要不要設定都可以

看起來很麻煩的東西透過CSS也可以輕鬆解決,不過若是有IE8以下的用戶就需要用JQuery或是JS來另外處理了
Dome

See the Pen 將區塊固定在畫面某一處 by jen (@jen_huang) on CodePen.


3 則留言:

  1. 可以請教為什麼div與外圍距離不是使用margin嗎?

    回覆刪除
    回覆
    1. 不好意思 現在才看到你的問題
      其實這主要是因為我有使用position:fixed;
      這個屬性的關係
      fixed是將DIV區塊設為固定位置
      所以如果使用margin基本上是會無效的
      當然這還要看實際的HTML架構才準
      宣告為fixed後會將DIV的層級拉到最外層(不管原本是寫在哪)
      也就是跳脫出原本的HTML框架
      所以距離是依據瀏覽器去計算而不是在以父元素去計算
      所以才需要用到Top跟right這種屬性

      另外還有margin的性質問題
      margin計算距離的方式是根據父元素去計算的
      所以如果結構複雜的話margin的位置計算是容易會產生誤差的

      這個範例只是一個單純的寫法
      真正使用時還需要評估實際狀況才行唷

      刪除
    2. 謝謝你,這樣我理解了

      解說的非常詳細
      還是要看實際狀況來選擇要應用的屬性^^

      刪除