|
이를테면 이런 소스를 사용하기로 했다고 가정해볼게요
----------------------------------------------------------------
<html>
<head>
<title>http://www.blueb.co.kr</title>
<style type="text/css">
#dhtmlgoodies_slidedown_menu li{
list-style-type:none;
position:relative;
}
#dhtmlgoodies_slidedown_menu ul{
margin:0px;
padding:0px;
position:relative;
}
#dhtmlgoodies_slidedown_menu div{
margin:0px;
padding:0px;
}
/* Layout CSS */
#dhtmlgoodies_slidedown_menu{
width:205px;
visibility:hidden;
}
/* All A tags - i.e menu items. */
#dhtmlgoodies_slidedown_menu a{
color: #000;
text-decoration:none;
display:block;
clear:both;
width:170px;
padding-left:2px;
}
/*
A tags
*/
#dhtmlgoodies_slidedown_menu .slMenuItem_depth1{ /* Main menu items */
margin-top:1px;
border-bottom:1px solid #000;
font-weight:bold;
}
#dhtmlgoodies_slidedown_menu .slMenuItem_depth2{ /* Sub menu items */
margin-top:1px;
}
#dhtmlgoodies_slidedown_menu .slMenuItem_depth3{ /* Sub menu items */
margin-top:1px;
font-style:italic;
color:blue;
}
#dhtmlgoodies_slidedown_menu .slMenuItem_depth4{ /* Sub menu items */
margin-top:1px;
color:red;
}
#dhtmlgoodies_slidedown_menu .slMenuItem_depth5{ /* Sub menu items */
margin-top:1px;
}
/* UL tags, i.e group of menu utems.
It's important to add style to the UL if you're specifying margins. If not, assign the style directly
to the parent DIV, i.e.
#dhtmlgoodies_slidedown_menu .slideMenuDiv1
instead of
#dhtmlgoodies_slidedown_menu .slideMenuDiv1 ul
*/
#dhtmlgoodies_slidedown_menu .slideMenuDiv1 ul{
padding:1px;
}
#dhtmlgoodies_slidedown_menu .slideMenuDiv2 ul{
margin-left:5px;
padding:1px;
}
#dhtmlgoodies_slidedown_menu .slideMenuDiv3 ul{
margin-left:10px;
padding:1px;
}
#dhtmlgoodies_slidedown_menu .slMenuItem_depth4 ul{
margin-left:15px;
padding:1px;
}
</style>
<script type="text/xxxxjavascript" src="http://www.blueb.co.kr/SRC/xxxxjavascript/js/sliding_menu.js"></script>
</head>
<body>
<div id="dhtmlgoodies_slidedown_menu">
<ul>
<li><a href="#">블루비</a>
<ul>
<li><a href="#">Menus</a>
<ul>
<li><a href="http://www.blueb.co.kr/">Download</a></li>
<li><a href="http://www.blueb.co.kr/">Demo</a></li>
</ul>
</li>
<li><a href="#">Calendar scripts</a>
<ul>
<li id="initialExpandedMenuItem"><a href="slidedown-menu2.html">Download</a></li>
<li><a href="http://www.blueb.co.kr/">Demo</a></li>
<li><a href="#">Is it cross browser?</a>
<ul>
<li><a href="http://www.blueb.co.kr/">yes it is</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Window scripts</a>
<ul>
<li><a href="http://www.blueb.co.kr/">Download</a></li>
<li><a href="http://www.blueb.co.kr/">Demo</a></li>
</ul>
</li>
<li><a href="#">Form widgets</a>
<ul>
<li><a href="http://www.blueb.co.kr/">Download</a></li>
<li><a href="http://www.blueb.co.kr/">Demo</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Support</a>
<ul>
<li><a href="http://www.blueb.co.kr/">Phone</a></li>
<li><a href="http://www.blueb.co.kr/">Email</a></li>
<li><a href="http://www.blueb.co.kr/">QnA</a></li>
</ul>
</li>
<li><a href="#">History</a>
<ul>
<li><a href="http://www.blueb.co.kr/">1900 - 1940</a></li>
<li><a href="http://www.blueb.co.kr/">1941 - 1980 </a></li>
<li><a href="http://www.blueb.co.kr/">1981 - Present time</a></li>
</ul>
</li>
<li><a href="#">The team</a>
<ul>
<li><a href="#">Person A</a>
<ul>
<li><a href="#">CV</a>
<ul>
<li><a href="http://www.blueb.co.kr/">Job 1</a></li>
<li><a href="http://www.blueb.co.kr/">Job 2</a></li>
<li><a href="http://www.blueb.co.kr/">Job 3</a></li>
</ul>
</li>
<li><a href="http://www.blueb.co.kr/">Education</a></li>
<li><a href="#">Experience</a>
<ul>
<li><a href="#">Job 1</a>
<ul>
<li><a href="http://www.blueb.co.kr/">Accomplished this</a></li>
<li><a href="http://www.blueb.co.kr/">Accomplished that</a></li>
</ul>
</li>
<li><a href="http://www.blueb.co.kr/">Job 2</a></li>
<li><a href="http://www.blueb.co.kr/">Job 3</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="http://www.blueb.co.kr/">Person B</a></li>
<li><a href="http://www.blueb.co.kr/">Person C</a></li>
<li><a href="http://www.blueb.co.kr/">Person D</a></li>
<li><a href="http://www.blueb.co.kr/">Person E</a></li>
</ul>
</li>
<li><a href="#">Locations</a>
<ul>
<li><a href="http://www.blueb.co.kr/">Norway</a></li>
<li><a href="http://www.blueb.co.kr/">United States</a></li>
<li><a href="http://www.blueb.co.kr/">United Kingdom</a></li>
<li><a href="http://www.blueb.co.kr/">Sweden</a></li>
<li><a href="http://www.blueb.co.kr/">Denmark</a></li>
<li><a href="http://www.blueb.co.kr/">Finland</a></li>
</ul>
</li>
</ul>
</div>
<!-- END OF MENU -->
<script type="text/xxxxjavascript">
initSlideDownMenu();
</script>
</div>
</body>
</html>
------------------------------------------------------------------
이 소스를 노트패드에 붙여넣어보면
이런 모습이 나오는데요.
음.. 말로 설명하기가 좀 어려운데
결국 자바스크립트는 일 부분이고 마크업해주는 것은 html이거든요
위의 소스에서
<script type="text/xxxxjavascript" src="http://www.blueb.co.kr/SRC/xxxxjavascript/js/sliding_menu.js"></script> 이부분이
자바스크립트를 연동(?)하게 해주는 부분인데요.
보시다시피 외부에 있는 js파일을 읽는다고 해야되나.. 어쨌든 그렇습니다.
즉 위의 소스를 온전히 내 서버에서 돌리려면
화면에 보여질 마크업페이지 (html 자체)와
구동될 js파일이 함께 있어야겠지요 위의 소스에서는 http://www.blueb.co.kr/SRC/xxxxjavascript/js/sliding_menu.js 이 파일이겠네요.
http://www.blueb.co.kr/SRC/xxxxjavascript/js/sliding_menu.js 이 파일을 살펴보면
---------------------------------------------------------------
/************************************************************************************************************
(C) www.dhtmlgoodies.com, October 2005
This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.
Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.
Thank you!
www.dhtmlgoodies.com
Alf Magne Kalleland
************************************************************************************************************/
var expandFirstItemAutomatically = false; // Expand first menu item automatically ?
var initMenuIdToExpand = false; // Id of menu item that should be initially expanded. the id is defined in the <li> tag.
var expandMenuItemByUrl = true; // Menu will automatically expand by url - i.e. if the href of the menu item is in the current location, it will expand
var initialMenuItemAlwaysExpanded = true; // NOT IMPLEMENTED YET
var dhtmlgoodies_slmenuObj;
var divToScroll = false;
var ulToScroll = false;
var divCounter = 1;
var otherDivsToScroll = new Array();
var divToHide = false;
var parentDivToHide = new Array();
var ulToHide = false;
var offsetOpera = 0;
if(navigator.userAgent.indexOf('Opera')>=0)offsetOpera=1;
var slideMenuHeightOfCurrentBox = 0;
var objectsToExpand = new Array();
var initExpandIndex = 0;
var alwaysExpanedItems = new Array();
function popMenusToShow()
{
var obj = divToScroll;
var endArray = new Array();
while(obj && obj.tagName!='BODY'){
if(obj.tagName=='DIV' && obj.id.indexOf('slideDiv')>=0){
var objFound = -1;
for(var no=0;no<otherDivsToScroll.length;no++){
if(otherDivsToScroll[no]==obj){
objFound = no;
}
}
if(objFound>=0){
otherDivsToScroll.splice(objFound,1);
}
}
obj = obj.parentNode;
}
}
function showSubMenu(e,inputObj)
{
if(this && this.tagName)inputObj = this.parentNode;
if(inputObj && inputObj.tagName=='LI'){
divToScroll = inputObj.getElementsByTagName('DIV')[0];
for(var no=0;no<otherDivsToScroll.length;no++){
if(otherDivsToScroll[no]==divToScroll)return;
}
}
hidingInProcess = false;
if(otherDivsToScroll.length>0){
if(divToScroll){
if(otherDivsToScroll.length>0){
popMenusToShow();
}
if(otherDivsToScroll.length>0){
autoHideMenus();
hidingInProcess = true;
}
}
}
if(divToScroll && !hidingInProcess){
divToScroll.style.display='';
otherDivsToScroll.length = 0;
otherDivToScroll = divToScroll.parentNode;
otherDivsToScroll.push(divToScroll);
while(otherDivToScroll && otherDivToScroll.tagName!='BODY'){
if(otherDivToScroll.tagName=='DIV' && otherDivToScroll.id.indexOf('slideDiv')>=0){
otherDivsToScroll.push(otherDivToScroll);
}
otherDivToScroll = otherDivToScroll.parentNode;
}
ulToScroll = divToScroll.getElementsByTagName('UL')[0];
if(divToScroll.style.height.replace('px','')/1<=1)scrollDownSub();
}
}
function autoHideMenus()
{
if(otherDivsToScroll.length>0){
divToHide = otherDivsToScroll[otherDivsToScroll.length-1];
parentDivToHide.length=0;
var obj = divToHide.parentNode.parentNode.parentNode;
while(obj && obj.tagName=='DIV'){
if(obj.id.indexOf('slideDiv')>=0)parentDivToHide.push(obj);
obj = obj.parentNode.parentNode.parentNode;
}
var tmpHeight = (divToHide.style.height.replace('px','')/1 - slideMenuHeightOfCurrentBox);
if(tmpHeight<0)tmpHeight=0;
if(slideMenuHeightOfCurrentBox)divToHide.style.height = tmpHeight + 'px';
ulToHide = divToHide.getElementsByTagName('UL')[0];
slideMenuHeightOfCurrentBox = ulToHide.offsetHeight;
scrollUpMenu();
}else{
slideMenuHeightOfCurrentBox = 0;
showSubMenu();
}
}
function scrollUpMenu()
{
var height = divToHide.offsetHeight;
height-=15;
if(height<0)height=0;
divToHide.style.height = height + 'px';
for(var no=0;no<parentDivToHide.length;no++){
parentDivToHide[no].style.height = parentDivToHide[no].getElementsByTagName('UL')[0].offsetHeight + 'px';
}
if(height>0){
setTimeout('scrollUpMenu()',5);
}else{
divToHide.style.display='none';
otherDivsToScroll.length = otherDivsToScroll.length-1;
autoHideMenus();
}
}
function scrollDownSub()
{
if(divToScroll){
var height = divToScroll.offsetHeight/1;
var offsetMove =Math.min(15,(ulToScroll.offsetHeight - height));
height = height +offsetMove ;
divToScroll.style.height = height + 'px';
for(var no=1;no<otherDivsToScroll.length;no++){
var tmpHeight = otherDivsToScroll[no].offsetHeight/1 + offsetMove;
otherDivsToScroll[no].style.height = tmpHeight + 'px';
}
if(height<ulToScroll.offsetHeight)setTimeout('scrollDownSub()',5); else {
divToScroll = false;
ulToScroll = false;
if(objectsToExpand.length>0 && initExpandIndex<(objectsToExpand.length-1)){
initExpandIndex++;
showSubMenu(false,objectsToExpand[initExpandIndex]);
}
}
}
}
function initSubItems(inputObj,currentDepth)
{
divCounter++;
var div = document.createElement('DIV'); // Creating new div
div.style.overflow = 'hidden';
div.style.position = 'relative';
div.style.display='none';
div.style.height = '1px';
div.id = 'slideDiv' + divCounter;
div.className = 'slideMenuDiv' + currentDepth;
inputObj.parentNode.appendChild(div); // Appending DIV as child element of <LI> that is parent of input <UL>
div.appendChild(inputObj); // Appending <UL> to the div
var menuItem = inputObj.getElementsByTagName('LI')[0];
while(menuItem){
if(menuItem.tagName=='LI'){
var aTag = menuItem.getElementsByTagName('A')[0];
aTag.className='slMenuItem_depth'+currentDepth;
var subUl = menuItem.getElementsByTagName('UL');
if(subUl.length>0){
initSubItems(subUl[0],currentDepth+1);
}
aTag.[안내]태그제한으로등록되지않습니다-xx[안내]태그제한으로등록되지않습니다-xxonclick = showSubMenu;
}
menuItem = menuItem.nextSibling;
}
}
function initSlideDownMenu()
{
dhtmlgoodies_slmenuObj = document.getElementById('dhtmlgoodies_slidedown_menu');
dhtmlgoodies_slmenuObj.style.visibility='visible';
var mainUl = dhtmlgoodies_slmenuObj.getElementsByTagName('UL')[0];
var mainMenuItem = mainUl.getElementsByTagName('LI')[0];
mainItemCounter = 1;
while(mainMenuItem){
if(mainMenuItem.tagName=='LI'){
var aTag = mainMenuItem.getElementsByTagName('A')[0];
aTag.className='slMenuItem_depth1';
var subUl = mainMenuItem.getElementsByTagName('UL');
if(subUl.length>0){
mainMenuItem.id = 'mainMenuItem' + mainItemCounter;
initSubItems(subUl[0],2);
aTag.[안내]태그제한으로등록되지않습니다-xx[안내]태그제한으로등록되지않습니다-xxonclick = showSubMenu;
mainItemCounter++;
}
}
mainMenuItem = mainMenuItem.nextSibling;
}
if(location.search.indexOf('mainMenuItemToSlide')>=0){
var items = location.search.split('&');
for(var no=0;no<items.length;no++){
if(items[no].indexOf('mainMenuItemToSlide')>=0){
values = items[no].split('=');
showSubMenu(false,document.getElementById('mainMenuItem' + values[1]));
initMenuIdToExpand = false;
}
}
}else if(expandFirstItemAutomatically>0){
if(document.getElementById('mainMenuItem' + expandFirstItemAutomatically)){
showSubMenu(false,document.getElementById('mainMenuItem' + expandFirstItemAutomatically));
initMenuIdToExpand = false;
}
}
if(expandMenuItemByUrl)
{
var aTags = dhtmlgoodies_slmenuObj.getElementsByTagName('A');
for(var no=0;no<aTags.length;no++){
var hrefToCheckOn = aTags[no].href;
if(location.href.indexOf(hrefToCheckOn)>=0 && hrefToCheckOn.indexOf('#')<hrefToCheckOn.length-1){
initMenuIdToExpand = false;
var obj = aTags[no].parentNode;
while(obj && obj.id!='dhtmlgoodies_slidedown_menu'){
if(obj.tagName=='LI'){
var subUl = obj.getElementsByTagName('UL');
if(initialMenuItemAlwaysExpanded)alwaysExpanedItems[obj.parentNode] = true;
if(subUl.length>0){
objectsToExpand.unshift(obj);
}
}
obj = obj.parentNode;
}
showSubMenu(false,objectsToExpand[0]);
break;
}
}
}
if(initMenuIdToExpand)
{
objectsToExpand = new Array();
var obj = document.getElementById(initMenuIdToExpand)
while(obj && obj.id!='dhtmlgoodies_slidedown_menu'){
if(obj.tagName=='LI'){
var subUl = obj.getElementsByTagName('UL');
if(initialMenuItemAlwaysExpanded)alwaysExpanedItems[obj.parentNode] = true;
if(subUl.length>0){
objectsToExpand.unshift(obj);
}
}
obj = obj.parentNode;
}
showSubMenu(false,objectsToExpand[0]);
}
}
----------------------------------------------------------
이렇게 되어있네요.
살펴보면
html엘리먼트들중 ul,li,div등을 제어하고있습니다.
대략적으로 이런 구성이고..
저도 직접 스크립트를 짜서 사용하는 수준이 아니라서 ㅎㅎ;
소스를 가져와서 디자인이나 메뉴항목들을 바꾸시려면
js를 살펴보고 해당되는 이미지 링크와 기타 width,height,padding,margin값을 js와 연결되어있는 html상의 엘리먼트들중에서 변경하시면 될 것입니다.
|
첫댓글 ㅠㅠㅠㅠㅠ친절하신 설명과 예제...넘넘 감사드립니다...그런데..넘넘 어렵습니당....ㅠㅠㅠㅠㅠㅠㅠㅠㅠ도저히....ㅠㅠㅠㅠ
ㅠㅠ 말주변이 없어놔서..