Avatar billede wondergirl Nybegynder
21. marts 2002 - 09:20 Der er 21 kommentarer og
1 løsning

Faneblade system

Hej

Jeg har bygget et lille grafisk faneblad system op. Ved ikke om det kan lade sig gøre sådan som jeg har tænkt det. Lige nu er det bygget op sådan:
en tabel opdelt i to. en række med 5 celler i toppen, hvor der er 5 faneblade, en række nedenunder, hvor der er en iframe, hvor siderne skal åbnes.

Det jeg godt kunne tænke mig, er en mouseover-effekt. Ikke bare hvilken som helst. Men sådan at hver faneblad skifter ved alm. mouseover (har både on og off version af hver fane), men når man har klikket på fanen forbliver den i samme farve som on-fanen. Og når der klikkes på en ny fane, skifter den til on-farven, og den anden får off-farve igen.

Noget der kan laves i javascript? Eller skal det laves i ASP?

Bedste svar (med en løsning) belønnes med 100 p
Avatar billede cthun Nybegynder
21. marts 2002 - 09:30 #1
Er det noget lign. dette???

http://kold-kontrast.subnet.dk/
Avatar billede cthun Nybegynder
21. marts 2002 - 09:30 #2
det er lavet i ren html!
Avatar billede cthun Nybegynder
21. marts 2002 - 09:30 #3
Det er kun index og links det virker
Avatar billede wondergirl Nybegynder
21. marts 2002 - 09:37 #4
Hej Casper igen...Naaah ikke helt. Der skal også være billedskift ved mouseover. Lige nu står de sådan:
fane1_off - fane2_off - fane3_off - fane4_off - fane5_off
Og når musen er over fane1
fane1_on - fane2_off - fane3_off - fane4_off - fane5_off
Når der er klikket på fane1:
fane1_on - fane2_off - fane3_off - fane4_off - fane5_off
Når musen herefter f.eks. er over fane 2:
fane1_on - fane2_on - fane3_off - fane4_off - fane5_off
Når der f.eks. er klikket på fane2:
fane1_off - fane2_on - fane3_off - fane4_off - fane5_off
Avatar billede wondergirl Nybegynder
21. marts 2002 - 09:40 #5
Casper...sidder på ICQ: 27428543 i dag.
Avatar billede tknudsen Nybegynder
21. marts 2002 - 09:43 #6
<HTML>
<HEAD>
<style>

.selected
{
  background-color: #FF0000;
}

.active
{
  background-color: #FF0000;
}

.inactive
{
  background-color: #FFFFFF;
}
</style>
<script>

function setAllInactive()
{
  var objs = document.getElementsByTagName('div');
  for(var i=0;i<objs.length;i++)
  if(objs[i].id.indexOf('fane')==0)
    objs[i].className = 'inactive';
}

function selectThis(obj)
{
  setAllInactive();
  obj.className = 'selected';
}

function setTabActive(obj)
{
  obj.className = 'active';
}

function setTabInactive(obj)
{
  if(obj.className!='selected')
  obj.className = 'inactive';
}


</script>
</HEAD>
<BODY>
<table>
  <tr>
    <td><div id="fane1" onMouseOver="setTabActive(this)" onMouseOut="setTabInactive(this)" onClick="selectThis(this)" class="selected">fane 1</div></td>
    <td><div id="fane2" onMouseOver="setTabActive(this)" onMouseOut="setTabInactive(this)" onClick="selectThis(this)">fane 2</div></td>
    <td><div id="fane3" onMouseOver="setTabActive(this)" onMouseOut="setTabInactive(this)" onClick="selectThis(this)">fane 3</div></td>
  </tr>
</table>

</BODY>
</HTML>
Avatar billede tknudsen Nybegynder
21. marts 2002 - 09:45 #7
Her har du noget, som gør hvad du beder om...

Ønsker du forskellige baggrundsbillder kan du tilføje disse i de forskellige styles:

background-image: url("sti_til_billede");
Avatar billede wondergirl Nybegynder
21. marts 2002 - 09:45 #8
Duer nok ikke fane1-5 (on+off) er gradiske elementer, ikke nok at der skiftes farve.
Avatar billede wondergirl Nybegynder
21. marts 2002 - 09:46 #9
Oooh...Prøver lige.
Avatar billede tknudsen Nybegynder
21. marts 2002 - 09:47 #10
Løsningen er et eksempel.

