Ładowanie Ładowanie

Artykuł > Odkrywamy zaawansowane techniki CSS: złożone selektory

strony: « poprzednia 1 | ... | 7 | 8 | 9
wydrukuj: print publikuj: wykop dodaj do flakera Dodaj jako nius na OSnews.pl! delicious

Odkrywamy zaawansowane techniki CSS: złożone selektory

2009-09-30 08:23:00 | Piotr Ostalecki

:not()

Pseudoklasa negacji :not() pozwala odnosić się do elementów, które nie pasują do selektora w nawiasie.
Przykładowo, jeśli chcesz nadać styl wszystkim elementom input, oprócz tych, które są guzikami „submit”, możesz skorzystać poniższego selektora.

input:not([type="submit"]) { 
width: 200px; 
padding: 3px; 
border: 1px solid #000000; 
}

Kolejny przykład: chcesz ustalić większą czcionkę wszystkim akapitom, oprócz tego, który wyświetla datę i czas? Nic prostszego:

p:not(.date) { 
font-size: 13px; 
}

 

Obsługa przez przeglądarki

Pseudoklasa :not() nie jest obsługiwana nawet przez IE8. Niestety, oznacza to, że minie prawdopodobnie jeszcze sporo czasu zanim zacznie się ona często pojawiać w naszych arkuszach CSS.

 

Pseudoelementy

Użycie pseudoelementów to sposób na odniesienie się do elementów, które tak naprawdę nie istnieją w kodzie HTML, takich jak pierwsza litera czy też pierwsza linia bloku tekstu.

Pseudoelementy występowały w CSS 2.1, ale specyfikacja trzeciego wydania określa, że powinny być zapisywane z podwójnym dwukropkiem, dla odróżnienia od pseudoklas. Te pseudoelementy, które występowały w CSS 2.1, były zapisywane przy użyciu pojedynczego dwukropka, przeglądarki powinny więc obsługiwać obydwa sposoby zapisu („:” oraz „::”). Natomiast nowe pseudoelementy, wprowadzone w CSS3, będą musiały być zapisywane tylko i wyłącznie z podwójnym dwukropkiem.

 

::first-line

Odnosi się do pierwszej linii bloku lub nagłówka/elementu tabeli.

Najczęściej jest stosowany, aby „upiększyć” blok tekstu, np. zmieniając pierwszą linię w kapitaliki.

h1 + p::first-line { 
font-variant: small-caps; 
}

Jeśli czytałeś dokładanie ten artykuł, wiesz z pewnością, że powyższy selektor odnosi się do pierwszej linii akapitu, który występuje zaraz za tagiem <h1>.

Krokiem dalej jest zmiana stylu konkretnego akapitu, w tym przypadku pierwszego dziecka DIV-a o klasie post.

div.post > p:first-child::first-line { 
font-variant: small-caps; 
}

::first-letter

Ten pseudoelement odnosi się do pierwszego znaku (litery) danego bloku tekstu. Podobnie jak ::first-line jest często stosowany, aby wyróżnić ten element tekstu. Jeśli zastosujesz oba pseudoelementy, zarówno ::first-letter, jak i ::first-line, właściwości tego pierwszego będą ważniejsze niż te, odziedziczone od ::first-line.

