sir.co.kr 의 메뉴 따라하기 (2005.09.20수정) > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

sir.co.kr 의 메뉴 따라하기 (2005.09.20수정) 정보

sir.co.kr 의 메뉴 따라하기 (2005.09.20수정)

본문

지금 상단에 보이는 멋드러지면서도 브라우저 호환성도 완벽(?)한 이 메뉴를 뽀려오는 방법입니다.
관리자님께서 head.php 를 공개하셨기에 정리해서 올립니다.
(sir의 head처럼 php로 무장하지 않았으니 저같은 짜집퍼(?)에게는 오히려 이 방법이 쉬울겁니다)




먼저 head.sub.php 맨 아래 아래 내용을 넣습니다.
수정하지 않으셨다면 <a name="g4_head"></a> 아래 넣게되겠죠.
------------------------------------------------------------------------------------------------------------
<!--  메인메뉴용 스크립트  -->
<script language="JavaScript">
var save_layer = null;
function layer_view(link_id, menu_id, opt, x, y)
{
    var link = document.getElementById(link_id);
    var menu = document.getElementById(menu_id);

    //for (i in link) { document.write(i + '<br/>'); } return;

    if (save_layer != null)
    {
        save_layer.style.display = "none";
        selectBoxVisible();
    }

    if (link_id == '')
        return;

    if (opt == 'hide')
    {
        menu.style.display = 'none';
        selectBoxVisible();
    }
    else
    {
        x = parseInt(x);
        y = parseInt(y);
        menu.style.left = get_left_pos(link) + x;
        menu.style.top  = get_top_pos(link) + link.offsetHeight + y;
        menu.style.display = 'block';
    }

    save_layer = menu;
}

function preload() {
  if (!document.images) return;
  var ar = new Array();
  var arguments = preload.arguments;
  for (var i = 0; i < arguments.length; i++) {
    ar[i] = new Image();
    ar[i].src = arguments[i];
  }
  //alert(arguments.length);
}

</script>

<script language="javascript" src="<?=$g4[path]?>/js/sideview.js"></script>

<script language="JavaScript">
function disp_menu(id)
{
    //document.getElementById('menu_gnuboard4').style.display = 'none';
    document.getElementById(id).style.display = '';
}
</script>

