Avatar billede nathan Nybegynder
03. februar 2003 - 16:41 Der er 15 kommentarer og
3 løsninger

Hotspot med bagrund farver?

Hej,
Er det muligt?
Avatar billede frkolsen Nybegynder
03. februar 2003 - 16:43 #1
Hvad mener du - hva med en transparent gif?
Avatar billede Slettet bruger
03. februar 2003 - 16:47 #2
Du skal nok uddybe spm...
Avatar billede nathan Nybegynder
03. februar 2003 - 17:07 #3
ok, Jeg har et kort over en by og jeg skal vise nogle punkter eller firekanter med farver på kortet. Punkt koordinater er dynamiske og skal placeres forhold til by kort.
Jeg kan evt. bruge <area> til laver dynamiske hotspots men den bliver transparent. Hvordan kan jeg lave hotsport med en baggrund farve? eller kan det løses på anden måde?
Avatar billede callesen Praktikant
03. februar 2003 - 17:23 #4
Hvis billedet ligger i en tabel eller i et lag - og hotspot'ene må være firkantede, kan du ligge nogle små usynlige lag (div'er) ind på positionen og gøre dem synlige med onmouseover.
Avatar billede nathan Nybegynder
03. februar 2003 - 17:29 #5
hotsports skal være synlig heletiden!
Avatar billede cdc Novice
03. februar 2003 - 17:37 #6
<snip> fra spm.:http://www.eksperten.dk/spm/305393

<ole>

/cdc >> Jeg er zq ved at få rigtig dårlig samvittighed over at bombe alle dine svar  :)
Idéen er for såvidt god nok ... men du kan vist ikke rigtig klikke på area'et, når der ligger et lag og skygger.
Jeg har tilladt mig at lave et andet forslag, som faktisk er ganske 'sexy', når jeg selv skal sige det - og lidt selvfedme går jeg jo aldrig af vejen for  :D

<html>
<head>
<style type="text/css">
#mapDiv {
    position: absolute;
    background-color: #336699;
    border: 1px dashed #000000;
    filter: Alpha(opacity=30);
    -moz-opacity: 0.3;
    font-size: 1px;
    visibility: hidden;
    z-index: 2;
}
</style>
<script type="text/JavaScript">
var actLink, d = document;
function getPos(elm){
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
}
function showMap( mArea ) {
    actLink = mArea.href;
    var pos, mD = d.getElementById("mapDiv");
    pos = getPos( d.getElementById("myPic") );
    mC = mArea.coords.split(",");
    mD.style.left = parseInt(mC[0]) + pos.x;
    mD.style.top = parseInt(mC[1]) + pos.y;
    mD.style.width = parseInt(mC[2]) - parseInt(mC[0]);
    mD.style.height = parseInt(mC[3]) - parseInt(mC[1]);
    mD.style.visibility = "visible";
}
function hideMap() {
    d.getElementById("mapDiv").style.visibility = "hidden";
}
</script>
</head>
<body>
<div id="mapDiv" onclick="location.href=actLink;" onmouseout="hideMap();">&nbsp;</div>

<img id="myPic" src="alle_On.gif" width="164" height="201" usemap="#test" border="0">

<map name="test">
    <area href="#" shape="rect" coords="7,5,96,178" onmouseover="showMap(this);">
    <area href="#" shape="rect" coords="101,99,160,198" onmouseover="showMap(this);">
    <area href="#" shape="rect" coords="124,6,158,40" onmouseover="showMap(this);">
</map>
</body>
</html>

Mit eksempel tager kun højde for rektangulære areas, men det burde så vidt jeg kan se ikke volde problemer i det skitserede tilfælde.
Try it out  :)

/mvh
</bole>

</snip>