p { 
font-size: 12px; 


p::first-letter { 
font-size: 24px; 
float: left; 
}

Ten selektor ma najdłuższą specyfikację, spośród wszystkich w CSS. Warto przeczytać ją przed zastosowaniem tego pseudoelementu (to odnosi się także do każdego innego, który stosujesz).

 

::before and ::after

::before oraz ::after są stosowane, aby dodać treści do dokumentu poprzez CSS. Treść wstawiona odziedziczy większość właściwości elementu, do którego jest wstawiana.

Teraz wyobraź sobie, że do opisu każdego z wykresów na Twojej stronie chcesz dodać tekst „Wykres numer X”. Możesz osiągnąć to bez konieczności stosowania języków skryptowych, a nawet bez ingerencji w HTML.

.post { 
counter-reset: image; 
}   
p.description::before { 
content: "Wykres numer " counter(image) ": "; 
counter-increment: image; 
}

Ale o co chodzi? Najpierw tworzymy licznik o nazwie image. Następnie, przed każdym akapitem o klasie description wstawiamy, korzystając z pseudoelementu ::before treść „Wykres numer” oraz obecną wartość licznika. Dodatkowo, po każdym użyciu należy wartość licznika inkrementować (counter-increment: image;).

:before oraz ::after są najczęściej stosowane z właściwością content, aby dodać krótkie zdania lub elementy do określonych miejsc na stronie. W powyższym przykładzie pokazałem, jak można je wykorzystać w poważniejszych zadaniach.


Obsługa przez przeglądarki

Pseudoelementy są obsługiwane przez IE8, pod warunkiem zapisu z jednym dwukropkiem. Wszystkie inne przeglądarki również obsługują te selektory.

 

Podsumowanie

Jeśli przebrnąłeś przez gąszcz pseudoklas, pseudoelementów i innych dziwnych selektorów, nadszedł czas abyś wypróbował je w praktyce. W razie problemów, czytaj specyfikacje W3C i pytaj na naszym forum.
A jeśli masz ochotę na eksperymenty, do swojego następnego projektu, zamiast stosować klasy i identyfikatory, przemyć kilka spośród opisanych selektorów CSS. Obiecuję, już nigdy nie będziesz chciał komplikować swojego kodu tymi niepotrzebnymi klasami i ID.

 

Przydatne linki

•    Keeping Your Elements’ Kids in Line with Offspring — A List Apart
•    Selectutorial - CSS selectors
•    A Look at Some of the New Selectors Introduced in CSS3
•    Selektory CSS 2.1, część pierwsza i druga
•    CSS 3 selectors explained
•    CSS selectors and pseudo selectors browser compatibility
•    10 Useful CSS Properties Not Supported By Internet Explorer
•    Styling a Poem with Advanced CSS Selectors

Najnowsze wiadomości
« poprzednia 1 | ... | 7 | 8 | 9

reklama

strony: « poprzednia 1 | ... | 7 | 8 | 9
wydrukuj: print publikuj: wykop dodaj do flakera Dodaj jako nius na OSnews.pl! delicious

Czytaj webhosting.pl:

Dyskusja

dodaj komentarz
0 + -
comnt #01 miklosz® 2009-09-30 09:42:48
miklosz Artykuł miesiąc jak dla mnie! Tak powinien wyglądać cały webhosting.pl!
------------------
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
0 + -
comnt #02 dAREuS® 2009-09-30 09:47:20
dAREuS Dzięki miklosz, staramy się. PS: miło, że znów Cię widać w serwisie.
------------------
dAREuS

Browser: Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.2.15 Version/10.00
0 + -
comnt #03 eimi® 2009-09-30 10:27:55
eimi Dziękujemy i witamy Cię Miklosz z przyjemnością. Obiecujemy, że będziemy starali się trzymać poziom, nie obiecujemy, że będziemy pisać w Wh tylko o CSS :).
------------------
Browser: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1) Gecko/20090805 Firefox/3.5.2
0 + -
comnt #04 sln 2009-09-30 10:41:46
sln Bardzo ciekawy artykuł. Pomimo, że sporo czasu koduję css dowiedziałem się kilku nowych, przydatnych rzeczy.



Pozdrawiam
------------------
Browser: Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.00
0 + -
comnt #05 MariuszT 2009-09-30 10:43:03
MariuszT Przyłączam się do gratulacji, bardzo potrzebne i ciekawe informacje, wszystko zrozumiałe.
------------------
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
0 + -
comnt #06 soran 2009-09-30 16:50:15
soran Naprawde pomocne informacje :) dzieki wielki
------------------
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 FirePHP/0.3
0 + -
comnt #07 wujekbogdan 2009-10-01 09:07:06
wujekbogdan oby więcej takich artykułów. myślałem, że w miarę dobrze znam css zanim nie przejrzałem tego artykułu. nie miałem jeszcze czasu przeczytać całego. 

dobra robota!
------------------
Browser: Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.00
0 + -
comnt #08 hahaha! 2009-10-07 14:56:44
hahaha! "Obsługa przez przeglądarki

Oczywiście, jak zwykle wszystkie nowoczesne przeglądarki oprócz IE obsługują powyższe pseudoklasy.
"
------------------
Browser: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.1.2) Gecko/20090820 Iceweasel/3.5.3 (Debian-3.5.3-1)
0 + -
comnt #09 Sony 2010-03-10 14:05:39
Sony Artykuł ma błąd.

Odnośnie specyficzności. Klasy i pseudoklasy mają tą samą hierarchię. Tak twierdzą inne źródła i firebug.
------------------
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.2 Safari/533.2

Komentarze

  • Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka (słowa muszą być rozdzielone spacją).
  • Jeśli masz problemy z odczytaniem słów, zmień zdjęcie.
  • Używamy tego zabezpieczenia, ponieważ dzięki niemu rozwija się projekt reCAPTCHA. Sugerujemy jednak, by zarejestrować się w serwisie i w ten sposób ominąć konieczność ciągłego odczytywania wyrazów.
  • W treści komentarza można używać języka formatowania BBcode.