Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wiele dokumentow xHTML = wiele CSS
Forum PHP.pl > Forum > Po stronie przeglądarki > CSS
y3ti
Czesc,

Ostatnio glowkuje sobie jak rozwiazac pewnien blachy z pozoru problem.
Mam strone www, ktora sklada sie z powiedzmy 10 dokumentow xhtml.
Kazdy z tych dokumentow budowany jest na podstawie danego szablonu, czyli
ten sam layout.

Problem pojawia sie w momencie kiedy chce, aby np.

1) w pierwszym dokumencie xhtml pierwszy akapit ma byc zielony, drugi czerwony
2) w drugim dokumencie xhtml pierwszy akapit ma byc niebieski, drugi brazowy
3) ....
4) ....
5) i tak dalej.

Chodzi mi o to, ze na kazdej stronie sa inne style css. Tutaj jeden wyraz moze miec kolor inny. Oczywiscie mozna uzyc klasy, ale gdy taki "czerwony akapit" wystepuje tylko w jednym dokumencie xhtml rozwiazanie jest brzydkie. Poza tym
takich oryginalnych fragmentow strony moze byc pelno i co kazdemu dawac klase?

Jedyne co mi przychodzi do glowy to:
- wszystko do jednego globalnego pliku css i tam takie male szczegoly dawac w klasy
- jeden artkusz styli css - globalny w ktorym bedziemy trzymac defincje calego niezmieniajacego sie layoutu, nawigacji oraz podstawowych selektorow dla body, p, h1, h2 itp. a takie oryginalne fragmenty jak czerwony akapit, ktore wystepuja tylko w jednym akapicie robic jako style wewnatrz atrybutu style="" np.

  1. <p style="color: red">Czerwony tekst</p>


- trzecie rozwiazanie, ktore m najbardziej by pasowalo to globalne definicje wrzucic do jednego zewnetrznego arkusza stylow oraz by kazda dokument xhtml posiadal swoj wlasny arkusz styli css np:

dokument1.html -> dokument.css
dokument2.html -> dokument.css

I wszystko bylo by ladnie gdyby nie nurtujace pytanie jak to zrealizowac, czy

1) globalny arkusz styli zaladowac poprzez <link rel=".. a drugi umiescic w <style>
2) globalny i lokalny arkusz styli zaladowac poprzez <link rel="..."

Co do punktu drugiego to jak bedzie wygladac sprawa jesli bedziemy robis "skorki" dla strony, czyli alternatywne arkusze stylow?

Z gory dziekuje za cenne uwagi i wskazowki.
sztosz
Moim zdaniem to jezeli te akapity różnią sie tylko kolorami, to wrzucić wszystko do jednego arkusza zewnętrznego. I wtedy:
  1. <p id="jakis_id" class="red">jakiś czerwony tekscior</p>
  2. <p id="jakis_inny_id" class="blue">jakiś niebieski tekscior</p>


A w CSS:
Kod
/* DEFINICJA WSZELKICH ID ITP, ELEMENTÓW STAŁYCH LAYA */
#jakis_id {
  /* CSS */
}

#jakis_inny_id {
  /* CSS */
}

/* DEFINICJA KOLORÓW AKAPITÓW */
.red {
  background-color:#FF0000;
}
.blue {
  background-color:#0033CC;
}
y3ti
Tak masz racje - jesli to bedzie prosty przypadek. Z tymi kolkami akapitow, chcialem powiedziec, ze sa elementy na stronie, ktore sa niepowtarzalne na innych (ten akapit pisany wyjatkowa taka i tak czcionka, odpowiednie marginesy, cos jest w ramce, cos ma tlo itp.).

Wyobrazmy sobie duzy serwis internetowy (do 1000 dokumentow xhtml) i w kazdym z nich sa elementy, ktore nie pojawiaja sie nigdzie indziej - badz pojawiaja sie w gora 3 dokumentach (np. nawigacja w dziale artykuly: kategorie, wyswietlanie, komentarze).

Chodzi mi w glownej mierzy o panowanie nad arkuszem css. Oczywiscie mozna wszystko wcisnac do jednego duzego arkusza, ale

1) Taki arkusz styli bedzie strasznie duzo wazyl. Mimo, ze zostanie pobrany tylko raz, to czesto mamy nastepujaca sytuacje. Uzytkownik wchodzi na strone glowna, klika na jeden link i wychodzi zamykajac okno przegladarki. Uzytkownik sciagnie duzy plik css mimo ze np. ok 87% jego definicji selektorow bedzie niepotrzebne (bo nie bedzie czytal newsow, komentarzy, spisu tresci ksiazki itp.)

2) Zarzadzanie takim duzym arkuszem styli jest niewygodne. Sam sie gubie jak mam 100+ roznych definicji w jednym arkuszu

Oczywiscie w niektorych przypadkach podawane przyklady to czysta sztuka dla sztuki, ale w koncu projektowanie www jest sztuka i kazdy chce to robic jak najlepiej. smile.gif

Pozdrawiam.
gekon
Ja raczej proponowałbym trzecie rozwiązanie: jeden główny oraz kilka, które zawierają szczegóły charakterystyczne dla danej strony.
Szczegóły ładnie można zrobić nadając id dla elementu body, np:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <title>Strona</title>
  4. </head>
  5. <body id="blue">
  6.  
  7. <p class="first">foo</p>
  8. <p class="second">bar</p>
  9.  
  10. </body>
  11. </html>

Kod
body#blue p.first { color:#0000FF; }
body#blue p.second { color:#00FF00; }

body#red p.first { color:#FF0000; }
body#red p.second { color:#00FF00; }


A jak wrzucać?

  1. <link rel="stylesheet" type="text/css" href="main.css" media="screen" />
  2. <link rel="stylesheet" type="text/css" href="shop.css" media="screen" />
  3.  
  4. <link rel="alternate" type="text/css" href="shop-light.css" media="screen" />
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.