Avatar billede cecil Nybegynder
30. december 2006 - 22:49 Der er 18 kommentarer og
1 løsning

Hvordan gør jeg et anker aktive?

Hej

Jeg har en Menu på min side. Den består af

<A target="side" href="Forside/index.html">FORSIDEN</A>
<A target="side" href="Foto/index.html">FOTO</A>
Osv.

Når jeg har trykket på et link (anker) skifter det farve og jeg kan se, at det er det aktive.

Men når jeg indlæser siden første gang har alle link samme farbe. Jeg ønsker at Forsiden som er indlæst har farve som akrivt.

Hvordan får jeg et anker til at fremstå som aktivt?
Avatar billede bufferzone Praktikant
30. december 2006 - 22:55 #1
Når du trykker på et link, så bliver det ikke aktivt, så bliver der "visited"

Du kan styre farven med CSS ved at sætte en farve på de tre forskellige tilstande.

Her klippet fra min egen CSS som du kan se på adressen http://www.bufferzone.dk/buff.css

a:link { color: rgb(252,252,252); text-decoration: none; }
a:visited { color: rgb(195,210,250); text-decoration: none; }
a:active {     color: rgb(204,153,51); }

Link er før du har trykket på linket
Visited er efter
Aktiv er når du holder curseren over
Avatar billede bufferzone Praktikant
30. december 2006 - 23:01 #2
Hvisd u vil se hvordan du tilføjer et eksterne Style sheet til dine sider, så kik på bufferzone.dk her kan du se koden der tilføjer buff.css
Avatar billede Slettet bruger
30. december 2006 - 23:17 #3
En lille rettelse:
Active er når du har klikket på linket
Hover er når du holder curseren over

Jeg går ud fra, du har et frameset eller noget i den stil, siden din activeformatering virker.


Såfremt du bruger a:active til at formatere, kan du i din onload event sætte dit forsidelink active (hust at adde id="forside" til dit forside link):

<body onload="document.getElementById('forside').setActive();'>

<A target="side" href="Forside/index.html" id="forside">FORSIDEN</A>

/1.
Avatar billede thesurfer Nybegynder
31. december 2006 - 00:28 #4
Jeg vil mene at beskrivelse er sådan :-)

link: Det er bare linket, når det hverken er aktiv, visited eller hover
active: når musenknappen er nede på linket
visited: når siden linket linker til, har været besøgt
hover: når cursoren er placeret hen over linket
Avatar billede mclemens Nybegynder
31. december 2006 - 00:45 #5
active: når fokus er rettet på
linket (keyboard eller mus)

Enig med Thesurfer om resten :)
Avatar billede Slettet bruger
31. december 2006 - 10:34 #6
active: Ikke når fokus er rettet på. Når linket er aktivt. Det bliver aktivt når man følger det (eller sætter det aktivt med javascript som i mit eksempel). Dermed kan man kun se, om et link bliver aktivt, hvis target er sat.

/1.
Avatar billede mclemens Nybegynder
01. januar 2007 - 02:03 #7
Test fil:

<!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><meta name="robots" content="index, follow">

<style type="text/css">
a {font-size:large;font-weight:bold;}