<STYLE>
.bg_menu1 { height:22px;
            border-left-width:1px; border-left-style:solid; border-left-color:#9DADE5;
            border-right-width:1px; border-right-style:solid; border-right-color:#9DADE5;
            padding-left:15px;
            padding-right:15px;
            background-color:#F6FAFF; }
.bg_line1 { height:1px; background-color:#9DADE5; }
</STYLE>
------------------------------------------------------------------------------------------------------------
여기서  sideview.js 는 게시판일 경우 불러와 지는탓에 그냥 요렇게 둘 경우
게시판 상태에서는 스크립트를 두번 불러오게 됩니다.
if($bo_table) 로 게시판일 경우 막아도 될것같은데 어짜피 별 차이 없을것 같으니 그냥 위 쏘스대로 써먹어도 될것 같습니다
그리고 메뉴위에 바짝 붙여 써먹어도 사실상 상관 없지만.. 웬지 head.sub에 넣는게 심적으로 든든합니다(말도안됨 ㅋㅋ)



다음으로 메뉴를 넣고싶은곳에
------------------------------------------------------------------------------------------------------------
<a href="경로"><img src="이미지경로" border=0 id='id_home' onmouseover="layer_view('id_home', 'menu_home', 'view', 0, 2);"></a>

<a href="경로"><img src="이미지경로" border=0 id='id_sir' onmouseover="layer_view('id_sir', 'menu_sir', 'view', 0, 2);"></a>

<a href="경로"><img src="이미지경로" border=0 id='id_commu' onmouseover="layer_view('id_commu', 'menu_commu', 'view', 0, 2);"></a>
------------------------------------------------------------------------------------------------------------
요런식으로 넣어주시면 됩니다.

id_아이디값 , menu_아이디값
다르게 만들면 메뉴를 여러개 만들수도 있겠습니다.

여기서 'view', 0, 2 부분이 메뉴 가로세로 시작하는 위치 입니다. 버튼과 띄우기 싫다면 0, 0 으로 하면 되고 마이너스도 됩니다.




다음으로 마우스 댔을때 뜨는 레이어 테이블 입니다. 위 아이디값과 같아야 됩니다.
-------------------------------------------------------------------------------------------------------------
<table width=100 id='menu_home' cellpadding=0 cellspacing=0 style='position:absolute; display:none;' onpropertychange="selectBoxHidden('menu_home')">
<tr>
<td class=bg_menu1 width=100><a href='<?=$g4[bbs_path]?>/board.php?bo_table=iriver_introduc'>메뉴1</a></td>
</tr>
<tr>
<td class=bg_menu1><a href='<?=$g4[bbs_path]?>/board.php?bo_table=iriver_news'>메뉴2</a></td>
</tr>
<tr>
<td class=bg_line1></td>
</tr>
</table>

<table width=100 id='menu_sir' cellpadding=0 cellspacing=0 style='position:absolute; display:none;' onpropertychange="selectBoxHidden('menu_sir')">
<tr>
<td class=bg_menu1 width=100><a href='<?=$g4[bbs_path]?>/board.php?bo_table=iriver_introduc'>메뉴1</a></td>
</tr>
<tr>
<td class=bg_menu1><a href='<?=$g4[bbs_path]?>/board.php?bo_table=iriver_news'>메뉴2</a></td>
</tr>
<tr>
<td class=bg_line1></td>
</tr>
</table>

<table width=100 id='menu_commu' cellpadding=0 cellspacing=0 style='position:absolute; display:none;' onpropertychange="selectBoxHidden('menu_commu')">
<tr>
<td class=bg_menu1 width=100><a href='<?=$g4[bbs_path]?>/board.php?bo_table=iriver_introduc'>메뉴1</a></td>
</tr>
<tr>
<td class=bg_menu1><a href='<?=$g4[bbs_path]?>/board.php?bo_table=iriver_news'>메뉴2</a></td>
</tr>
<tr>
<td class=bg_line1></td>
</tr>
</table>
----------------------------------------------------------------------------------------------------------------
여기서 일정한 테이블의 크기를 정해주고 싶다면 table 에 width 를 주고 셀(td) 중 하나이상에도 같은 width 을 줘야 되더군요.
이유는 모릅니다만 익스플로러는 table의 width 만 인식하고, 파이어폭스는 td의 width만 인식합니다.





끝입니다.
아주 간단하지요?
여기서  주의점 하나..
그냥 위 처럼 해서 쓰면 마우스가 레이어에서 사라져도 레이어가 계속 떠있습니다.
다른메뉴로 스위치는 되지만 페이지가 새로고침(이동)되기 이전에는 사라지지 않습니다.
나름대로 그럴 경우가 더 좋은홈이 있겠습니다만... sir처럼 마우스가 레이어나 버튼에서 벗어나면 레이어를 숨기고 싶다면

그 주변에 있는 table 혹은 td 등과 같은곳에  onmouseover="layer_view('','','','','')" 를 넣어주셔야 됩니다.

<table border=0  onmouseover="layer_view('','','','','')">
<tr>
<td  onmouseover="layer_view('','','','','')">
.
.
.

이런식으로 말입니다..

메뉴를 덥는 테이블에  onmouseover="layer_view('','','','','')" 가 있다면 메뉴가 안나타나니 주의해야 됩니다.

쉽게 예를들어 순십간에 급조한 파일을 첨부해 설명하자면..
그림에서 처럼 적색 부분에 메뉴가 들어간다면
청색 테이블의 table 에  onmouseover="layer_view('','','','','')" 삽입.
연녹색 셀 td 에  onmouseover="layer_view('','','','','')" 삽입 (그러면 3번 테이블은 자연적으로 종속됨)
추천
1
  • 복사

댓글 24개

많은 분들이 기다리던 소식이 아닌가 합니다^^
감사합니다 고냉이님!
얼른 작업해 봐야 겠습니다ㅎㅎ

초보들에겐 아무리 쉬운것도 어려워 보이는군요^^
저도 몇일째 head.php를 분석중이입니다. ㅎㅎ

게시판일때 sideview.js 중복 방지를 위해
<script language="javascript" src="js/sideview.js"></script> 부분을 아래소스로 바꿔서 쓰고 있습니다.
<?
//게시판일때 sideview.js 중복 방지
if($bo_table) {
//게시판일때 넘김
} else {
echo "<script language='javascript' src='$g4[path]/js/sideview.js'></script>";
// include_once("$g4[path]/js/sideview.js"); //이경우는 소스코드가 보여짐
}
?>

*일일이 주변 테이블에 onmouseover="layer_view('','','','','')" 를 넣어주는 것이 문제군요.
메뉴에서 onmouseout이벤트로 해주면 좋을것 같은데 잘 않됩니다.
바보같이..

js/sideview.js 파일에 경로(g4[path])를 안줬더군요.

그냥 위 수정한 내용대로 적용해 쓰세요

보드이면서 글쓰기가 아닐경우 sideview.js를 불러온다는 조건을 줘도되지만

sir도 두번 불러와지는데 뭐 찝찝할것 있나요%^^
고냉이님 덕분에 잘 쓰고 있는데요...
다른건 이상 없는데 게시판 쓰기 창에서 마우스가 메뉴에 갔을때 처음 접촉된곳에선 부메뉴가 열리는데 옆에 있는 메뉴로 마우스가 가면 부메뉴가 안열리는데요.......
초심자이다 보니.. 이해가 부족하네요..??

먼저 head.sub.php 맨 아래 아래 내용을 넣습니다.
수정하지 않으셨다면 <a name="g4_head"></a> 아래 넣게되겠죠

요기까지는 알겠는데,  그다음의 메뉴를 넣고 싶은 곳에..  는 어떤 파일을 수정하는 것이죠?
© SIRSOFT
현재 페이지 제일 처음으로