Avatar billede Slettet bruger
26. august 2011 - 13:23 Der er 8 kommentarer og
1 løsning

Floating DIV ved markør, men skift side?

Hej eksperter.

Jeg har ét problem med ét af mine scripts.
Når jeg holder musen over fx et billed, viser den en tidligere skjult div og tildeler den samme position som min musemarkør.

Problemet er nu, at hvis markøren er helt ude i højre side af skærmen, vil div'en - og dermed teksten - komme udenfor skærmbilledet.

Enten skal jeg have den til, at vide hvornår teksten vil ramme kanten af skærmbilledet og dermed rette div'en ind, så den ikke går ud af billedet.
Eller, få div'en til at stå til VENSTRE for markøren.

Jeg aner ikke hvilken der er nemmest, men begge metoder vil hjælpe, nok primært den første metode :)

Koderne ser således ud:

HTML:

<span onmouseover='ShowContent('talks1'); return true;' onmouseout='HideContent('talks1'); return true;'>Samtaler</span>

<div id='talks1' style='z-index: 99; display: none; position: absolute; background: #e2ebee; border: 1px solid #999999; padding: 10px;'>hej</div>


JS:


var cX = 0; var cY = 0; var rX = 0; var rY = 0;

function UpdateCursorPosition(e) {
  cX = e.pageX;
  cY = e.pageY;
}

function UpdateCursorPositionDocAll(e) {
  cX = event.clientX;
  cY = event.clientY;
}

if (document.all)
  document.onmousemove = UpdateCursorPositionDocAll;
else
  document.onmousemove = UpdateCursorPosition;

function AssignPosition(d) {
  if (self.pageYOffset) {
    rX = self.pageXOffset;
    rY = self.pageYOffset;
  }
  else if (document.documentElement && document.documentElement.scrollTop) {
    rX = document.documentElement.scrollLeft;
    rY = document.documentElement.scrollTop;
  }
  else if (document.body) {
    rX = document.body.scrollLeft;
    rY = document.body.scrollTop;
  }
  if (document.all) {
    cX += rX;
    cY += rY;
  }
  d.style.left = (cX+10) + "px";
  d.style.top = (cY+10) + "px";
}

function HideContent(d) {
  if (d.length < 1)
    return;
  document.getElementById(d).style.display = "none";
}

function ShowContent(d) {
  if (d.length < 1)
    return;
  var dd = document.getElementById(d);
  AssignPosition(dd);
  dd.style.display = "block";
}


Nogen der kan hjælpe? :)
Avatar billede olebole Juniormester
26. august 2011 - 18:04 #1
<ole>

Undgå en masse problemer og kik på OverLib

/mvh
</bole>
Avatar billede Slettet bruger
28. august 2011 - 20:02 #2
Kan ikke lige se hvorfor jeg skal have et JS bibliotek med en masse unødvendige funktioner, når jeg blot skal bruge dén lille ændring her :)
Avatar billede olebole Juniormester
28. august 2011 - 20:45 #3
Jeg skal ikke afvise, du ikke kan se, hvorfor - men årsagen er som sagt, at erfaringen viser, det sparer dig for en masse problemer.

Hvis det blot var en lille ændring, havde du sikkert forlængst foretaget den - eller fået en masse gode forslag i tråden her  *o)
Avatar billede Slettet bruger
28. august 2011 - 22:32 #4
Tjo, det kan jeg vel godt give dig ret i :)

Jeg kan dog ikke helt gennemskue licensen? Jeg skal videresælge et produkt hvori denne funktion er implementeret. Er dette tilladt med OverLib? :)
Avatar billede olebole Juniormester
28. august 2011 - 22:50 #5
Som jeg læser licensen, må du gerne implementere biblioteket på et site, du sælger - forudsat, du inkluderer de oprindelige copyright betingelser
Avatar billede Slettet bruger
28. august 2011 - 23:06 #6
Jamen så siger jeg mange tak for hjælpen :)
Smid gerne et svar for det alternative svar du gav :)
Avatar billede olebole Juniormester
28. august 2011 - 23:24 #7
Jeg samler ikke points, men tak for tilbudet. Læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede Slettet bruger
29. august 2011 - 00:07 #8
Du har da ellers rigeligt af :)

Lukket :)
Avatar billede olebole Juniormester
29. august 2011 - 00:25 #9
Jeg har været her i 12 år, men samler ikke længere. Andre skal også have en chance - og jeg kan jo ikke rigtig bruge points til noget  =)
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