יצירת תפריט 'פופ-אפ'
במאמר זה אדגים ואסביר איך לבנות תפריט דינאמי פשוט ב javascript אין צורך בידע גדול או בנסיון עשיר בJavascript ,CSS או HTML, אבל דרוש לפחות ידע בסיסי.
הרעיון הוא פשוט, יוצרים טבלה עם שורה אחת ו 4 תאים, בכל תא יש מילהלינק ועוד אלמנט נסתר, וכשעוברים על התא רואים את האלמנט שנמצא בו. כאשר יוצאים מהתא, התפריט נעלם. פשוט לא?
אז איפה מתחילים?
קודם כל ניצור פונקציה ב Javascript (DHTML), שתבדוק האם רואים את התפריט? אם כן אז היא תעלים אם לא אז היא תראה! וכל פעם שנצטרך להראותלהעלים את הטבלה נקרא לה, 1
2
3
4
5
6 <script language="javascript">
function showHideTable(menuId){
var obj=document.getElementById(menuId)
obj.style.visibility=(obj.style.visibility=="visible"?"hidden":"visible")
}
</script>
ניצורclass ב style לאיברים הפנימיים וניתן להם מיקום אבסולוטי כדי שלא יתפסו את נפח בטבלה הראשית ויגדילו את הגובה שלה, וכמובן נעשה אותן בלתי נראים. 1
2
3
4
5
6
7 <style>
div.menu
{
position:absolute;
visibility:hidden
}
</style>
זאת הטבלה שהמשתמש יראה כשהוא נכנס לאתר: 1
2
3
4
5
6
7
8
9 <table width="100%">
<tr>
<td><a href="home.html">Home</a></td>
<td><a href="products.html">Products</a></</td>
<td><a href="contacts.html">Contacts</a></</td>
<td><a href="search.html">Search</a></</td>
</tr>
</table>
עכשיו נוסיף לכל תא DIV בשביל התפריט, לדוגמה: 1
2
3
4
5
6
7
8 <td>
<a href="products.html">products</a>
<div class="menu" id="products">
<a href="page1.html">prod 1</a><br>
<a href="page2.html">prod 2</a><br>
<a href="page3.html">prod 3</a><br>
</div>
</td>
שימו לב שבגלל הclass ה-DIV יהיה בלתי ניראה.
ונתנו לו id זהה למילה שמופיעה מעליו, על מנת שנוכל לקרוא לפונקציה.
אותו דבר נעשה לגבי כל התאים בטבלה הראשית
עכשיו יש לנו טבלה עם 4 תאים שבכל אחד מהם יש DIV בלתי ניראה, מה עשינו בזה אם אי אפשר לראות את התפריטים? אז בדיוק על זה רציתי לדבר איתכם..
נשתמש ב events של DHTML, onmouseover ו onmouseout (ניץן לעשות זאת גם עם קליק או כל ארוע אחר..)
נוסיף לכל תג <td> שבטבלה הראשית onmouseover שיקרא לפונקציה ההיא שבנינו מקודם, זוכרים? נוסיף גם onmouseout שתתבצע כאשר המשתמש יוריד את העכבר מהטבלה אז הפונקציה תעלים את התפריט. 1 <td onmouseover="showHideTable('products')" onmouseout=" showHideTable('products')">
זהו, זה כל הסיפור.. נכון פשוט? עכשיו צריך רק לעצב ולשנות לפי המצברוח
הקוד המלא: 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 <html>
<head>
<script language="javascript">
function showHideTable(menuId){
var obj=document.getElementById(menuId)
obj.style.visibility=(obj.style.visibility=="visible"?"hidden":"visible")
}
</script>
<style>
div.menu
{
position:absolute;
visibility:hidden
}
</style>
</head>
<body>
<table>
<tr>
<td>
<a href="home.html">Home</a>
</td>
<td onmouseover="showHideTable('products')" onmouseout="showHideTable('products')">
<a href="products.html">Products</a><br>
<div class="menu" id="products">
<a href="page1.html">prod 1</a><br>
<a href="page2.html">prod 2</a><br>
<a href="page3.html">prod 3</a><br>
</div>
</td>
<td onmouseover="showHideTable('contacts')" onmouseout="showHideTable('contacts')">
<a href="contacts.html">contacts</a><br>
<div class="menu" id="contacts">
<a href="mailto:[email protected]">Sales</a><br>
<a href="mailto:[email protected]">Marketing</a><br>
<a href="mailto:[email protected]">Management</a><br>
</div>
</td>
<td onmouseover="showHideTable('search')" onmouseout="showHideTable('search')">
<a href="search.html">search</a><br>
<div class="menu" id="search">
<a href="search.asp?keyword=book">Books</a><br>
<a href="search.asp?keyword=block">Building Blocks</a><br>
<a href="search.asp?keyword=computer">Computers</a><br>
</div>
</td>
</tr>
</table>
</body>
</html>
תגובות בפייסבוק