Hvis du vil ha andre elementer i fane bladene kan du jo bare vise/gemme dem!
Avatar billede tknudsen Nybegynder
21. marts 2002 - 09:47 #11
se evt http://www.w3schools.com/dhtml/dhtml_css.asp for info omkring billeder i css
Avatar billede wondergirl Nybegynder
21. marts 2002 - 10:19 #12
Det eksempel du har lavet, kræver jo at man gammer teksten og ikke selve fanen, for at linket åbner.
Avatar billede tknudsen Nybegynder
21. marts 2002 - 10:20 #13
ikke forstået...?
Avatar billede wondergirl Nybegynder
21. marts 2002 - 10:21 #14
rammer even
Avatar billede wondergirl Nybegynder
21. marts 2002 - 10:24 #15
Linkmetoden er klik på et linktekst ikke et billede. Billedet ligger nu som baggrund. Vil jo gerne have haft, at det var hele selve fane-området der linkede til siden, frem for et tekstområde (link)...Billedlink i stedet for tekstlink.

<HTML>
<HEAD>
<style>

.selected
{
  background-image: url('faneOn.gif');
  font-weight:bold;}
}

.active
{
  background-image: url('faneOn.gif');
  font-weight:bold;}
   
}

.inactive
{
  background-image: url('faneOff.gif');
}
</style>
<script>

function setAllInactive()
{
  var objs = document.getElementsByTagName('div');
  for(var i=0;i<objs.length;i++)
  if(objs[i].id.indexOf('fane')==0)
    objs[i].className = 'inactive';
}

function selectThis(obj)
{
  setAllInactive();
  obj.className = 'selected';
}

function setTabActive(obj)
{
  obj.className = 'active';
}

function setTabInactive(obj)
{
  if(obj.className!='selected')
  obj.className = 'inactive';
}


</script>
</HEAD>
<BODY>
<table>
  <tr>
    <td width="120">
    <div id="fane1" onMouseOver="setTabActive(this)" onMouseOut="setTabInactive(this)" onClick="selectThis(this)" class="selected" style="width: 120; height: 20">&nbsp;<a href="faner2_main.htm">Forside</a></div></td>
    <td width="120"><div id="fane2" onMouseOver="setTabActive(this)" onMouseOut="setTabInactive(this)" onClick="selectThis(this)" class="inactive" style="width: 120; height: 20">&nbsp;<a target="I1" href="logo.htm">fane 2</a></div></td>
    <td width="120"><div id="fane3" onMouseOver="setTabActive(this)" onMouseOut="setTabInactive(this)" onClick="selectThis(this)" class="inactive" style="width: 120; height: 20">&nbsp;fane 3</div></td>
    <td width="120"><div id="fane4" onMouseOver="setTabActive(this)" onMouseOut="setTabInactive(this)" onClick="selectThis(this)" class="inactive" style="width: 120; height: 20">&nbsp;fane 4</div></td>
    <td width="120"><div id="fane5" onMouseOver="setTabActive(this)" onMouseOut="setTabInactive(this)" onClick="selectThis(this)" class="inactive" style="width: 120; height: 20">&nbsp;fane 5</div></td>
  </tr>
  <tr>
    <td width="600" colspan="5">
    <iframe name="I1" width="619" height="150" src="faner2_main.htm"></iframe></td>
  </tr>
</table>

</BODY>
</HTML>
Avatar billede tknudsen Nybegynder
21. marts 2002 - 10:28 #16
prøv at sætte de anchors udenom <div>-taget
Avatar billede wondergirl Nybegynder
21. marts 2002 - 10:31 #17
Anchors???
Avatar billede tknudsen Nybegynder
21. marts 2002 - 10:33 #18
eks:

<div id="fane2" onMouseOver="setTabActive(this)" onMouseOut="setTabInactive(this)" onClick="selectThis(this)" class="inactive" style="width: 120; height: 20">&nbsp;<a target="I1" href="logo.htm">fane 2</a></div>

skal laves om til

<a target="I1" href="logo.htm"><div id="fane2" onMouseOver="setTabActive(this)" onMouseOut="setTabInactive(this)" onClick="selectThis(this)" class="inactive" style="width: 120; height: 20">&nbsp;fane 2</div></a>

så <a>-taget (anchor) omslutter <div>-taget - og så kune det måske være en ide at lave cursoren om til hand (style="cursor:hand") på div taget
Avatar billede wondergirl Nybegynder
21. marts 2002 - 10:38 #19
Takker :-)
Avatar billede jakoba Nybegynder
21. marts 2002 - 11:49 #20
Oh well forsent som sedvanlig :-))
Nå men her er den:

