Avatar billede tknudsen Nybegynder
12. september 2001 - 14:01 Der er 18 kommentarer og
1 løsning

automatisk bg farve skift via css

Kan jeg automatisk skifte baggrundsfarven i en tabel så den feks skifter imellem hvid/grå - altså så hver anden linie er hvid henholdsvis grå ?
Avatar billede dezigner Nybegynder
12. september 2001 - 14:04 #1
Ja det kan man da godt

kig her
http://www.html.dk/scripts/css/00002/
Avatar billede tknudsen Nybegynder
12. september 2001 - 14:07 #2
det der står i det eksempel skal man da selv styre - det er ikke automatisk

jeg vil gerne ha farven til at ændre sig uden at jeg skal bekymre mig om om jeg skriver i linie 1 eller 2
Avatar billede jakoba Nybegynder
12. september 2001 - 14:24 #3
det er vist kun link kommandoen (måske andre aktive elementer) der understøtter en :hover style.
Avatar billede jakoba Nybegynder
12. september 2001 - 14:25 #4
<table, <tr og <td gør ihvertfald ikke. sorry :(
Avatar billede callesen Praktikant
12. september 2001 - 14:33 #5
Dette fra javascriptsource skifter automatisk:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML>
<HEAD>
<!-- Minus AutoDato -->
    <TITLE>[Ingen titel]</TITLE>
<META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3\">

<!-- THREE STEPS TO INSTALL 2-WAY BACKGROUND IMAGES SLIDES:

  1.  Copy the coding into the HEAD of your HTML document
  2.  Add the onLoad event handler into the BODY tag
  3.  Put the last coding into the HEAD of your HTML document - Optional  -->

<!-- STEP ONE: Paste this code into the HEAD of your HTML document  -->

<HEAD>

<SCRIPT LANGUAGE=\"JavaScript\">

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
// (C) 2001 www.CodeLifter.com
// http://www.codelifter.com
// Free for all users, but leave in this  header

// =======================================
// set the following variables
// =======================================

// Set speed (milliseconds)
var speed = 3000

// Specify the image files
var Pic = new Array() // don\'t touch this
// to add more images, just continue
// the pattern, adding to the array below

Pic[0] = \'images/1.jpg\'
Pic[1] = \'images/2.jpg\'
Pic[2] = \'images/3.jpg\'
Pic[3] = \'images/4.jpg\'

// do not edit anything below this line

var t
var j = 0
var p = Pic.length

var preLoad = new Array()
for (i = 0; i < p; i++){
  preLoad[i] = new Image()
  preLoad[i].src = Pic[i]
}

function runBGSlideShow(){
  if (document.body){
  document.body.background = Pic[j];
  j = j + 1
  if (j > (p-1)) j=0
  t = setTimeout(\'runBGSlideShow()\', speed)
  }
}
//  End -->
</script>
<style>
body{

background-position: 10 10;
}
</style>
</HEAD>

<!-- STEP TWO: Insert the onLoad event handler into your BODY tag  -->

<body onload=\"runBGSlideShow()\">

<!-- STEP THREE: Copy this code into the HEAD of your HTML document  -->


Method One - Positionable Images
----------

<!-- Put the following style sheet in the <head> of
your page.  Normally it will go *before* the script above.

<style>
body{
background-repeat: no-repeat;
background-position: 10 10;
}
</style>

Set the position x y in pixels in the background-position
element to position the images in the page.  Do not use
commas between the values! -->


Method Two - Full Page-Space Background
----------

Easy - just omit the style script above from the page.
The background images will then repeat across the page, as
usual.


<p><center>
<font face=\"arial, helvetica\" size\"-2\">Free JavaScripts provided<br>
by <a href=\"http://javascriptsource.com\">The JavaScript Source</a></font>
</center><p>

<!-- Script Size:  2.50 KB -->


</HEAD>
<BODY onload=\"runBGSlideShow()\">



</BODY>
</HTML>
Avatar billede callesen Praktikant
12. september 2001 - 14:34 #6
Glemte: Lav dine egne små grafikfiler til baggrund.
Avatar billede jakoba Nybegynder
12. september 2001 - 14:36 #7
glemte også (ligesom jeg) at læse spørgsmålet :(
Avatar billede roenving Novice
12. september 2001 - 14:36 #8
>>callesen ???
Han vil have alternerende farver i sine rows, som dezigners link gav.

>>jakoba, man må da kunne lave noget med element.children.style.backgroundColor

jes
Avatar billede jakoba Nybegynder
12. september 2001 - 14:40 #9
Kun hvis linierne er hvert sit html-element, ikke hvis de skal kunne ombrydes.

Det nærmeste jeg kan komme det er at lægge en 2farvet .gif som baggrund der er exactly dommelt så høj som en linie (dvs font-size i px), en lousy løsning.
Avatar billede callesen Praktikant
12. september 2001 - 14:45 #10
Nå sådan - skifte farve i hveranden TR eller TD - og ikke pixel-linje. Jo - det laves let i xml; men der skal vi ha\' koden for at se hvordan det gøres nemmest.
Avatar billede tknudsen Nybegynder
12. september 2001 - 14:46 #11
koden bliver genereret af noget utilgængeligt cgi - derfor spørgsmålet
Avatar billede tknudsen Nybegynder
12. september 2001 - 14:52 #12
jakoba >> har du et eksempel på roenvings forslag om at iterere sig igennen en tabels elementer ?
Avatar billede callesen Praktikant
12. september 2001 - 14:55 #13
Lav to forskellige TR-klasser i stylesheet med     background-color:#FFFFFF; og en med #999999;  og kald dem i \'hveranden\' TR; men det er der ikke megen automatik over.
Avatar billede tknudsen Nybegynder
12. september 2001 - 15:04 #14
med:

tbl.children[0].children[0].cells[0];

kan jeg tilgå hver celle i en given tabel
Avatar billede roenving Novice
12. september 2001 - 15:14 #15
Jes !!
=·]
Avatar billede tknudsen Nybegynder
12. september 2001 - 15:23 #16
faktisk er det med følgende kode en smule lettere:

function setBGColor()
{
    var tbl = document.getElementById(\'tbl\');
    var rowCount = tbl.children[0].children.length;
    var colCount = tbl.children[0].children[0].cells.length;

    var x;
    var y=0;

    var cName = \'\';

    while(y<rowCount)
    {
        x = 0;
        while(x<colCount)
        {
            if(x%2==0)
                cName = \'colEven\';
            else
                cName = \'colUneven\';

            tbl.children[0].children[y].cells[x].className = cName;
            x++;
        }
        y++;
    }
}


så skal de 2 css klasser bare deineres...

:-)
Avatar billede jakoba Nybegynder
12. september 2001 - 15:25 #17
ja det er rimeligt nemt.
Giv hele tabellen et navn hvis du har mulighed for det. Og hent så tabel objektet med
  var dintabel = document.all[\'tabelnavn\'])
(Ellers kommer du til at søge dig frem til den med fx:
  var dintabel;
  for (var i=0; document.all.length>i; i++)
      if ( document.all[i].tagName.toUpperCase() == \'TABLE\' ] {
          dintabel = document.all[i];
          break;
      };
)

Så er du klar til at klatre rundt i tabellen og ændre baggrundsfarver:

var tadm, trow, tcel;  // underniveaoer.
var f, i, j, k;            // tællevariable.
var farvecyklus = new Array( \'#BBBBBB\', \'#EEEEEE\' )
    f = 0
    tadm = dintabel.children;
    for ( i=0; tadm.length>i; i++ ) { // thead, tbody, tbottom
        trow = tadm.children;
        for ( j=0; trow.length>j; j++ ) { // rækker i tabellen
              f = 1-f;    // skift til næste farve
              tcel = trow.children;
              for ( k=0; tcel.length>k; k++ ) { // celler i rækken
                  tcel[k].style.background = farvecyklus[f];
              }; //endfor tcel
        }; //endfor trow
    }; //endfor tadm

men det der bliver farvet er altså hele celler.

mvh JakobA
 
Avatar billede tknudsen Nybegynder
12. september 2001 - 15:25 #18
eneste MEN er at jeg går ud fra at den første række indeholder antallet af alle kolonner - så faktisk er det ikke rigtig godt da denne funktion nok ikke kan bruges til tabeller med span\'ede felter !!

problemet er bare at det er kolonnerne jeg vil farve
Avatar billede jakoba Nybegynder
12. september 2001 - 15:33 #19
du mener lodret? det er praktisk taget det samme:

    for ( i=0; tadm.length>i; i++ ) { // thead, tbody, tbottom
        trow = tadm.children;
        for ( j=0; trow.length>j; j++ ) { // rækker i tabellen
              tcel = trow.children;
              f=0;  // start forfra i hver række
              for ( k=0; tcel.length>k; k++ ) { // celler i rækken
                  f = 1-f;    // skift til næste farve
                  tcel[k].style.background = farvecyklus[f];
              }; //endfor tcel
        }; //endfor trow
    }; //endfor tadm

men ja, det bliver gevaldig grimt hvis du har colspan=2 eller mere i nogen af cellerne.

mvh JakobA
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