メインメニューとサブメニューで構成した、ウィンドウをポップアップしていくメニュー形式のダイナミックHTMLです。
メインメニューにマウスをのせるとサブメニューが表示され、そのサブメニューをクリックすると 該当するコンテンツウインドウを表示します。 残念ながら、IE4以上のみの対応となっていますので、NNでは動作しませんのでご注意を。
HEAD部分にCSSとスクリプトを記述します。 BODY部分には、DIV要素に対してID属性を指定します。 この時DIV要素は次の条件を満足する必要があります。
表示するメニューのスタイルと数、テキストなどを変更可能です。 かなり複雑なのでじっくりと取り組んで下さい。
IE4以上
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>コンテキストメニュー2</title>
<style type="text/css">
<!--
.mainmenu{
position: absolute;
width: 100px;
height: 30px;
font: 900 16pt sans-serif;
color: #fff;
text-align: center;
border: 1pt solid #ccc;
background-color: #333;
}
.submenu{
position: absolute;
font: 600 16pt sans-serif;
text-align: center;
border: 1pt solid #000000;
bisibility: hidden;
cursor: default;
visibility: hidden;
}
.win{
position: absolute;
top: 450px;
left: 100px;
font: 600 14pt sans-serif;
color: #000000;
background-color: #eeeeee;
border: 3pt ridge #00ff00;
visibility: hidden;
}
-->
</style>
<script language="JavaScript" type="text/javascript">
<!--
var brw_v=navigator.appVersion.charAt(0);
var brw_n=navigator.appName.charAt(0);
var iIE4 = false;
var iNN4 = false;
if((brw_v >= 4)&&(brw_n == "M"))iIE4 = true;
if((brw_v >= 4)&&(brw_n == "N"))iNN4 = true;
var MainContMax = 3; // メインウインドウのメニュー項目数
var MainX = new Array();
var MainY = new Array();
MainX[1] = 0; // メインメニュー1X座標
MainX[2] = 150; // メインメニュー2X座標
MainX[3] = 300; // メインメニュー3X座標
MainY[1] = 0; // メインメニュー1Y座標
MainY[2] = 0; // メインメニュー2Y座標
MainY[3] = 0; // メインメニュー3Y座標
var MainW = 150; // メインウインドウの幅
var MainH = 30; // メインウインドウの高さ
var SubFrColor_c = "#ff0000"; // サブウインドウテキストカラー
var SubBgColor_c = "#ffcc99"; // サブウインドウバックグラウンドカラー
var SubBdColor_c = "#ff6633"; // サブウインドウボーダーカラー
var SubFrColor = "#ffff00"; // 選択サブウインドウテキストカラー
var SubBgColor = "#000000"; // 選択サブウインドウバックグラウンドカラー
var SubBdColor = "#ffff00"; // 選択サブウインドウボーダーカラー
var SubW = 250; // サブウインドウの幅
var SubH = 25; // サブウインドウの高さ
var OfsX = -10; // サブウインドウの横オフセット量
var OfsY = -10; // サブウインドウの高さオフセット量
var WinL = 100; // コンテンツウインドウの左端
var WinT = 250; // コンテンツウインドウの上端
var SubView = new Array();
var SubContMax = new Array(); // MainContMax分用意すること
SubContMax[1] = 8; // サブウインドウ1のメニュー項目数
SubContMax[2] = 5; // サブウインドウ2のメニュー項目数
SubContMax[3] = 4; // サブウインドウ3のメニュー項目数
var SubX = new Array();
SubX[1] = new Array();
SubX[2] = new Array();
SubX[3] = new Array();
var SubY = new Array();
SubY[1] = new Array();
SubY[2] = new Array();
SubY[3] = new Array();
var SubMenu = new Array();
SubMenu[1] = new Array();
SubMenu[2] = new Array();
SubMenu[3] = new Array();
// メインメニュー0のサブメニュー
SubMenu[1][1] = "SubMenu 1";
SubMenu[1][2] = "SubMenu 2";
SubMenu[1][3] = "SubMenu 3";
SubMenu[1][4] = "SubMenu 4";
SubMenu[1][5] = "SubMenu 5";
SubMenu[1][6] = "SubMenu 6";
SubMenu[1][7] = "SubMenu 7";
SubMenu[1][8] = "SubMenu 8";
// メインメニュー1のサブメニュー
SubMenu[2][1] = "SubMenu 1";
SubMenu[2][2] = "SubMenu 2";
SubMenu[2][3] = "SubMenu 3";
SubMenu[2][4] = "SubMenu 4";
SubMenu[2][5] = "SubMenu 5";
// メインメニュー2のサブメニュー
SubMenu[3][1] = "SubMenu 1";
SubMenu[3][2] = "SubMenu 2";
SubMenu[3][3] = "SubMenu 3";
SubMenu[3][4] = "SubMenu 4";
var CommonCmnt = "<br><a href='javascript:history.back()'>Go to Back<\/a>";
var Comments = new Array();
Comments[1] = new Array();
Comments[2] = new Array();
Comments[3] = new Array();
Comments[1][1] = "Contents Window 11<br>Main 1 - Sub 1" + CommonCmnt;
Comments[1][2] = "Contents Window 12<br>Main 1 - Sub 2" + CommonCmnt;
Comments[1][3] = "Contents Window 13<br>Main 1 - Sub 3" + CommonCmnt;
Comments[1][4] = "Contents Window 14<br>Main 1 - Sub 4" + CommonCmnt;
Comments[1][5] = "Contents Window 15<br>Main 1 - Sub 5" + CommonCmnt;
Comments[1][6] = "Contents Window 16<br>Main 1 - Sub 6" + CommonCmnt;
Comments[1][7] = "Contents Window 17<br>Main 1 - Sub 7" + CommonCmnt;
Comments[1][8] = "Contents Window 18<br>Main 1 - Sub 8" + CommonCmnt;
Comments[2][1] = "Contents Window 21<br>Main 2 - Sub 1" + CommonCmnt;
Comments[2][2] = "Contents Window 22<br>Main 2 - Sub 2" + CommonCmnt;
Comments[2][3] = "Contents Window 23<br>Main 2 - Sub 3" + CommonCmnt;
Comments[2][4] = "Contents Window 24<br>Main 2 - Sub 4" + CommonCmnt;
Comments[2][5] = "Contents Window 25<br>Main 2 - Sub 5" + CommonCmnt;
Comments[3][1] = "Contents Window 31<br>Main 3 - Sub 1" + CommonCmnt;
Comments[3][2] = "Contents Window 32<br>Main 3 - Sub 2" + CommonCmnt;
Comments[3][3] = "Contents Window 33<br>Main 3 - Sub 3" + CommonCmnt;
Comments[3][4] = "Contents Window 34<br>Main 3 - Sub 4" + CommonCmnt;
var dx = 0;
var dy = 0;
var Sub1_c = 0;
var Sub2_c = 0;
var menuNum = 0;
function Init(){
if(iIE4){
document.onmousedown = Mdown;
document.onmousemove = Mmove;
for(i = 1; i <= MainContMax; i++){
SubView[i] = false;
document.all("iLmain"+i).style.left = MainX[i];
document.all("iLmain"+i).style.top = MainY[i];
document.all("iLmain"+i).style.posWidth = MainW;
document.all("iLmain"+i).style.posHeight = MainH;
}
}
}
function Mdown(){
if(menuNum != 0){
for(i = 1; i <= SubContMax[menuNum]; i++){
layName = "iLsub" + menuNum + i;
x1 = getSize(layName,"LEFT");
x2 = x1 + getSize(layName,"WIDTH");
y1 = getSize(layName,"TOP");
y2 = y1 + getSize(layName,"HEIGHT");
if(x1 <= dx && dx <= x2){
if(y1 <= dy && dy <= y2){
Window_View(menuNum,i);
}
}
}
}
}
function Mmove(){
var i,x1,x2,y1,y2;
if(iIE4){
dx = event.clientX;
dy = event.clientY;
}
if(menuNum == 0){
for(i = 1; i <= MainContMax; i++){
layName = "iLmain" + i;
x1 = getSize(layName,"LEFT");
x2 = x1 + getSize(layName,"WIDTH");
y1 = getSize(layName,"TOP");
y2 = y1 + getSize(layName,"HEIGHT");
if(x1 <= dx && dx <= x2){
if(y1 <= dy && dy <= y2){
menuNum = i;
}
}
}
if(menuNum != 0){
Main_View(menuNum);
}
}else{
flag = false;
menuTmp = menuNum;
for(i = 1; i <= SubContMax[menuNum]; i++){
layName = "iLsub" + menuNum + i;
x1 = getSize(layName,"LEFT");
x2 = x1 + getSize(layName,"WIDTH");
y1 = getSize(layName,"TOP");
y2 = y1 + getSize(layName,"HEIGHT");
if(x1 <= dx && dx <= x2){
if(y1 <= dy && dy <= y2){
flag = true;
Sub_ChgMenu(menuNum,i);
Sub1_c = menuNum;
Sub2_c = i;
}
}
}
if(!flag){
menuNum = 0;
}
layName = "iLmain" + menuTmp;
x1 = getSize(layName,"LEFT");
x2 = x1 + getSize(layName,"WIDTH");
y1 = getSize(layName,"TOP");
y2 = y1 + getSize(layName,"HEIGHT");
if(x1 <= dx && dx <= x2){
if(y1 <= dy && dy <= y2){
menuNum = menuTmp;
}
}
if(menuNum == 0){
Sub_Clear(menuTmp);
}
}
}
function getSize(Layer,Type){
switch(Type){
case "TOP":
if(iIE4){
return(parseInt(document.all(Layer).style.top));
}
case "LEFT":
if(iIE4){
return(parseInt(document.all(Layer).style.left));
}
case "WIDTH":
if(iIE4){
return(parseInt(document.all(Layer).style.posWidth));
}
case "HEIGHT":
if(iIE4){
return(parseInt(document.all(Layer).style.posHeight));
}
default:
return(0);
}
}
function Main_View(n){
if(iIE4){
for(i = 1; i <= SubContMax[n]; i++){
lay = document.all("iLsub"+n+i);
lay.innerHTML = SubMenu[n][i];
lay.style.left = dx + OfsX;
lay.style.top = dy + (SubH - lay.style.borderWidth) * (i-1) + OfsY;
SubX[i] = lay.style.left;
SubY[i] = lay.style.top;
lay.style.posWidth = SubW;
lay.style.posHeight = SubH;
lay.style.color = SubFrColor_c;
lay.style.backgroundColor = SubBgColor_c;
lay.style.borderColor = SubBdColor_c;
lay.style.visibility = "visible";
}
}
}
function Window_View(n,m){
if(iIE4){
lay = document.all("iLwin");
lay.innerHTML = Comments[n][m];
lay.style.left = WinL;
lay.style.top = WinT;
lay.style.visibility = "visible";
}
}
function Sub_ChgMenu(n,m){
if(iIE4){
if(Sub1_c >= 1 && Sub2_c >= 1){
lay = document.all("iLsub"+Sub1_c+Sub2_c).style;
lay.color = SubFrColor_c;
lay.backgroundColor = SubBgColor_c;
lay.borderColor = SubBdColor_c;
}
if(n >= 1 && m >= 1){
lay = document.all("iLsub"+n+m).style;
lay.color = SubFrColor;
lay.backgroundColor = SubBgColor;
lay.borderColor = SubBdColor;
}
}
}
function Sub_Clear(n){
if(iIE4){
for(j = 1; j <= SubContMax[n]; j++){
lay = document.all("iLsub"+n+j);
lay.style.visibility = "hidden";
}
}
}
function Window_Clear(){
if(iIE4){
document.all("iLwin").style.visibility = "hidden";
}
}
// -->
</script>
</head>
<body onload="Init()">
<div class="mainmenu" id="iLmain1">MENU1</div>
<div class="mainmenu" id="iLmain2">MENU2</div>
<div class="mainmenu" id="iLmain3">MENU3</div>
<div class="submenu" id="iLsub11"> </div>
<div class="submenu" id="iLsub12"> </div>
<div class="submenu" id="iLsub13"> </div>
<div class="submenu" id="iLsub14"> </div>
<div class="submenu" id="iLsub15"> </div>
<div class="submenu" id="iLsub16"> </div>
<div class="submenu" id="iLsub17"> </div>
<div class="submenu" id="iLsub18"> </div>
<div class="submenu" id="iLsub21"> </div>
<div class="submenu" id="iLsub22"> </div>
<div class="submenu" id="iLsub23"> </div>
<div class="submenu" id="iLsub24"> </div>
<div class="submenu" id="iLsub25"> </div>
<div class="submenu" id="iLsub31"> </div>
<div class="submenu" id="iLsub32"> </div>
<div class="submenu" id="iLsub33"> </div>
<div class="submenu" id="iLsub34"> </div>
<div class="win" id="iLwin"> </div>
</body>
</html>