Det kan laves i javascript, og godt det samme for det ville tage ubehagligt lang tid hvis hvert billedskift skulle ned om serveren og vende :-)
Normalt ville jeg nok lave det med 3 vesioner af hvert billede (off, on, aktivt) men det er lisså nemt at lade on og aktivt være samme billede.

<script type='text/javascript'> <!--
// mouseover hvor klikket billed beholder on-billedet

var preOverImgs  = new Array( 'onpic0.gif',    'onpic1.jpg',
'onpic2.gif',    'onpic3.jpg',
'onpic4.gif' );
var tmp,i;
for (i=0; i<preOverImgs.length; i++ ) { // preload on- og aktiv- billeder
tmp = preOverImgs[i];
preOverImgs[i] = new Image();
preOverImgs[i].src = tmp;
}

var onHusk = null;  // det html image objekt der er aktivt lige nu

function onOver( imgId ) {
var tmp = document.images[ imgId ] || null;
if ( !tmp ) {
alert( "kodefejl i onOver(), forkert billednavn: '" +imgId +"'" );
}
//alert( "tmp er " +tmp );
if ( !tmp.initieret ) {
// vi initierer kun her i onOver for onOver er altid det første
// der sker for et billede.
tmp.outSrc  = tmp.src;
tmp.overSrc  = preOverImgs[ imgId.substring( imgId.length-1 ) ].src;
//NB: sidste bogstav i billedets navn (imgId) skal være et ciffer
//  svarende til on-billedets placering i preOnImgs og preAktivImgs.
tmp.initieret = true;
}
if ( tmp != onHusk ) { // den aktive skal ikke sættes
tmp.src = tmp.overSrc;
}
}; //end onOver( string )

function onOut( imgId ) {
var tmp = document.images[ imgId ] || null;
if ( !tmp ) {
alert( "kodefejl i onOut(), forkert billednavn: '" +imgId +"'" );
}
if ( tmp != onHusk ) { // den aktive må ikke afstilles
tmp.src = tmp.outSrc;
}
}; //end onOut( string )

function onKlik( imgId ) {
var tmp = document.images[ imgId ] || null;
if ( !tmp ) {
alert( "kodefejl i onKlik(), forkert billednavn: '" +imgId +"'" );
}
if ( tmp != onHusk ) {
if ( onHusk ) var oldAktivId = onHusk.name;
onHusk = tmp;
if ( oldAktivId ) onOut( oldAktivId );
}
}; //end onKlik( string )

// --> </script>

</head>

<BODY>
<p>billederne til dine menypunkter skal have navne, og skal omsluttes af hvert sit link:</p>

<p><a href="#"
onmouseover="onOver('img0');"
onmouseout="onOut('img0');"
onclick="onKlik('img0');"
><img name='img0' src='offpic0.gif' width='100' height='37' border=0></a><br>
<a href="#"
onmouseover="onOver('img1');"
onmouseout="onOut('img1');"
onclick="onKlik('img1');"
><img name='img1' src='offpic1.gif' width='100' height='37' border=0></a><br>
<a href="#"
onmouseover="onOver('img2');"
onmouseout="onOut('img2');"
onclick="onKlik('img2');"
><img name='img2' src='offpic2.jpg' width='100' height='37' border=0></a><br>
<a href="#"
onmouseover="onOver('img3');"
onmouseout="onOut('img3');"
onclick="onKlik('img3');"
><img name='img3' src='offpic3.gif' width='100' height='37' border=0></a><br>
<a href="#"
onmouseover="onOver('img4');"
onmouseout="onOut('img4');"
onclick="onKlik('img4');"
><img name='img4' src='offpic4.gif' width='100' height='37' border=0></a></p>

...

</body>
</html>

kan ses i 3-billed version på
http://www.jakoba.dk/eksperten/mouseover/exp187987.html

mvh JakobA
Avatar billede wondergirl Nybegynder
22. marts 2002 - 11:11 #21
Jakoba: Fantastisk...Lige det jeg var på udkig efter. Jeg var lidt for hurtig til at acceptere. Har lidt guf til dig som tak her:
http://www.eksperten.dk/spm/188462
Avatar billede jakoba Nybegynder
22. marts 2002 - 11:46 #22
oj da. kommer straks :)
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