it-place.net > Уроци > JavaScript
Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Създаване на DropDown меню с JavaScript
  1. Създаване на DropDown меню с JavaScript
  2. Разглеждане на JavaScript функциите
  3. Пример за DropDown меню
Mutatos
     
Автор  Mutatos (15.01.2006 15:22)  съобщение до автора
Погледнат  9737 пъти  добави към любими
Оценка  добави коментар
Гласове  9  изпрати на приятел
Коментари  (2)  абонирай се за JavaScript
    Страница 1 / 3

 



За създаването на DropDown меню с JavaScript съм търсил лично много скриптове, но не съм намирал никога подходящ за това, което точно искам да направя. Или скрипта е бил много тежък или е платен или не отговаря на моите изисквания. Това което просто искам е един нормален скрипт за показване и скриване на менюта. А какво точно ще има в менютата е без значение за скрипта. Затова реших да създам един скрипт, който отговаря на тези изисквания и е много прост. Разбира се за създаването на скрипта съм се оповавал на различни примери, които намерих в интернет. Изпробвал съм скрипта под най-важните броузъри и работи иделано.

При създаването на вашите менюта остава само да си създадете един собствен CSS файл за правилното форматиране на менютата или може да използвате и картинки. Изборът си е ваш.

Нека да започнем. Какво представлява DropDown меню. Това е меню, съдържащо линкове или картинки и като се мине с мишката върху даден линк или картинка или се натисне този, то се показва друго меню под него или някъде другаде. В нашия случай е под него. Това е много често срещан ефект, който ви позволява да си спестите много място в страницата си, като същевременно имате възможност да покажите всички ваши услуги.

Скрипта е създаден на базата на JavaScript и CSS и се поддържа от всички броузъри поддържащи тези технологии. Ако примерно даден броузър не поддържа JavaScript, то тогава трябва да си измилите нещо, при което да не се показва това меню или да го заместите с нещо друго. Но нека да не се връщаме в миналото, а да гледаме само напред и да предположим, че всички броузъри поддържат JavaScript.

Компонентите на този скрипт са един JavaScript файл, който управлява нашите менюта и един HTML-файл, в който са дефинирани менютата. Както по-горе споменах липсва CSS файл, който да определи формата на линковете, но това всеки сам би трябвало да си направи.


JavaScript функции

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
    /**
    *    File: drop_down_dhtml.js   
    **/
   
    /**    таймер за скриване и показване на менютата */
   
var timerID = null;
   
   
/**    таймер: активен или не */
   
var timerOn = false;
   
   
/**    стойност на таймера в милисекунди */
   
var timecount = 700;
   
   
/**    вид на клиента : IE, Mozilla ... */
   
var what_browser = null;
   
   
/**    референция на 'layer' за различните клиенти */
   
var layerRef;
   
   
/**    референция за промяна на стиловете за различните клиенти */
   
var styleSwitch;
   
   
/**    променливата определя, дали е проведена проверка на клиентите */
   
var check = false;
   
   
/**    променливата съдържа, кое меню в момената е селектирано */
   
var selectednow = null;
   
   
/**
    *    Тази функция провежда проверката на клиентите при зареждане на страницата.
    *    Поради тази причина, тя трябва да се извика в тага <body> чрез функцията onLoad()
    **/
   
function init()
    {
       
if (document.layers)
        {
           
layerRef="document.layers";
           
styleSwitch="";
           
visibleVar="show";
           
screenSize = window.innerWidth;
           
what_browser ="ns4";
       
}
       
else if(document.all)
        {
           
layerRef="document.all";
           
styleSwitch=".style";
           
visibleVar="visible";
           
screenSize = document.body.clientWidth + 18;
           
what_browser ="ie";
       
}
       
else if(document.getElementById)
        {
           
layerRef="document.getElementByID";
           
styleSwitch=".style";
           
visibleVar="visible";
           
what_browser="moz";
       
}
       
else
       
{
           
what_browser="none";
       
}
   
   
check = true;
   
}
   
   
/**
    *    Тази функция предизвиква презареждане на страницата
    *    при промяна на размерите на броузера       
    **/
   
function reDo()
    {
       
if(what_browser == "moz")
        {
           
window.location.replace(self.location.href);
       
}
       
else
       
{
           
window.location.reload();
       
}
    }
   
// При промяна размерите на броузера се извиква функцията reDo().
    // Ако притежавате статична страница (страница, която не е центрирана или която не притежава таблици в процентно съотношение спрямо броузера)
    // е желателно да изтриете този ред за да не ви се презарежда страницата!
   
