CSS3 lažnjaci
Ovoga puta pričaću o pseudo elementima (selektorima) i to ne o svim.
Verovatno ste se sretali sa :after ili :before elementima koje se odnose
na postojeće u nekim css fajlovima. Moj prvi susret je bio tipa: Uh Bog
te, kako li ovo funkcioniše? Zapravo i nije toliko komplikovano ako
znaš šta želiš da postigneš i znaš css iole dobro.
Dobro, šta su
to u stvari pseudo elementi? Samo ime im kaže. U pitanju su lažni
elementi koji se postavljaju ispred ili iza elementa na koji se odnose.
Reč pseudo je grčkog porekla i otprilike znači laž.
Malo o sintaksi.
Pseudo elementi zahtevaju klasu na koju će se odnositi. Dalje, moraju imati content objekat, bilo sa, bilo bez vrednosti. Recimo:
p:before { content: "-"; } p:after { content: "!"; }
U ovom slučaju ispred svakog paragrafa će biti ispisana crtica, a iza znak uzvika. Kao što sam rekao, content mora biti prisutan pa makar i prazan: content:" ";.
Gde se ovo može upotrebiti? Recimo, konkretno ovaj slučaj kada želite da svaki paragraf počne sa (recimo) crticom a završi se sa (recimo) znakom uzvika. I opet recimo imate veliki broj paragrafa gde biste morali iskucati sve ovo za svaki. Na ovaj način možete stilizovati ogroman broj unosa. A ako vam svaki paragraf počinje sa rečima "Kako da", ove reči stavite u before pseudo element. Generalno, mogućnosti su velike pošto umesto slovnih i drugih znakova možete staviti i putanje do slike. Evo šta kaže W3S.
Da li je samo to? Ne. Šta kažete za oblačić za tekst kakav imaju dugmad svih relevantnijih socijalnih mreža? Evo koda:
.bubble { position: relative; background: #ffffff; border: 1px solid #000000; border-radius:3px; width: 30px; margin-left: 30px; height:30px; } .bubble:after, .bubble:before { right: 100%; border: solid transparent; content: " "; height: 0; width: 0; position: absolute; pointer-events: none; } .bubble:after { border-color: rgba(255, 255, 255, 0); border-right-color: #ffffff; border-width: 5px; top: 50%; margin-top: -5px; } .bubble:before { border-color: rgba(0, 0, 0, 0); border-right-color: #000000; border-width: 6px; top: 50%; margin-top: -6px; }
Prvo smo napravili div kome smo dali dimenzije, oivičili i dali mali radijus. Margina sa leve strane je bitna da napravi mesta za strelicu. Pozicija je relativna. Zatim smo u oba pseudo elementa dali obavezan ali prazan content sa visinom i širinom nula. After element je zatim napravio trougao iste boje kao i border diva, a before je isti trougao popunio drugim trouglom iste boje kao i div ali malo u desnu stranu da bi stvorio efekat jedne te iste linije. U div se može ubaciti bilo šta.
Ako vam je to malo, možete pogledati šta se sve može uraditi sa css3 ovde.
0 Poruka/e