Opera CSS Tutorial v.1
Sunday, November 12, 2006 11:50:46 AM
Ponieważ już kilka osób prosiło mnie o pomoc (dwie to też kilka
) z CSS'em operowym, postanowiłem wypuścić kilku częściowego tutoriala na ten temat.
W internecie można w łatwy sposób znaleźć sporo tutoriali dotyczących CSS'a i rzeczywiście na początek są one nieocenione. Potem człowiek zaczyna dostrzegać błędy ich autorów... Do tego dochodzą te wszystkie prawa autorskie... Dlatego lepiej, jak sam coś sklecę:-)
Ok, zaczynajmy. Teoretycznie na początku powinniśmy zapoznać się ze specyfikacją CSS'a, która znajduje się na stronie W3C pod tym linkiem, zwłaszcza, jeżeli zależy nam na tym, by pisać zgodnie ze specyfikacją. Jeżeli nam nie zależy, możemy sobie darować tę lekturę.
1.1. Czym jest CSS? Zacznijmy od tego, czym jest CSS: Cascading Style Sheets (CSS) is a simple mechanism for adding style (e.g. fonts, colors, spacing) to Web documents. Czyli w skrócie, CSS służy do tego, by nadawać obiektom (znacznikom) dokumentów sieciowych atrybuty definiujące ich wygląd (takie, jak kolor czcionki, tło, krój czcionki itp.) oraz zachowanie (najechanie myszką na obiekt, kliknięcie itp.).
1.2. Przypisywanie atrybutów do obiektów (tagów). Przypisywanie atrybutów do obiektów (tagów) HTML można robić na dwa sposoby: przez klasę i przez ID. Czym są klasy i ID? W skrócie są to bloki instrukcji, które mają być wykonane na tagu, do którego zostaną przypisane. Klasa różni się ok ID tym, iż w kodzie HTML może być tylko jedno odwołanie do ID, natomiast takie ograniczenie nie obowiązuje klas.
1.3. Definiowanie klas i ID. Klasę obiektu w CSS definiujemy w następujący sposób:
tag.nazwa_klasy { blok instrukcji }
bądź:
.nazwa_klasy { blok instrukcji }
W pierwszym przypadku klasa nazwa_klasy będzie mogła być użyta tylko dla tagu <tag>. Np.:
<style> div.klasa1 { color: red; } </style>
<div class="klasa1">Tekst w div</div> // wyświetli czerwony tekst
<p class="klasa1">Tekst w p</div> // wyświetli zwykły tekst
Natomiast w drugim wypadku, klasa nazwa_klasy może być użyta dla dowolnego tagu. Np.:
<style> .klasa1 { color: red; } </style>
<div class="klasa1">Tekst w div</div> // wyświetli czerwony tekst
<p class="klasa1">Tekst w p</div> // wyświetli czerwony tekst
ID definiuje się w ten sam sposób:
tag#nazwa_ID { blok instrukcji }
bądź:
#nazwa_ID { blok instrukcji }
Analogiczne są również różnice między tymi dwoma zapisami (z tym, że zamiast class="" używamy id="").
1.4. Implementacja kodu CSS do HTML'a. Nasz styl możemy implementować do kodu strony na dwa sposoby: 1. Przez tag style:
<head><style type="text/css"> ... </style></head>2. Przez zaimplementowanie zewnętrznego pliku z kodem:
<head><link rel="stylesheet" href="style.css" type="text/css" /></head>Odwoływanie się do konkretnych klas i ID przedstawiłem przy ich definiowaniu.
Na pierwszy raz to chyba wystarczy. Nie rozpisywałem się nad listą atrybutów dla klas i ID, a to z prostego powodu, że jest ich od zarąbania
. Chętnych do zapoznania się z listą atrybutów odsyłam tutaj.
W następnej części tutoriala przedstawię budowę CSS'a Opery i postaram się go omówić.