window.onresize = reDo;
   
   
   
/**
    *    Тази функция показва скритото меню
    *    @param string име на меню
    **/
   
function showLayer(layerName)
    {
       
if(check)
        {
           
if (what_browser =="none")
            {
               
return;
           
}
           
else if (what_browser == "moz")
            {
               
document.getElementById(layerName).style.visibility="visible";
           
}
           
else
           
{
             
eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.visibility="visible"');
           
}
        }
       
else
       
{
           
return;
       
}
    }
   
   
/**
    *    Тази функция скрива показаното меню
    *    @param string име на меню
    **/
   
function hideLayer(layerName)
    {
       
if(check)
        {
           
if (what_browser =="none")
            {
               
return;
           
}
           
else if (what_browser == "moz")
            {
               
document.getElementById(layerName).style.visibility="hidden";
           
}
           
else
           
{
             
eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.visibility="hidden"');
           
}
        }
       
else
       
{
           
return;
       
}
    }
   
   
/**
    *    Тази функция скрива всички менюта
    **/
   
function hideAll()
    {
       
hideLayer('rel_layer1');
       
hideLayer('rel_layer2');
       
hideLayer('rel_layer3');
       
hideLayer('rel_layer4');
   
}
    
   
/**
    *    Чрез тази функция се активира таймера
    **/
   
function startTime()
    {
       
if (timerOn == false)
        {
           
timerID=setTimeout( "hideAll()" , timecount);
           
timerOn = true;
       
}
    }
   
   
/**
    *    Чрез тази функция се деактивира таймера
    **/
   
function stopTime()
    {
       
if (timerOn)
        {
           
clearTimeout(timerID);
           
timerID = null;
           
timerOn = false;
       
}
    }
   
   
/**
    *    Чрез тази функция се показва даден текст в лентата за състояние
    *    @param string text
    **/
   
function showStatus(sMsg)
    {
       
window.status = sMsg ;
       
return true ;
   
}
   
   
/**
    *    Тази функция инициализира кое меню в момента е селектирано
    *    @param string text
    **/
   
function setSelected(sel_id)
    {
       
selectednow = sel_id;
   
}
   
   
   
/**
    *    Тази функция определя абсолютните координати на даден елемент в страницата
    *    @param string element
    **/
   
function getPosition(element)
    {
     
var elem=element,tagname="",x=0,y=0;
     
     
while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
      {
       
y+=elem.offsetTop;
       
x+=elem.offsetLeft;
       
tagname=elem.tagName.toUpperCase();
   
       
if (tagname=="BODY")
       
elem=0;
       
       
if (typeof(elem)=="object")
         
if (typeof(elem.offsetParent)=="object")
           
elem=elem.offsetParent;
     
}
     
     
position=new Object();
     
position.x=x;
     
position.y=y;
     
return position;
   
}
   
   
/**
    *    Тази функция определя абсолютните координати на даден елемент в страницата спрямо друг
    *    @param string elementId
    **/
   
function getCSS(elementId)
    {
       
var a,element,top_position;
       
/* Element-Objekt zur ID ermitteln */
       
element=document.getElementById(elementId);
       
/* Position bestimmen und melden */
       
a=getPosition(element);
       
top_position = a.y + 20;
       
document.write('<style type=text/css>');
       
document.write('#rel_'+ elementId +' {');
       
document.write('width : 122px;');
       
document.write('top : ' +top_position+ 'px;');
       
document.write('left : ' +a.x+ 'px;');
       
document.write('z-index : 1;');
       
document.write('position : absolute;');
       
document.write('visibility : hidden;');
       
document.write('}');
       
document.write('</style>');
   
}
   
   
   
// EOF drop_down_dhtml.js



  Следваща страница >> 


Ключови думи: javascript меню DropDown CSS броузър скрипт dom


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 За автора: Mutatos  
Николай Николов се занимава с програмиране на PHP/MySQL повече от 6 години. Заедно с разработката на уеб приложения на PHP, се занимава с Java, XML и Webservices.
   
 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

mnogo fulshivo da ti kaza ai zvinni mi

  tanq2006 на 07.12.2006 15:37

ще може ли да представите целия html и css код защото вече почнах да си блъсклам главата в стената как да направа падащо меню което наистина да е такова
              

  hkdobrev на 13.07.2006 20:17

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008