a:link {color:#f00;}
a:visited {color:#f0f;}
a:hover {color:#555;}
a:active {color:#ff0;}
</style>

</head><body>
<a href="./1.html">1.html</a>
<a href="./2.html">2.html</a>
</body></html>


active:

tab henover links i IE: Links skifter til gul farve
tab henover links i FF: Links skifter ikke til gul farve
- tryk på højre museknap eller tryk og hold venstre museknap inde på linket og linket skifter til gul farve ... prøv evt. med venstre museknap trykket ned at trække musen væk fra linket og giv så slip på museknappen - linket forbliver gult, fokus er sat til linket (test evt. ved at ramme enter)



test evt. også denne fil:

<!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><meta name="robots" content="index, follow">

<style type="text/css">
a {font-size:large;font-weight:bold;}

a:link {color:#f00;}
a:visited {color:#f0f;}
a:hover {color:#555;}
a:active {color:#ff0;}
</style>

</head><body onload="document.getElementsByTagName('a')[0].focus();">
<a href="./1.html">fokuseret link</a>
</body></html>


... der er som sagt åbenbart browser variationer på det active, og det lægger sig grundlæggende på at linket er aktivt, men det betyder ikke at det kun lyser når man følger det eller sætter det aktivt med dit script, som forresten ikke virker ? (se nedenstående). Jeg er ikke enig i "Dermed kan man kun se, om et link bliver aktivt, hvis target er sat."


Nedenstående skulle så iflg. scriptet fra 30/12-2006 23:17:46 forårsage at linket bliver aktivt og dermed gult, det virker dog ikke helt gult hos mig ?


<!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><meta name="robots" content="index, follow">

<style type="text/css">
a {font-size:large;font-weight:bold;}

a:link {color:#f00;}
a:visited {color:#f0f;}
a:hover {color:#555;}
a:active {color:#ff0;}
</style>

</head>
<body onload="document.getElementById('forside').setActive();'>

<A target="side" href="Forside/index.html" id="forside">FORSIDEN</A>
</body></html>

...

...

... Men efter at have testet FF lidt grundigere vil jeg nok
definere active som både det Thesurfer skrev samt det jeg skrev

active: Når museknappen er nede på linket, har været nede på linket og så er trukket ud og herefter museknappen slippet, når focus er sat til linket med højremuseknap - og i IE (måske flere?) når man har flyttet focus til det via tab og dermed gjort linket aktivt.
Avatar billede mclemens Nybegynder
01. januar 2007 - 02:03 #8
P.s.: Hurra for standarder :-/
Avatar billede mclemens Nybegynder
01. januar 2007 - 02:28 #9
Jeg ved ikke om dette måske vil hjælpe på problemet med active, men kig evt. på det...


En fil der hedder activelink.js:
Gem filen som 1.html, åben den - gem den så som 2.html og åben den igen
- taget inde fra denne tråd: http://www.eksperten.dk/spm/732560

if(window.addEventListener)window.addEventListener("load", function(){wload();}, false);
else if(window.attachEvent)window.attachEvent("onload", function(){wload();});

function wload(){
  var links=document.getElementsByTagName("a");
  for(i=0,i2=links.length;i<i2;i++){
    if(links[i].href==window.location.href||links[i].href.replace("index.html","")==window.location.href){
      links[i].setAttribute("id","activelink");
      i=i2;
    }
  }
}



samt et html eksempel:

<!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><meta name="robots" content="index, follow">

<style type="text/css">
a{font-size:large;font-weight:bold;}
a:link{color:#f00;}
a:active,a#activelink{color:#ff0;}
a:visited{color:#f0f;}
a:hover{color:#f55;}
</style>

<script type="text/javascript" src="activelink.js"></script>

</head><body>
<a href="1.html">1.html</a>
<a href="2.html">2.html</a>
</body></html>
Avatar billede mclemens Nybegynder
01. januar 2007 - 02:29 #10
Ups, det var ikke activelink.js filen, der skulle gemmes som 1.html testes og herefter 2.html, det var html eksemplet længere nede... sørg for at filerne lægger i samme mappe :)
Avatar billede Slettet bruger
02. januar 2007 - 08:07 #11
Erstat sidste ping i <body onload="document.getElementById('forside').setActive();'>
med en quote og så virker det her.
Avatar billede mclemens Nybegynder
02. januar 2007 - 12:30 #12
Det har du ret i, det virker i IE, men ikke i FF.
Denne virker også i IE, men ikke i FF:
<body onload="document.getElementById('forside').focus();">
Avatar billede olebole Juniormester
02. januar 2007 - 15:04 #13
<ole>

Undskyld, men har man mon ikke fanget en tangent i denne tråd?  =)

For mig at se, er det det klassiske problem: menu-linket til den side, jeg står på, skal være fremhævet ... evt. i en anden farve. Måden at løse det på er:

I forside-dokumentet:
<b>Forside</b> ||
<a href="products.html">Produkter</a> ||
<a href="about.html">Om firmaet</a> ||
<a href="contact.html">Kontakt</a> ||

I produkt-dokumentet:
<a href="forside.html">Forside</a> ||
<b>Produkter</b> ||
<a href="about.html">Om firmaet</a> ||
<a href="contact.html">Kontakt</a> ||

I about-dokumentet:
<a href="forside.html">Forside</a> ||
<a href="products.html">Produkter</a> ||
<b>Om firmaet</b> ||
<a href="contact.html">Kontakt</a> ||

... osv. Så kan man evt. også have noget font- og baggrundsfarve CSS på b-tags i menuen  =)

/mvh
</bole>
Avatar billede Slettet bruger
02. januar 2007 - 17:10 #14
Citat cecil: "Når jeg har trykket på et link (anker) skifter det farve og jeg kan se, at det er det aktive."

Man må gå ud fra, han kører frames eller noget i den stil - ellers ville linket ikke være aktivt, da man så ville blive redirectet til den nye side, hvor linket ville være visited.

Men eftersom cecil ikke har givet noget feed-back endnu, er det svært at vide, hvad han vil have.

/1.
Avatar billede mclemens Nybegynder
02. januar 2007 - 18:21 #15
Eller hun ...
Avatar billede Slettet bruger
02. januar 2007 - 19:54 #16
Hmm. god pointe.. det er en hem..
Avatar billede cecil Nybegynder
06. januar 2007 - 22:21 #17
Hej Alle

Undskyld jeg ikke har svaret. Har ikke fået mail på denne tråd. Så jeg vidste ikke I havde svaret. Jeg benytter ganske rigtigt frams. Siden er www.solskrænten.dk. Det er et fællseprojekt mellem min kæreste og mig.

Jeg har benyttet:

<body onload="document.getElementById('forside').setActive();'>
<A target="side" href="Forside/index.html" id="forside">FORSIDEN</A>

Som kvadratrodenaf1 foreslog. Og det virker efter lidt tilretning. I body skriver du ' det skal være ".

Men som sagt det løset mit problem.

Tak. Opret et svar og der er point.
Avatar billede cecil Nybegynder
06. januar 2007 - 22:24 #18
Jeg er imponeret over så simpelt det kan gøres.
Avatar billede Slettet bruger
15. januar 2007 - 21:16 #19
Hej cecil..

Sorry jeg ikke har svaret endnu, men jeg synes du skulle have en bedre løsning, der ikke kun virker i IE, men skulle først lige igennem et par eksamener. Nedenstående er testet i IE og FF.

Teorien bag:
#active refererer til alle elementer med id = "active"..
Kun forsidelinket har id="active".
funktionen select(obj) sætter id="" hvor id="active" - dvs. nu er der ikke nogen link med id="active". Det element, der bliver sendt som parameter får dernæst sat id="active". På denne måde vil der kun være et aktivt link af gangen..
Du skal tilføje onclick='select(this);' til alle dine links, som sender sig selv som parameter til select og dermed selv bliver aktiveret.

Det står dig selvfølgelig frit at bruge den første løsning.

<html>
<head>
    <style>
        #active {
            color: #C0C0C0;
            text-decoration:none;
        }
    </style>
    <script>
        function select(obj){
            document.getElementById("active").id = "";
            obj.id = "active";
        }
    </script>
</head>
<body>
    <a href='http://forside.htm' target='side' id='active' onclick='select(this);'>Forside</a>
    <a href='http://bagside.htm' target='side' onclick='select(this);'>Bagside</a>
    <a href='http://google.dk' target='side' onclick='select(this);'>Google</a>
</body>
</html>
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