Borys # Sunday, November 12, 2006 12:50:11 PM
1. Nie bardzo rozumiem rozróżnienia pomiędzy klasami a ID. To znaczy rozumiem, ale jak niby ma wyglądać odwoływanie się do kilku klas jednocześnie w kodzie HTML? Przecież jeśli instrukcje są sprzeczne, to wtedy wszystko zacznie się kiełbasić. Jeżeli klasa A zaznacza tekst na czerwono, a klasa B na zielono, to jeśli jakiś element HTML-owego tekstu oznaczę jako obie klasy... to co wtedy?
2. Gdy zrozumiem to, o co pytam powyżej, chciałbym dowiedzieć się, kiedy dobrze jest używać klas, a kiedy ID.
3. Punkt 1.4 -- rozumiem, że po prostu definicję styli albo wrzucamy w całości do nagłówka pliku HTML-a, albo do osobnego pliku, a w rzeczonym nagłówku podlinkowujemy tylko ten plik, tak?
Maciej KrasuskiKirtan # Sunday, November 12, 2006 1:04:48 PM
KasiaNimue Grafell # Sunday, November 12, 2006 7:32:43 PM
Marcinsuperlolek # Friday, February 1, 2008 12:57:23 PM
<style type="text/css"> .redColor {color: #f00;} .justifyLeft { text-align: left;} </style> <div class="redColor justifyLeft"> sample text </div>i to jest poprawne<style type="text/css"> .colorRed { color:#f00;} .colorGreen {color: #0f0;} </style> <div class="colorRed colorGreen"> sample text </div>wowczas przypisany bedzie ostatni kolor, gdyz kolor z pierwszej klasy bedzie nadpisany przez kolor klasy drugiej. Idac tym tropem dalej, dochodzimy do innych bajerow, ktore niestety sa niedozwolone teoretycznie i validator ich nie lubi...<style type="text/css"> .margins { margin: auto; margin-top: 5px; width: 200px; } </style> <div class="margins"> sample text </div>wywali blad validatora, ale bedzie to tylko warning a nie error, czyli teoretycznie dopuszczalne..<style type="text/css"> .dlaIe { text-align: center; } .pozycjonuj { margin: auto; text-align: left; width: 200px; } </style> <div class="dlaIe"> <div class="pozycjonuj"> sample text </div> </div>voila...Marcinsuperlolek # Friday, February 1, 2008 12:59:27 PM
Maciej KrasuskiKirtan # Friday, February 1, 2008 5:39:09 PM
Hm, niby czemu .margins wywola blad walidatora?
Marcinsuperlolek # Friday, February 1, 2008 10:21:06 PM
o ile mi wiadomo na chwile obecna, wszystkie dostepne na rynku przegladarki obsluguja redefinicje tak wiec nie ma bolu.. nawet stary poczciwy ie 5.x to lyka...
aaa tak z innej beczki, dogrzebalem sie nawet osotanio do jednej rzeczy, mianowicie jak zmusic ie do wyswietlania png'ow bez trickow js'a, czysty css, fakt, validator sie pluje, ale mamy za to pngi w ie
Maciej KrasuskiKirtan # Saturday, February 2, 2008 4:22:34 PM
Co do redefinicji. O ile pamietam mozna zrobic cos w stylu:
.margins { margin: 5px auto; }I nie pamietam, zeby mi sie plul walidator na redefinicji ;]
Co do pngow: A czego uzywasz? opacity?
Marcinsuperlolek # Saturday, February 2, 2008 6:11:42 PM
a uzywam filtrow...dx
Unregistered user # Friday, May 23, 2008 7:12:31 PM
Unregistered user # Monday, July 13, 2009 3:36:09 PM
Marcinsuperlolek # Monday, July 13, 2009 8:04:39 PM
dodatkowo nie zaleca sie stosowania position:relative z niezerowymi wartosciami top/left (nie okresliles ich :/)
z drugiej strony faktem jest, ze nie okreslenie top/left z position:relative sprawia iz element ktory ma taki atrybut stanie sie tzw elementem zawierajacym i nie zmieni to jego wygladu. Kolejna natomiast bolaczka, lub tez nie, jest fakt iz position:relative nie dziala na tabelach.. ale na ich zawartosci.
I to by bylo chyba na tyle ode mnie