/cdc
Avatar billede callesen Praktikant
03. februar 2003 - 17:37 #7
Så læg en <div style="position:absolute;height:20px;width:20px;top:30px;left:40px;border:1px solid #000000;background-color:#ff0000;"></div> hvor du styrer størrelsen med width og height - placeringen med top og left. Hvis du vil ha' den ikke-firkantet kan du i stedet for background-color lægge en background-image:(url=din_sti/og_fil.gif) ind.
Avatar billede nathan Nybegynder
03. februar 2003 - 18:00 #8
cdc> tak for svaret. men det kan jeg ikke bruge..  :(
her er lidt mere forklaring.
jeg har et bykort, så har jeg nogle punkter på kortet(x,y) koordinater har jeg med forhold til kortet(ikke forhold til skarmen/browser vindue)
siden har jeg programmeret i ASP og scriptet henter både kort og bunkter fra en database. dvs. både kort og punkter dynamiske.
Jeg vil gerne viser punkterne med en en lille image eller en lille firekant med farve f.eks rød.
så snart siden er loaded, skal den bare vise punterner på rigtig koordinater, og der ingen mouseover. dvs. punkterne er "statistiske" indtil man tryk på reload!
Avatar billede nathan Nybegynder
03. februar 2003 - 18:00 #9
skarmen=skærmen
Avatar billede cdc Novice
03. februar 2003 - 18:19 #10
Ok du fik svar til dit spm. Du skulle måske sørge for at bruge lidt mere tid på dit spm. så man ved hvad man skal svare på, og ikke som nu gette sig til hvad du tænker.
Avatar billede callesen Praktikant
03. februar 2003 - 20:49 #11
Så prøv:
<div STYLE="padding:0px;line-height:5px;height:510px;width:709px;">
    <div style="position:relative;height:5px;width:5px;top:30px;left:40px;border:1px solid #000000;background-color:#ff0000;">&nbsp;</div>
    <div style="position:relative;height:5px;width:5px;top:130px;left:140px;border:1px solid #000000;background-color:#ff0000;">&nbsp;</div>
    <div style="position:relative;height:5px;width:5px;top:180px;left:140px;border:1px solid #000000;background-color:#ff0000;">&nbsp;</div>
    <IMG SRC="din_sti/dit_kort.png" BORDER="0" WIDTH="709" HEIGHT="510" ALIGN="top">
</div>
Avatar billede olebole Juniormester
04. februar 2003 - 04:02 #12
<ole>

Du kan også servere et mere slankt dokument, der er lidt hurtigere at få ned gennem skorstenen og så lade klienten gøre arbejdet. De fleste maskiner står jo alligevel og strutter af ubrugt CPU-kraft og RAM  ;o)

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

<html>
<head>
    <title>..:: Kort ::..</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.spot {
    position: absolute;
    font-size: 1px;
    background-color: #ff0000;
    visibility: hidden;
    z-index: 1;
}
</style>
<script type="text/JavaScript">
var spotW, spotH, p, d=document;
spW = 10;  // Bredde af spot
spH = 10;  // Højde af spot
//  Array af punkt-koordinater:
p = new Array("12,43", "35,120", "60,35", "85,110");

function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
}
function writeSpots() {
    var a, spA;
    a = new Array();
    for ( i=0; i<p.length; i++ ) {
        a[a.length] = "<div id=\"sp"+i+"\" class=\"spot\" style=\"width:"+spW+";height:"+spH+";\">&nbsp;</div>";
    }
    d.write(a.join(""));
}
function placeSpts() {
    var oSp, spL, spT, pos = getPos( d.getElementById("kort") );
    for ( i=0; i<p.length; i++ ) {
        spA = p[i].split(",");
        spL = Math.round( pos.x+parseInt(spA[0])-(spW/2) );
        spT = Math.round( pos.y+parseInt(spA[1])-(spH/2) );
        oSp = d.getElementById( "sp"+i );
        oSp.style.left = spL;
        oSp.style.top = spT;
        oSp.style.visibility = "visible";
    }
}
window.onload = window.onresize = placeSpts;
</script>
</head>
<body>

<div align="center">
    <img src="dit_pic.gif" id="kort" width="100" height="130">
</div>

<script type="text/JavaScript">writeSpots();</script>
</body>
</html>

/mvh
</bole>
Avatar billede olebole Juniormester
04. februar 2003 - 04:18 #13
Ups ... lokal-variablen 'spA' skal ikke erklæres i 'writeSpots()':
  var a;
...men i 'placeSpts()':
  var spA, oSp, spL, spT, pos = getPos( d.getElementById("kort") );

Sorry  ;o)
Avatar billede nathan Nybegynder
04. februar 2003 - 10:57 #14
både callesen og olebole løsninger virker fint. så I skal have nogle point. cdc har prøvet hjælpe, så han skal også ha' nogle points.

callesen, kan du ikke lave it svar, så kan jeg give dig noget point?
Avatar billede callesen Praktikant
04. februar 2003 - 16:37 #15
jo-da
Avatar billede cdc Novice
04. februar 2003 - 17:31 #16
tanx :o)
Avatar billede olebole Juniormester
04. februar 2003 - 17:52 #17
takker  ;o)
Avatar billede callesen Praktikant
04. februar 2003 - 20:12 #18
flere takker ;-?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester