GNB(서브페이지 메뉴고정)
- HTML마크업 구조는 아래 형식에서 벗어나지 않도록 합니다.
- 디자인에 따른 해당UI의 CSS는 서비스별로 다르게 적용 가능합니다.
- DTD는 HTML 4.01 Transitional(loose.dtd)기준입니다.
- 웹 접근성에 맞춰, 키보드만으로도 동작이 가능합니다.
코드 전체끄기
Html Code
<div class="header">
<ul id="gnb">
<li class="gnb1"><a href="#"><span>첫번째</span></a>
<ul class="sub1">
<li><a href="#">첫번째-1</a></li>
<li><a href="#">첫번째-2</a></li>
</ul>
</li>
<li class="gnb2"><a href="#"><span>두번째</span></a>
<ul class="sub2">
<li><a href="#">두번째-1</a></li>
<li><a href="#">두번째-2</a></li>
<li><a href="#">두번째-3</a></li>
</ul>
</li>
<li class="gnb3"><a href="#"><span>세번째</span></a></li>
<li class="gnb4"><a href="#"><span>네번째</span></a>
<ul class="sub4">
<li><a href="#">네번째-1</a></li>
<li><a href="#">네번째-2</a></li>
<li><a href="#">네번째-3</a></li>
<li><a href="#">네번째-4</a></li>
</ul>
</li>
<li class="gnb5"><a href="#"><span>다섯번째</span></a>
<ul class="sub5">
<li><a href="#">다섯번째-1</a></li>
<li><a href="#">다섯번째-2</a></li>
<li><a href="#">다섯번째-3</a></li>
<li><a href="#">다섯번째-4</a></li>
<li><a href="#">다섯번째-5</a></li>
</ul>
</li>
</ul>
</div>
Css Code
* {margin:0; padding:0;}
img {border:0 none;}
ul, ol {list-style:none;}
body {font:12px/1.5em NG, AppleGothic,'돋움', Dotum, '굴림', gulim, Arial, Verdana, sans-serif; color:#333;}
.header {border-top:4px solid #369; border-bottom:1px solid #ccc;}
.header ul:after {content: "."; display: block; height: 0; clear: both; visibility: hidden;}
.header ul {position:relative; margin:0 auto; width:960px; height:43px;}
.header li {float:left;}
.header li a {display:block; height:43px;
background:url('../images/gnb/opinion_navi.gif') no-repeat 0 0;
}
.header .show {display:block !important;}
.header li.gnb1 a {width:91px; background-position:0 0;}
.header li.gnb1 a.selected {background-position:0 -43px;}
.header li.gnb2 a {width:77px; background-position:-91px 0;}
.header li.gnb2 a.selected {background-position:-91px -43px;}
.header li.gnb3 a {width:63px; background-position:-168px 0;}
.header li.gnb3 a.selected {background-position:-168px -43px;}
.header li.gnb4 a {width:64px; background-position:-231px 0;}
.header li.gnb4 a.selected {background-position:-231px -43px;}
.header li.gnb5 a {width:93px; background-position:-295px 0;}
.header li.gnb5 a.selected {background-position:-295px -43px;}
.header li a span {position:relative; z-index:-1;}
.header li ul {position:absolute; top:43px; width:auto; height:auto;}
.header li li {border:0 none; background-color:#666;}
.header li li a {height:auto; display:block; border:1px solid #333; padding:2px; background:none; white-space:nowrap; text-decoration:none; color:#fff;}
.header li li a:hover,
.header li li a:focus,
.header li li a:active {text-decoration:underline;}
.header li li.on a {font-weight:bold;}
.header li ul.sub1 {}
.header li ul.sub2 {}
.header li ul.sub3 {}
.header li ul.sub4 {}
.header li ul.sub5 {}
jQuery Code
$(function(){
$.fn.gnb = function(tar, sub)
{
return this.each(function(){
//return start
var $gnb = $(this),
$tar = parseInt(tar-1),
$sub = parseInt(sub-1),
$ul = $('li>ul', $gnb),
$li = $('>li', $gnb),
$a = $('>li>a', $gnb)
;
$ul.hide();
function gnbSet()
{
$ul.not($ul.eq($tar)).hide();
$ul.eq($tar).stop(true,true).slideDown('fast');
$a.not($a.eq($tar)).removeClass('selected');
$a.eq($tar).addClass('selected');
$ul.eq($tar).find('>li').eq($sub).addClass('on');
}
gnbSet();
$a.on('mouseenter focusin', function(){
if( $(this).hasClass('selected') ) return;
$a.removeClass('selected');
$(this).addClass('selected');
$ul.hide();
$(this).next('ul').stop().slideDown('fast');
});
$gnb.on('mouseleave', function(){
gnbSet();
});
//rerurn end
});
};
$('#gnb').gnb(2,2);//고정될 부분
});