Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: CSS koodi ei toimi

Sivun loppuun

JuustoPala [30.06.2013 20:06:16]

#

Tämän koodin olisi tarkoitus tulostaa jotain vihreää, jonka sisällä on tekstiä, mutta vihreää ei tule.

<html>

<head><style type="text/css">
	      #box1{
		  background-color:green;
		  }
		  </style>
		  </head>
		  <div id="box1">asdas</div>

Ongelma saattaa olla todella aloittelijamainen, koska koodaan pitkästä aikaa css.

Metabolix [30.06.2013 20:08:24]

#

Kyllä se toimii. Olet mokaillut jotain testauksessasi. Tyhjennä selaimen välimuisti ja avaa sivu uudestaan.

JuustoPala [30.06.2013 20:30:56]

#

Koodi toimii testi.php-tiedostossa, muttei index.php:ssa. (nettisivuilla oleva lähdekoodi on 100% sama)

Ainut ero on se, että index.php:hen koodi tulee PHP:n kautta.
Ongelman luulisi nyt ensisilmäyksellä liittyvän siihen, että index.php:ssa tuo html/css-koodi tulostuu sivulle itsemäärittelemäni funktionin kautta.
Toivon että ongelmaan on ratkaisu, ja sanokaa jos tarvitsette jotain lisätietoa.

Metabolix [30.06.2013 20:56:38]

#

Jos tuo koodi on oikeasti sivulla, se myös oikeasti toimii. Vika on siis jossain muussa asiassa. Ehkä et ole osannut tulostaa koodia sivulle ollenkaan, tai ehkä et osaa päivittää sivua selaimella ja saat vain jonkin vanhan version.

Jos kerran mielestäsi vika on CSS-koodissa ja ”vihreää ei tule”, näkyykö sivulla siis kuitenkin teksti ”asdas”?

JuustoPala [30.06.2013 21:12:57]

#

Kyllä se "asdas" näkyy. Kun laitan molemmilla sivuilla "näytä lähdekoodi", koodi on aivan sama. Huomasin nyt testaillessani oudon jutun: vihreä väri ei näy luultavasti, koska php koodi on tämmöinen:

echo'
<head><style type="text/css">
          #box'.$boxid.'{
          '.$box1.'
          }
          </style>
          </head>
          <div id="box'.$boxid.'">asdas</div>
		  ';

Koodi lakkasi toimimasta, kun lisäsin tuon $box1-variablen. $box1 sisältää merkkijonon

background-color:green;

.
Lopputulos on siis HTML-kielessä ihan sama, mutta onko tämä joku PHP:n bugi vai?

Metabolix [30.06.2013 21:36:07]

#

PHP ei vaikuta asiaan, vaan HTML-koodi ratkaisee. Kuitenkin ilmeisesti tulostamassasi HTML-koodissa (ja CSS-koodissa) on jotain eroa, muuten se toimisi oikein.

JuustoPala [01.07.2013 00:43:17]

#

2h etsimisen jäälkeen taisin löytää syypään..

$box1 on tässä tilanteessa "green".
Se ei ole puhtaasti green, vaan periaatteessa "[tyhjä][tyhjä]green", koska käytän yhdessä vaiheessa koodia:

<?php

$box1[0] = "";
$box1[1] = "";

, kun $box1 on muodossa "cogreen".

Jos en käytä noita yllä mainittuja koodeja, tulee CSS:ässä "background-color:cogreen". Miten saan väännettyä $box1 arvoksi "green" "cogreen"istä? Yritin säätää jotain for-silmukalla mutten onnistunut.

henkkeli [01.07.2013 09:08:45]

#

$box1 = substr($box1, 2);

PHP: substr - Manual

btw - suosittelisin välttämään kaikenlaista inline css:ää. Jos oikein ymmärsin tarkoituksesi ja haluat värjätä elementin tiettyjen ehtojen mukaan, tee 2 erillistä classia, näille eri css-ominaisuudet ja laita php vain muuttamaan classin nimi koodista.

Metabolix [01.07.2013 12:01:58]

#

Tuossa onnistut sijoittamaan tekstiin nollatavuja, jotka ovat laittomia HTML:ssä ja monissa muissakin kielissä. Näet ne esimerkiksi funktiolla json_encode: "\u0000\u0000green".

The Alchemist [01.07.2013 15:57:15]

#

henkkeli kirjoitti:

$box1 = substr($box1, 2);

PHP: substr - Manual

Ei ei ei ei ei. Ei mitään helvetin purkkaa. Jos merkkijonossa on jotain roskaa, niin pitää olla lisäämättä sitä roskaa - ei myöhemmin kikkailla jotta sen saisi jotenkin leikeltyä pois.

jlaire [01.07.2013 21:53:21]

#

JuustoPala kirjoitti:

Miten saan väännettyä $box1 arvoksi "green" "cogreen"istä?

if ($box1 === "cogreen") {
    $box1 = "green";
}

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta