Avatar billede okkels Nybegynder
16. januar 2007 - 15:05 Der er 5 kommentarer og
1 løsning

Aktivt (klikbart) baggrundsbillede på hele siden

Hej folkens

Et antageligt simpelt spørgsmål, som dog volder en del problemer:

Jeg vil gerne have lagt et billede ind som baggrund på min side - enten via background-tagget i <BODY> eller i en tabel, det er sådan set underordnet.

Det væsentlige er, at billedet skal være klikbart. Det kan f.eks. gøres at sætte billedet ind i en <TD> i stil med nedenstående:

<td background="mit_bg_billede.gif" onclick="location.href='http://www.destinationen.dk';">

Er klar over, at det også kan fixes vha. JavaScript i body-tagget, men uanset hvilken af de metoder jeg bruger, støder jeg på to problemer:

1) Det skal kun være baggrunden der er klikbar - dvs. der hvor der er indhold på min side (i form af en tabel) skal man selvfølgelig hverken kunne se baggrunden eller klikke på den.

2) I forlængelse af ovenstående støder jeg på problematikken, at det kun skal være når man kører musen over baggrunden, at man får en 'klik-cursor' frem. Andet forvirrer vist brugerne mere end godt er.

Er der nogen der kan hjælpe eller referere til et script, der kan bruges let og elegant, så er der 50 point og en stor takketale på vej... :-)

/K.O. Hansen
Avatar billede okkels Nybegynder
16. januar 2007 - 16:45 #1
Skal der flere point på bordet eller står folk uvisse over for problemet?
Avatar billede jokkejensen Novice
16. januar 2007 - 16:55 #2
det er en underlig  problem stilling..

men noget ala:

<div onclick="window.location=''" style="bagrund...;position:relative; width: 700px; margin: 0 auto;">
<div id="ditIndhold" style="position:absolute;z-index:500";>
skal så indeholde det ikke clickbare indhold
</div>
</div>

Ville være mit bud... det er lige psuedo kode :) ideen var at ligge noget absolut oven på det klikbare med en højere z-index, så det ikke kan klikkes på :)

/JJ
Avatar billede mclemens Nybegynder
16. januar 2007 - 18:20 #3
Kom først til denne:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">
html {background:url('http://www.eksperten.dk/img/elogo.png');height:100%;}
</style>

<script type="text/javascript">
window.onload=function(){
  elms=document.body.childNodes;
  for(i=0,j=elms.length;i<j;i++){
    elms[i].onmouseover=function(){noclick(true);};
    elms[i].onmouseout=function(){noclick(false);};
  }
}

function noclick(t){
  de=document.documentElement;
  de.style.cursor=t?"auto":"pointer";
  if(t)de.onclick=function(){};
  else de.onclick=function(){window.location.href="http://www.eksperten.dk";};
}
</script>

</head><body>
<div style="width:300px;background:#888;">aaa<br>aaa</div>
<br><br><br>
<div style="width:300px;background:#888;"><div style="width:200px;background:#999;">aaa<br>aaa</div></div>
<br><br><br>
<div style="width:400px;background:#888;"><div style="width:300px;background:#bbb;"><div style="width:200px;background:#999;">aaa<br>aaa</div></div></div>
</body></html>


... Men hvis musen var over baggrunden og opdater så kunne man ikke klikke fra start af (møllen kunne så vendes men så ville problemet være at man kunne klikke fra start af selvom man ikke var over bagrunden) ...

- En løsning på det problem kunne jeg ikke helt lave - det virker lidt gnidret:
(den timeout visning / skjulning på 500 ms er lidt voldsom ... )



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">
html {background:url('http://www.eksperten.dk/img/elogo.png');height:100%;}
</style>


<script type="text/javascript">
window.onload=function(){
  noclick(false);
  elms=document.body.firstChild.childNodes;
  for(i=0,j=elms.length;i<j;i++){
    elms[i].onmouseover=function(){noclick(true);};
    elms[i].onmouseout=function(){noclick(false);};
  }
  document.body.firstChild.style.display="none";
  setTimeout("document.body.firstChild.style.display='block';",500);
}

function noclick(t){
  de=document.documentElement;
  de.style.cursor=t?"auto":"pointer";
  if(t)de.onclick=function(){};
  else de.onclick=function(){window.location.href="http://www.eksperten.dk";};
}
</script>

</head><body><div>
<div style="width:300px;background:#888;">aaa<br>aaa</div>
<br><br><br>
<div style="width:300px;background:#888;"><div style="width:200px;background:#999;">aaa<br>aaa</div></div>
<br><br><br>
<div style="width:400px;background:#888;"><div style="width:300px;background:#bbb;"><div style="width:200px;background:#999;">aaa<br>aaa</div></div></div>
</div></body></html>
Avatar billede okkels Nybegynder
17. januar 2007 - 15:09 #4
Tak til Jokke og mclemens for gode bud.

Det blev sidstnævnte løsning, der vandt. Er ikke helt sikker på hvordan det fungerer, men det virker efter hensigten nu med udgangspunkt i mclemens' script, så hvis du smider et svar får du fluks pointene overført.

Tak for hurtig assistance!
Avatar billede mclemens Nybegynder
17. januar 2007 - 16:15 #5
Kommer her, er dog lidt træt af det skidt med den timeout.

Scriptet fungerer ved at sætte onmouseover og onmouseout på alle de første elementer i kildekoden - dog i sidste tilfælde alle elmenter inde i den første div. Så analyseres om musen går udentil eller indentil elementerne.

... Det kan give problemer, hvis du har brug for onmouseover eller out på de første elementer i markup strukturen (men det lyder til at det virkede ok) ...

- Her er lige et svar :)
Avatar billede mclemens Nybegynder
17. januar 2007 - 16:18 #6
Og tak for point :)
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