Quantcast
Channel: 黑暗執行緒
Viewing all articles
Browse latest Browse all 2311

【答客問】用CSS實現上下欄排版切換

$
0
0

網友小黑提問:

網頁配置分為上下兩欄,上欄高度固定,下欄佔滿剩餘空間。當上欄隱藏時下欄佔滿全部版面,上欄顯示時恢復原有版面配置,應如何實作?

一時技癢,順便也想測驗自己的CSS技巧,拿來當家庭作業暖暖手指。

在頁面放入兩個<div>當成上下欄容器,上欄<div class="top">指定height固定高。要讓下欄<div class="bottom">佔滿剩餘空間,可用position: absolute配合left:0; right: 0; bottom: 0;讓<div>向左、右、下方延伸佔滿空間,但記得top值需等於上欄高度保留空間。

接下來是切換上欄顯示功能。若純以jQuery實作,可用$(".top").hide(); $(".bottom").css("top", 0);隱藏,用$(".top").show(); $(".bottom").css("top", "200px");恢復顯示,也不難寫。但是仿效上回用CSS切換語系按鈕圖鈕的技巧,寫起來又更簡潔一些。透過切換<body> class="hide-top",配合
    .hide-top .top { display: none; }
    .hide-top .bottom { top: 0px; }
指定.top及.bottom於隱藏狀態的另一組設定,再用一行$("body").toggle("hide-top")就搞定囉!

程式範例如下:

<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8">
<title>上下欄CSS版面配置</title>
<style>
    body { margin: 0px; }
    .top {
      background-color: #ffccdd; height: 200px;
    }
    .bottom {
      background-color: #ccffdd; padding: 6px;
      position: absolute; left: 0px; right: 0px;bottom: 0px;
      top: 200px; 
    }
    .hide-top .top { display: none; }
    .hide-top .bottom { top: 0px; }
</style>
</head>
<body>
<divclass='top'></div>
<divclass='bottom'>
<inputtype="button"id='btn'value="Toggle Top Row"/>
</div>
<scriptsrc="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.js "></script>
<script>
    $("#btn").click(function() {
      $("body").toggleClass("hide-top");
    });
</script>
</body>
</html>

Live Demo


Viewing all articles
Browse latest Browse all 2311

Trending Articles