jquery

서브메뉴

aneyh.c 2012. 2. 17. 17:08
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='ko' lang='ko'>
<head>
<meta http-equiv='content-type' content='text/html; charset=utf-8'/>
<title> New Document </title>
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script>
</head>
<body>
<style type='text/css'>
.submenu{display:none; width:100px; position:absolute; z-index:100; border:1px solid red; }
</style>
<img src="bg_menu.png" width="880" height="38" border="0" usemap="#Map" />
<map name="Map" id="Map">
    <area shape="rect" coords="0,0,49,24" href="#" />
    <area shape="rect" coords="50,0,99,24" href="#" />
    <area shape="rect" coords="100,-1,149,23" href="#" />
    <area shape="rect" coords="148,0,197,24" href="#" />
    <area shape="rect" coords="197,-1,246,23" href="#" />
    <area shape="rect" coords="245,0,294,24" href="#" />
    <area shape="rect" coords="294,1,343,25" href="#" />
    <area shape="rect" coords="342,1,391,25" href="#" />
</map>

<div id='menu1' class='submenu'>menu1</div>
<div id='menu2' class='submenu'>menu2</div>
<div id='menu3' class='submenu'>menu3</div>
<div id='menu4' class='submenu'>menu4</div>
<div id='menu5' class='submenu'>menu5</div>
<div id='menu6' class='submenu'>menu6</div>
<div id='menu7' class='submenu'>menu7</div>
<div id='menu8' class='submenu'>menu8</div>

<div style="width:100px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;">
여기에 내용이 들어갑니다. 여기에 내용이 들어갑니다. 여기에 내용이 들어갑니다. 여기에 내용이 들어갑니다. 여기에 내용이 들어갑니다. 
</div>
<!--
white-space:nowrap;  자동줄바꿈 없이 쭉 이어지게 한다.
여기 넣은 이유는.. 말줄임 기능을 보여주기 위해 자동줄바꿈을 막은 것임
-->
<script language='javascript'>
$(document).ready(function(){
    var last_id = null;
    $('#Map area').mouseover(function(){
        if(last_id != null) last_id.hide();
        var idx = $('#Map area').index($(this)) + 1;
        var coords = $(this).attr('coords').split(',');
        if($.browser.msie) coords[0] = 0;
        var offset = $(this).offset();
        last_id = $('#menu'+idx);
        $('#menu'+idx).css({
            top : offset.top + $(this).height(),
            left : offset.left + parseInt(coords[0], 10)
        }).show();
    });
    $(document).click(function(){
        $('.submenu').hide();
    });
});

//특히 좌측 위치과 우측 위치가 차이가 나서 그런데
//            top : offset.top + $(this).height(),
//            left : offset.left + parseInt(coords[0], 10)
//이부분을 적절히 + 혹은 - 해주시면 됩니다. 
//ex) top : offset.top + $(this).height() + 30,

</script>
</body>
</html>