Fura dolog a doctype-val
Üdv! Van egy scriptem, ami azt hivatott megoldani, hogy egy pont fölé húzáskor megjelenik egy kis téglalap, amiben lehet választani különböző linkek közül.
IE-n jól működik (fura...), de FF-on nem nagyon. Illetve akkor jó, ha a doctype részt kitörlöm a <head> részig... Ez elég fura és szerintem nem jó. Íme a kód:
Szívesen veszem az ötletet, mit lehet ezzel kezdeni, illetve milyen scriptet keressek az ilyen problémára (fontos, hogy image mapon is működjön!)
Köszi szépen
■ IE-n jól működik (fura...), de FF-on nem nagyon. Illetve akkor jó, ha a doctype részt kitörlöm a <head> részig... Ez elég fura és szerintem nem jó. Íme a kód:
<!--
.menuskin{
position:absolute;
width:165px;
background-color:menu;
border:2px solid black;
font:normal 12px Verdana;
line-height:18px;
z-index:100;
visibility:hidden;
}
.menuskin a{
text-decoration:none;
color:black;
padding-left:10px;
padding-right:10px;
}
#mouseoverstyle{
background-color:highlight;
}
#mouseoverstyle a{
color:white;
}
-->
</STYLE>
<script language="JavaScript1.2">
<!--
/*
Let?ltve a ThomasWebMuhely javascript arch?vum?b?l:
http://mitglied.lycos.de/thomaswebmuhely/
*/
var linkset=new Array()
// ITT LEHET BE?RNI A LINKEKET
linkset[0]='<div class="menuitems"><a href="aloldal/budapest.php">Budapest - információk</a></div>'
linkset[0]+='<div class="menuitems"><a href="aloldal/budapest_pizzak.php">Budapest - étlap</a></div>'
linkset[1]='<div class="menuitems"><a href="aloldal/erd.php">Érd - információk</a></div>'
linkset[1]+='<div class="menuitems"><a href="aloldal/erd_pizzak.php">Érd - étlap</a></div>'
var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var ns6=document.getElementById&&!document.all
var ns4=document.layers
function showmenu(e,which){
if (!document.all&&!document.getElementById&&!document.layers)
return
clearhidemenu()
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 : ns6? e.clientX : e.x
eventY=ie4? event.clientY : ns6? e.clientY : e.y
var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX
var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY
if (rightedge<menuobj.contentwidth)
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth
else
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX : ns6? window.pageXOffset+eventX : eventX
if (bottomedge<menuobj.contentheight)
menuobj.thestyle.top=ie4? document.body.scrollTop+eventY-menuobj.contentheight : ns6? window.pageYOffset+eventY-menuobj.contentheight : eventY-menuobj.contentheight
else
menuobj.thestyle.top=ie4? document.body.scrollTop+event.clientY : ns6? window.pageYOffset+eventY : eventY
menuobj.thestyle.visibility="visible"
return false
}
function contains_ns6(a, b) {
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()",500)
}
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>
<DIV id="popmenu" class="menuskin" onMouseover="clearhidemenu();highlightmenu(event,'on')" onMouseout="highlightmenu(event,'off');dynamichide(event)">
</DIV>
<img src="pic/terkep.jpg" usemap="#terkep" border="0">
<map name="terkep">
<area shape="rect" coords="267,169,343,187" href="#" onMouseover="showmenu(event,linkset[0])" onMouseout="delayhidemenu()"">
<area shape="circ" coords="255,188,14" href="#" onMouseover="showmenu(event,linkset[1])" onMouseout="delayhidemenu()"">
.menuskin{
position:absolute;
width:165px;
background-color:menu;
border:2px solid black;
font:normal 12px Verdana;
line-height:18px;
z-index:100;
visibility:hidden;
}
.menuskin a{
text-decoration:none;
color:black;
padding-left:10px;
padding-right:10px;
}
#mouseoverstyle{
background-color:highlight;
}
#mouseoverstyle a{
color:white;
}
-->
</STYLE>
<script language="JavaScript1.2">
<!--
/*
Let?ltve a ThomasWebMuhely javascript arch?vum?b?l:
http://mitglied.lycos.de/thomaswebmuhely/
*/
var linkset=new Array()
// ITT LEHET BE?RNI A LINKEKET
linkset[0]='<div class="menuitems"><a href="aloldal/budapest.php">Budapest - információk</a></div>'
linkset[0]+='<div class="menuitems"><a href="aloldal/budapest_pizzak.php">Budapest - étlap</a></div>'
linkset[1]='<div class="menuitems"><a href="aloldal/erd.php">Érd - információk</a></div>'
linkset[1]+='<div class="menuitems"><a href="aloldal/erd_pizzak.php">Érd - étlap</a></div>'
var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var ns6=document.getElementById&&!document.all
var ns4=document.layers
function showmenu(e,which){
if (!document.all&&!document.getElementById&&!document.layers)
return
clearhidemenu()
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 : ns6? e.clientX : e.x
eventY=ie4? event.clientY : ns6? e.clientY : e.y
var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX
var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY
if (rightedge<menuobj.contentwidth)
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth
else
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX : ns6? window.pageXOffset+eventX : eventX
if (bottomedge<menuobj.contentheight)
menuobj.thestyle.top=ie4? document.body.scrollTop+eventY-menuobj.contentheight : ns6? window.pageYOffset+eventY-menuobj.contentheight : eventY-menuobj.contentheight
else
menuobj.thestyle.top=ie4? document.body.scrollTop+event.clientY : ns6? window.pageYOffset+eventY : eventY
menuobj.thestyle.visibility="visible"
return false
}
function contains_ns6(a, b) {
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()",500)
}
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>
<DIV id="popmenu" class="menuskin" onMouseover="clearhidemenu();highlightmenu(event,'on')" onMouseout="highlightmenu(event,'off');dynamichide(event)">
</DIV>
<img src="pic/terkep.jpg" usemap="#terkep" border="0">
<map name="terkep">
<area shape="rect" coords="267,169,343,187" href="#" onMouseover="showmenu(event,linkset[0])" onMouseout="delayhidemenu()"">
<area shape="circ" coords="255,188,14" href="#" onMouseover="showmenu(event,linkset[1])" onMouseout="delayhidemenu()"">
Szívesen veszem az ötletet, mit lehet ezzel kezdeni, illetve milyen scriptet keressek az ilyen problémára (fontos, hogy image mapon is működjön!)
Köszi szépen
Rossz irány
Bár ezt én részemről nem igazán tudom értelmezni, ha jobban leírod és/vagy mutatsz példát, biztosan el tudunk indítani valamerre.
Doctype: Az a megoldás sosem lesz cross-browser, amiben nincs doctype, ezt felejtsd is el, hogy kitörlöd.
Nem is akarom kitörölni. És
Igazából az lenne a legjobb, ha azt meg tudnátok mondani, milyen néven keressem a scriptet, ami onmousover-rel működik. Méghozzá: pl ez egy LINK. amikor link fölé húzom az egeret, akkor felugrik (akár egy rejtett div) egy kis ablak (de nem popup, vagy ilyesmi), és arra rá lehet húzni az egeret, s ki lehet választani a tartalmát.
Gyakorlatilag kb mint egy menü, csak imagemapon is működnie kéne...:)
Tisztán CSS?
http://www.cssplay.co.uk/menus/
Továbbra is azt mondom, hogy keress egy példát, ami nagyjából azt csinálja amit akarsz, és ha nem tudod kigobózni, akkor biztosan tudunk segíteni.
Szóval megtaláltam amilyet
http://www.cssplay.co.uk/menu/solar_map.html
Itt található, ki is próbáltam, de igen bonyolúlt ennek az átírása... Ilyen eredményt kapó egyszerűbb esetleg nincs szerintetek?
így találtam fenn
Bocsi, azt én követtem el anno. Még a webbel barátkozásom hajnalán ollóztam össze pár cuccot hogy közzétegyem, akkoriban még kevés magyar nyelvű anyag volt elérhető. De tényleg nem nyúltam már hozzá vagy 6 éve. Talán le kéne gyalulni az egészet, ha nem frissítem - nem tudom...
Bocs az offért.
Hol kezdődik?
areaOffset
Az areaOffset plugin: