Avatar billede samsayit Nybegynder
06. oktober 2007 - 00:26 Der er 10 kommentarer og
2 løsninger

Skifte farve på sidste ord

Jeg har set på nogle blogs at f.eks. overskriften har en anden farve på det sidste ord, f.eks. hvor teksten "Adam og Eva" er delt i to farver hvor "Adam og" er i sort og "Eva" er i blå.
Jeg går stærkt ud fra at brugeren ikke sidder og aktivt skifter farve hver gang denne opretter et indlæg.

Kan man ved hjælp af CSS gøre dette?
Avatar billede olebole Juniormester
06. oktober 2007 - 00:57 #1
<ole>

Nej, det er der ingen CSS-kommando til

/mvh
</bole>
Avatar billede nielle Nybegynder
06. oktober 2007 - 09:42 #2
Nej, brugeren gør nok ikke - men det er fuldt tænkeligt at blog-softwaren gør det.

I så fald skal softwaren selv finde det sidste ord og placere det i en <span> og sætte en anden farve på denne. Det kunne snildt gøres med noget regexp.
Avatar billede kalp Novice
06. oktober 2007 - 11:00 #3
Nu ved jeg ikke hvad du koder, men det er nok noget man ville fikse i sit scripting sprog normalt.. om det så er PHP,ASP, ASP.NET osv.

men dette virker uanset hvad du benytter selv - måske kan de 2 andre deltagere herinde "optimere" på det, men tænkte, at du i hvertfald kunne få et bud:)
Måske er det fint nok til det du skal bruge!

olebole >> jeg antager, at brugen af innerHTML i dette tilfælde er valid nok når der skal udskrives HTML:-) kender ikke en anden metode i hvertfald.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script type="text/javascript">
function ModifyColors()
{
  var label = document.getElementById("Title");
  var innerText = label.firstChild.nodeValue;
  var values = innerText.split(" ");
  var newText = new String();
  if(values.length > 2)
  {
    for(var i = 0; i < values.length; i++)
    {
      if(i == 0)
      {
      newText += "<span style=\"color:blue;\">"+ values[i] + "</span>&nbsp;";
      }
      if(i == 1)
      {
      newText += "<span style=\"color:red;\">"+ values[i] + "</span>&nbsp;";
      }
      if(i == 2)
      {
      newText += "<span style=\"color:green;\">"+ values[i] + "</span>&nbsp;";
      }
      //Du kan lave flere if sætninger hvis det er nødvendigt - kan nok aldrig blive for mange når det kun er en overskrift du skal style.
    }
    label.innerHTML = newText;
  }
}
</script>

</HEAD>
<BODY onload="ModifyColors();">

<label id="Title">Adam og Eva</label>

</BODY>
</HTML>
Avatar billede kalp Novice
06. oktober 2007 - 11:05 #4
hvis det kun er ét ord der skal farves og det er det sidste kan koden ændres til

if(values.length > 2)
  {
    for(var i = 0; i < values.length; i++)
    {
      if(i == values.length-1)
      {
      newText += "<span style=\"color:blue;\">"+ values[i] + "</span>&nbsp;";
      }
      else
      {
        newText += "<span>"+ values[i] + "</span>&nbsp;";
      }
      //Du kan lave flere if sætninger hvis det er nødvendigt - kan nok aldrig blive for mange når det kun er en overskrift du skal style.
    }
    label.innerHTML = newText;
  }
Avatar billede olebole Juniormester
06. oktober 2007 - 15:21 #5
Nej, brugen af innerHTML hører sammen med font-, blink- og marquee-tags - store frameset og layout i kæmpe tabel-helveder - til i WWW's yngre jernalder i midten/slutningen af 90'erne.
Det kan bruges til en hurtig 'cowboy-test', men er ikke noget, der kan bruges i seriøs kode  :)
Avatar billede kalp Novice
06. oktober 2007 - 17:41 #6
Nu kunne jeg selvfølgelig lige lave et par tests videre for at få det til at fungerer på en anden måde, men hvem siger det bliver mere korrekt af den årsag:P
Jeg prøvede med .nodeValue men det udskrev bare html'en.

så hvordan er den korrekte måde, at udskrive min html på?
Avatar billede olebole Juniormester
06. oktober 2007 - 17:53 #7
kalp >> I moderne frontend kodning giver det ikke mening at tale om HTML i strenge. Det har det i virkeligheden aldrig gjort, da innerHTML, outerHTML og innerText aldrig har været valide properties - men tilbage i 90'erne var der ikke andre muligheder for at ændre dokumentet.
Siden IE5.0 og NS6.0 har der dog været mulighed for at bruge DOM i stedet, så der er ingen grund til at bruge invalid kode - som ovenikøbet fungerer dårligt sammen med anden scripting.

samsayit >> Hvilket serversprog bruger du? Det bedste ville være at gøre det på serveren, så der f.eks. kommer til at stå:
    <h2>En eller anden <span>overskrift</span></h2>

- og så f.eks. i stylesheet'et:

h2 {
    color: blue;
}
h2 span {
    color: red;
}
Avatar billede samsayit Nybegynder
06. oktober 2007 - 18:21 #8
Mange tak til jer alle. Jeg vil forsøge mig med forslagene i næste uge når jeg er tilbage på pinden. Hvis I opretter svar så laver jeg en pointfordeling.
Avatar billede kalp Novice
06. oktober 2007 - 21:24 #9
:)
Avatar billede olebole Juniormester
07. oktober 2007 - 02:34 #10
Gjort  :)
Avatar billede nielle Nybegynder
07. oktober 2007 - 10:25 #11
Mit biddrag har vis være beskedent  øjeblikket, så jeg står over på denne her.

Men du kan som sagt også klare det på serveren i stedet for på klienten. :^)
Avatar billede olebole Juniormester
07. oktober 2007 - 19:17 #12
Tak for points  :)
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