Rozwijane Menu

HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
ODPOWIEDZ
Balas
Moderator
Posty: 252
Rejestracja: wt sie 02, 2005 12:53 pm
Lokalizacja: Inowroclaw
Kontakt:

Rozwijane Menu

Post autor: Balas »

Jak zrobic rozwijane menu, ktore nachodzi na text (i co tam jeszcze jest na stronie :D ) ?? (nie koniecznie menu :P )

Chodzi mi o cos podobnego jak jest na forach vBulettin, np. http://forum.joomla.pl/jak sie nacisnie na szukaj :) (fajne przeyjscie, tylko ja chce podobnie ale efekt wysuwania sie :) ).

Ktos wie jak takie cos zrobic ??
Stig
Administrator
Posty: 938
Rejestracja: pn paź 04, 2004 10:52 am

Re: Rozwijane Menu

Post autor: Stig »

Może rozwiązanie zaprezentowane w artykule "Suckerfish Dropdowns" z ALA Ci w czymś pomoże...
Balas
Moderator
Posty: 252
Rejestracja: wt sie 02, 2005 12:53 pm
Lokalizacja: Inowroclaw
Kontakt:

Re: Rozwijane Menu

Post autor: Balas »

To moze sie tak spytam :)

Jak przy uzyciu Javascript'u + moze cos jeszcze :P uzyskac taki efekt ?? LINK
Balas
Moderator
Posty: 252
Rejestracja: wt sie 02, 2005 12:53 pm
Lokalizacja: Inowroclaw
Kontakt:

Re: Rozwijane Menu

Post autor: Balas »

Ktos pomoze kto sie zna ?? :)

Kod: Zaznacz cały

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>

<style>
.buttonA:VISITED {
    font-family: Tahoma, Verdana, "MS Sans Serif", "Arial CE", Arial, Helvetica;
    font-size: 8pt;
    color: #FFFFFF;
    text-decoration: none;
    font-variant: normal;
    font-weight: bold;
}

.buttonA:HOVER {
    font-family: Tahoma, Verdana, "MS Sans Serif", "Arial CE", Arial, Helvetica;
    font-size: 8pt;
    color: #FFFFFF;
    text-decoration: none;
    font-variant: normal;
    font-weight: bold;
}

.table_buttons {
	text-align: center;
	color: #FFFFFF;
   background-color: #000000;
}

.td_buttons { 
	border: 1px solid #CACACA;
	height: 18px;
	width:  78px;
}

.menuskin{
position:absolute;
width:165px;
background-color: #000000;
border: 1px solid #CACACA;
font-family: Tahoma, Verdana, "MS Sans Serif", "Arial CE", Arial, Helvetica;
line-height:18px;
z-index:100;
visibility:hidden;
}

.menuskin a{
text-decoration:none;
color: #ffffff;
padding-left:10px;
padding-right:10px;
}

</style>
<script>
//Pop-it menu- By Dynamic Drive
//For full source code and more DHTML scripts, visit http://www.dynamicdrive.com
//This credit MUST stay intact for use

var linkset=new Array()
//SPECIFY MENU SETS AND THEIR LINKS. FOLLOW SYNTAX LAID OUT

linkset[0]='<div class="menuitems"><a class="buttonA">XXX</a></div>'
linkset[0]+='<div class="menuitems"><a class="buttonA">YYY</a></div>'
linkset[0]+='<div class="menuitems"><a class="buttonA">ZZZ</a></div>'
linkset[0]+='<div class="menuitems"><a class="buttonA">NNN</a></div>'


////No need to edit beyond here

var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var ns6=document.getElementById
//var ns6=document.getElementById&&!document.all
var ns4=document.layers

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function showmenu(e,which, leftpos, toppos, abspos){

if (!document.all&&!document.getElementById&&!document.layers)
return

clearhidemenu()

var targ;

if (!e) var e = window.event;
if (e.target)
	targ = e.target;
else if (e.srcElement)
	targ = e.srcElement;

if (targ.tagName != 'TD') return

menuobj=ie4? document.all.popmenu : ns6? document.getElementById("popmenu") : ns4? document.popmenu : ""
menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobj

if (ie4||ns6)
menuobj.innerHTML=which
else{
menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=165 onmouseover="clearhidemenu()" onmouseout="hidemenu()">'+which+'</layer>')
menuobj.document.close()
}

menuobj.contentwidth=(ie4||ns6)? menuobj.offsetWidth : menuobj.document.gui.document.width
menuobj.contentheight=(ie4||ns6)? menuobj.offsetHeight : menuobj.document.gui.document.height

eventX=ie4? event.clientX-event.offsetX+30 : ns6? findPosX(targ)+30 : e.x;
eventY=ie4? event.clientY-event.offsetY+15 : ns6? findPosY(targ)+18 : e.y;

//Find out how close the mouse is to the corner of the window
var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX;
var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY;

//if the horizontal distance isn't enough to accomodate the width of the context menu
if (rightedge<menuobj.contentwidth)
//move the horizontal position of the menu to the left by it's width
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth
else
//position the horizontal position of the menu where the mouse was clicked
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX : eventX

//same concept with the vertical position
if (bottomedge<menuobj.contentheight)
menuobj.thestyle.top=ie4? document.body.scrollTop+eventY : eventY;
//menuobj.thestyle.top=ie4? document.body.scrollTop+eventY-menuobj.contentheight : eventY-menuobj.contentheight;
else
menuobj.thestyle.top=ie4? document.body.scrollTop+eventY : eventY;
menuobj.thestyle.visibility="visible";
return false
}

function contains_ns6(a, b) {
//Determines if 1 element in contained in another- by Brainjar.com
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}

function hidemenu(){
if (window.menuobj)
menuobj.thestyle.visibility=(ie4||ns6)? "hidden" : "hide"
}

function dynamichide(e){
if (ie4&&!menuobj.contains(e.toElement))
hidemenu()
else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
hidemenu()
}

function delayhidemenu(){
if (ie4||ns6||ns4)
delayhide=setTimeout("hidemenu()",1)
}

function clearhidemenu(){
if (window.delayhide)
clearTimeout(delayhide)
}

function highlightmenu(e,state){
if (document.all)
source_el=event.srcElement
else if (document.getElementById)
source_el=e.target
if (source_el.className=="menuitems"){
source_el.id=(state=="on")? "mouseoverstyle" : ""
}
else{
while(source_el.id!="popmenu"){
source_el=document.getElementById? source_el.parentNode : source_el.parentElement
if (source_el.className=="menuitems"){
source_el.id=(state=="on")? "mouseoverstyle" : ""
}
}
}
}

//if (ie4||ns6)
//document.onclick=hidemenu

</script>
<body bgcolor="#ffffff">


<div style="left: 131px; top: 161px; visibility: hidden;" id="popmenu" class="menuskin" onmouseover="clearhidemenu();highlightmenu(event,'on')" onmouseout="highlightmenu(event,'off');dynamichide(event)"></div>





<table border="0" cellpadding="0" cellspacing="0" width="800">
<tbody><tr valign="top">
<td colspan="1" width="468">
<table class="table_buttons" border="0" cellpadding="0" cellspacing="0">
<tbody><tr valign="top">
<td class="td_buttons" title="Nasze programy" onclick='this.bgColor="F7941D";showmenu(event,linkset[0], 30, 20, 143)' onmouseout='this.bgColor="000000";delayhidemenu()' bgcolor="#000000">TEST1</td>
</tr>

</body></html>
Mam takie cos :) Tylko jak zrobic zeby sie chowało nie po wyjechaniu tylko po ponownym nacisnieciu przycisku ?? :)
ODPOWIEDZ