我在一本 jQuery UI 的舊書 (2014) "jQuery 應用程式設計極速上手" (Jay Blanchard, 上奇), 此書原文版書名為 "Applied jQuery : develop and design". 在最後一章作者提出的一個 jQuery UI 為基礎的 Web App 架構, 它是一個單頁應用程式 (Single Page Application, SPA), 版面結構如下 :
上面的主導覽區作者使用精靈動畫 (sprite) 來製作圖片超連結; 次導覽區使用手風琴 (accordion, 摺疊選單), 右側則是透過 Ajax 方式載入之內容區.
作者曾為此書設立如下網站以便讀者可下載範例程式碼, 但現在已經關站了 :
# http://www.appliedjquery.com (無法連接)
於是我只好照書本內容逐一拼湊出原始程式樣貌 (但沒有處理上方主導覽區的精靈動畫, 因為我覺得有點複雜), 紀錄如下 :
測試 1 : jQuery UI 單頁應用程式 [看原始碼]
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<meta http-equiv="cache-control" content="no-cache">
<meta name="viewport" content="width=device-width,initial-scale=1">
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link href="https://code.jquery.com/ui/1.12.1/themes/hot-sneaks/jquery-ui.css" rel="stylesheet">
<style>
body {font-family: Arial, Helvetica, sans-serif;
height: 100%;
margin: 0px auto;
overflow-x: auto !important;
overflow-y: hidden !important
}
.ui-widget {font-size:80%;}
#mainNavBar {height: 75px;
padding: 0px 0px 0px 25px;
}
#content1 {width: 20%;
height: 80%;
background-color: transparent;
vertical-align: bottom;
float: left;
margin: 5px 5px 0px 10px;
position: relative;
bottom: 0px;
}
#contentArea1 {position: relative;
padding: 10px;
}
#content2 {width: 77%;
height: 80%;
background-color: transparent;
vertical-align: top;
float: left;
margin: 5px 5px 0px 0px;
position: relative;
}
#contentArea2 {position: relative;
padding: 10px;
overflow: auto;
}
#footer {width: 99%;
height: 75px;
position: absolute;
bottom: 0px;
margin: 5px 5px 0px 5px;
}
#mainNavBar, content1, #content2, #footer {
border: 1px dashed #ffff00;
}
#contentArea1, #contentArea2 {
border: 1px dashed #00ff00;
}
</style>
</head>
<body>
<!--上方主導覽列-->
<div id="mainNavBar">
</div>
<!--左方次導覽列-->
<div id="content1">
<div id="contentArea1">
<div id="accordion">
<h2><a href="#">第 1 列標題</a></h2>
<div>
<ul style="padding: 0px; margin: 0px;">
<li><a href="http://www.google.com.tw">Google</a></li>
<li><a href="http://tw.yahoo.com">Yahoo</a></li>
</ul>
</div>
<h2><a href="#">第 2 列標題</a></h2>
<div>第 2 列內容</div>
<h2><a href="#">第 3 列標題</a></h2>
<div>第 3 列內容</div>
</div>
</div>
</div>
<!--右方主內容區-->
<div id="content2">
<div id="contentArea2">
<div id="tabs">
<ul>
<li><a href="#tab1">頁籤 1</a></li>
<li><a href="#tab2">頁籤 2</a></li>
<li><a href="#tab3">頁籤 3</a></li>
<li><a href="#tab4">頁籤 4</a></li>
</ul>
<div id="tab1">
<p>這是頁籤 1</p>
</div>
<div id="tab2">
<p>這是頁籤 2</p>
</div>
<div id="tab3">
<p>這是頁籤 3</p>
</div>
<div id="tab4">
<p>這是頁籤 4</p>
</div>
</div>
</div>
</div>
<!--頁尾-->
<div id="footer">
</div>
<script>
$(function(){
$(window).resize(function(){
var windowHeight=$(window).height();
$("#content1").height(windowHeight - 175 + "px");
$("#contentArea1").height(windowHeight - 205 + "px");
$("#content2").height(windowHeight - 175 + "px");
$("#contentArea2").height(windowHeight - 205 + "px");
});
$("#accordion").accordion();
$("#tabs").tabs();
});
</script>
</body>
</html>
結果如下 :
看起來似乎還不錯, 但 Ajax 部分需要補強一下, 先記錄結果, 等有空再繼續. 以前在寫 EasyUICMS 時曾使用其 Layout 元件排版, 參考 :
# 用 jQuery EasyUI 打造輕量級 CMS (一)
但由於 jQuery UI 本身沒有這種元件, 必須透過 plug-in 外掛 UI Layout 支援才行, 參考 :
# http://layout.jquery-dev.net/
# jQuery佈局外掛UI Layout簡介及使用方法
沒有留言:
張貼留言