Martynas Kašelionis
WEB developeris, programavimo mokytojas
From zero to hero
Parengė: Martynas Kašelionis
CSS (angl. Cascading Style Sheets – pakopiniai stilių šablonai) – kalba, skirta nusakyti kita struktūrine kalba aprašyto dokumento vaizdavimą.
<tr><td><a href="#"><font color="black"> Tekstas </font></a></td></tr>
Elemento atributas:
<div style="color:red;">......</div>
HTML elementas:
<style>
....
</style>
Išorinis stiliaus failas:
<link rel="stylesheet" href="css/style.css">
article {
background-color:red;
color: silver;
}
Norint taikyti stilių konkrečiam HTML elementui arba elementams, naudojame selektorius.
Selektorių tipai:
HTML:
<div id="logo">
<div><p>Tekstas</p></div>
<span>Super tekstas</span>
</div>
CSS:
*{
color:red;
}
Papildoma informacija:
https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Simple_selectors
HTML:
<div id="message">
<h3>Gavote naują žinutę</h3>
</div>
CSS:
h3{
color:red;
}
Papildoma informacija:
https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Simple_selectors
HTML:
<div id="logo">
<img src="img/logo.png" alt="logo"/>
</div>
CSS:
#logo{
border-radius:10px;
}
Papildoma informacija:
https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Simple_selectors
HTML:
<div id="logo center">
<img src="img/logo.png" alt="logo"/>
</div>
CSS:
.logo{
border-radius:10px;
}
Papildoma informacija:
https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Simple_selectors
HTML:
<ul>
<li><a href="http://www.kitm.lt">KITM</a></li>
<li><a href="http://www.delfi.lt">DELFI naujienos</a></li>
</ul>
CSS:
a[href="http://www.kitm.lt"] {
color:blue;
}
Papildoma informacija:
https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
Pseudo klasė, gali būti taikma selektoriui apibrėžiant elemento būseną. Pvz.: :hover (kas nutinka užvedus žymeklį ant nuorodos)
Dažniausia naudojamos pseudo klasės:
Visos pseudo klasės:
https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes
HTML:
<ul>
<li><a href="http://www.web-training.lt">WEB training</a>
</ul>
CSS:
a:hover{
color:red;
}
Papildoma informacija:
https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Simple_selectors
Pseudo elementai taikomi dokumento turinio daliai. Pvz.: p::first-letter
Dažniausiai naudojami pseudo elementai:
Visi pseudo elementai:
https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements
HTML:
<p>
man labai patinka WEB technologijos.
</p>
CSS:
p::first-letter{
text-transform:uppercase;
}
Papildoma informacija:
https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements
Rašydami CSS kodą turime laikyti DRY principo, kuris sako: "Don't repeat yourself"
Selektorių kombinacijos:
th, td - turi tuos pačius stilius
section article - article yra kažkur section viduje
div > a - a yra iškart div viduje
h2 ~ p - p yra kažkur už h2
h2 + p - p yra iškart už h2
Kodėl CSS vadinami pakopiniais stilių šablonais?
Kadangi daugiau negu viena taisyklė, gali būti taikomos konkrečiam HTML elementui. Reikalingas būdas, kaip spręsti konfliktus. Būtent pakopos leidžia nuspręsti, kuri taisyklė bus taikoma.
Laimi paskiausiai deklaruota taisyklė
Paveldėjimu vadinamas procesas, kai elemento css taisyklės taikomos visiems viduje esantiems elementams.
Elementų išdėstymas, paraštės, fono spalvos, rėmeliai negali naudoti paveldėjimo.
CSS matavimo vienetai naudojami, kai norime nustatyti:
CSS matavimo vienetai yra absoliutūs (visada išlieka tokio pačio dydžio) ir realityvūs (santykiniai).
Absoliutūs matavimo vienetai:
Iš absoliūčių matavimo vienetų dažniausiai naudojami pikseliai.
Realityvūs (santykiniai) matavimo vienetai.
Realityvūs matavimo vienetai:
Procentai
Šrifto dydžiui, paraštėms, elementų pločiui ir aukščiui nurodyti galima naudoti procentus.
Dažniau naudojama, kuriant prie ekrano pločio prisitaikantį(adaptyvų) išdėstymą (layout).
Egzistuoja vienetiniai matavimo vienetai.
pvz.:
margin: 0;
Dažnai naudojami, kai norime pašalinti dydžio nustatymus (paraštės, postūmiai ir kt.)
Kitas pavyzdys line-height ypatybė, kuri nustato eilutės aukštį.
line-height: 1.5; /* Naudojamas dauginimas */
Procentai
HTML
<div>
<div class="boxes">Tekstas</div>
<div class="boxes">Tekstas</div>
</div>
CSS
div .boxes {
font-size: 200%; /* Koks bus šrifto dydis pikseliais?
margin: 10px;
}
CSS teksto formatavimo ypatybės skirstomos į dvi kategorijas:
<h1>Mokomės CSS</h1>
<p>Tinklapis be CSS</p>
<p>Kaip žmogus be rūbų.</p>p {
color: red; /* Šrifto spalva */
font-family: arial; /* Šriftas */
font-size: 1.2em; /* Šrifto dydis */
}WEB safe fonts:
Norėdami užtikrinti, kad svetainės lankytojas matytų korektiškai atvaizuotą tekstą, turime naudoti saugius šriftus (WEB safe fonts) arba pridėti alternatyvius šriftus, kurie bus kraunami konkrečoje operacinėje sistemoje neradus reikiamo šrifto.
p {
font-family: "Trebuchet MS", Verdana, sans-serif;
}Dažnausiai naudojamos savybės:
lighter ir bolder atveju atsižvelgiama į tėvinio elemento šrifto paryškinimą
Teksto šešėliui sukurti naudojamos 4 reikšmės:
Sąrašus sudaro ženklinimo elementai ir tekstas. Teksto formatavimas veikia sąrašuose, taip, kaip aptarta ankščiau
Pagrindinės sąrašų savybės:
Nuorodos formatuojamos, kaip tekstas, tačiau jos turi būsenas, kurios pateikiamos pseudo klasių pavidalu.
Kiekvienai būsenai galima, taikyti skirtingą formatavimą
Būsenos:
Rekomenduojama stiliaus faile apibrėžti visas būsenas
CSS galima naudoti spalvas esančias RGB paletėje. Tai pat su spalva galima naudoti alpha kanalą, kai norime fonui nustatyti permatomumą.
Spalvos reikšmė gali būti nurodyta naudojant:
Hex kodą sudaro skaičiai nuo 0 iki 9 ir raidės A, B, C, D, E, F
Spalvose viskas prasideda nuo tamsiausių ir einą iki šviesiausių t.y. kuo mažesnis skaičius ir pirmesnė raidė abecelėje bus naudojama, tuo spalva bus tamsesnė.
#000 - juoda spalva
#FFF - balta spalva
Norint pasirinkti spalvą galite naudoti šį įrankį:
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Colors/Color_picker_tool
RGB kubas:
Galima naudoti šių tipų fonus:
<h1>Mokomės CSS</h1>
<p>Tinklapis be CSS</p>
<p>Kaip žmogus be rūbų.</p>body {
background-color: red;
/* Nustatyta fono spalva */
background-image: url('..img/bg.jpg');
/* Paveikslėlis nustatytas, kaip fonas */
background: #eee url('..img/bg.jpg');
/* Fonui naudojams paveikslėlis ir spalva */
}body {
background-image: linear-gradient(rgba(0, 0, 255, 0.5), rgba(255, 255, 0, 0.5)),
url("../img/fonai/bg.png");
/* Nustatytas gradientas ir paveikslėlis */
}Kitos fonų savybės:
body {
background:#eee url("../img/fonai/bg.png");
background-position: top;
/* Nustatyta fono paveikslėlio pozicija top
Galimos pozicijos:
top
left
center
Procentinės:
pvz.:
background-position: 25% 75%; Pirmas skaicius x ašyje, o antras y ašyje
*/
}
body {
background: #eee url("../img/fonai/bg.png");
background-repeat: repeat;
/* Fonas kartojamas pagal x ir y ašis */
background-repeat: repeat-x;
/* Fonas kartojamas pagal x ašį */
background-repeat: repeat-y;
/* Fonas kartojamas pagal y ašį */
background-repeat: no-repeat;
/* Fono kartojimas išjungtas */
}
body {
background: #eee url("../img/fonai/bg.png") no-repeat;
/* Galima naudoti sutrumpintą shorthand variantą */
}
body {
background: #eee url("../img/fonai/bg.png") no-repeat;
background-size: contain;
/* Padidina fono paveikslėlį, kiek įmanoma pagal elementą.
Paveikslėlis neapkarpomas. */
background-size: cover;
/* Padidina fono paveikslėlį, kiek įmanoma pagal elementą.
Jeigu elemento ir paveikslėlio dydis skiriasi, jis yra apkarpomas. */
}CSS gradientai tai spalvų perėjimai tarp dviejų ar daugiau spalvų.
Gradientų tipai:
Gradientai dažniausia naudojami fonams
header {
background: linear-gradient(blue, pink);
}
/* Krypties keitimas */
.box {
background: linear-gradient(to bottom right, blue, pink);
}
.section {
background:
linear-gradient(217deg, rgba(255,0,0,.8), rgba(255,0,0,0) 70.71%),
linear-gradient(127deg, rgba(0,255,0,.8), rgba(0,255,0,0) 70.71%),
linear-gradient(336deg, rgba(0,0,255,.8), rgba(0,0,255,0) 70.71%);
}
/* Radialiniai gradientai */
.box2 {
background: radial-gradient(red, blue);
}
.logo {
background: radial-gradient(red 10px, yellow 30%, #1e90ff 50%);
}/* Radialiniai gradientai */
.stacked-radial {
background:
radial-gradient(circle at 50% 0,
rgba(255,0,0,.5),
rgba(255,0,0,0) 70.71%),
radial-gradient(circle at 6.7% 75%,
rgba(0,0,255,.5),
rgba(0,0,255,0) 70.71%),
radial-gradient(circle at 93.3% 75%,
rgba(0,255,0,.5),
rgba(0,255,0,0) 70.71%) beige;
border-radius: 50%;
}table {
border-collapse: collapse;
width: 100%;
}
th, td {
text-align: left;
padding: 8px;
border:1px solid;
}Visas savybes susijusias su lentelėmis rasite:
https://developer.mozilla.org/en-US/docs/Learn/CSS/Styling_boxes/Styling_tables
Ankščiau norint animuoti objektus tinklalapyje, buvo naudojama GIF arba Adobe Flash. Tačiau abi technologijos šiandien netinkamos, nes tai tik įterpiami objektai, kurie negali sąveikauti su HTML. Todėl ankščiau vienintelis būdas kurti animacijas su HTML buvo JavaScript.
CSS3 suteikia galimybes kurti efektus ir animaciją, naudojant elementų transformaciją, perėjimus ir animaciją.
CSS3 nadoja kelias ypatybes elementų transformacijai:
x ir y ašyje.
Elemento pasukimui naudojama rotate reikšmė su laipsniais.
Senesnėms naršyklėms yra būtina nurodyti prefiksus.
-webkit-transform: rotate(10deg);
-moz-transform: rotate(10deg);
-o-transform: rotate(10deg);
-ms-transform: rotate(10deg);
transform: rotate(10deg);Elementas, kuriam nustatyta transformacija neįtakoja kitų elementų.
Rotate reikšmė yra nuo 0 iki 360
Scale leidžiai didinti arba mažinti elementą. Jeigu reikia elementą padidinti du kartus, naudojame:
-webkit-transform: scale(2);
-moz-transform: scale(2);
-o-transform: scale(2);
-ms-transform: scale(2);
transform: scale(2);Didinimas skaičiuojamas dauginant dabartinį elemento dydį iš nurodyto funkcijoje scale. Galima naudoti ir 0.5, jeigu norima padidinti pusę karto.
.button {
font: .9em Arial, Helvetica, sans-serif;
border-radius: .5em;
background-color: rgb(34,255,23);
border: 1px solid rgba(0,0,0,.5);
padding: .5em;
}.button:hover {
-webkit-transform: scale(1.2);
-moz-transform: scale(1.2);
-o-transform: scale(1.2);
-ms-transform: scale(1.2);
transform: scale(1.2);
}
transform: scale(.5,2); /* Pirma reikšmė x, antra y*/
/* arba */
transform: scaleX(3);
transform: scaleY(2);
/* galima naudoti negatyvias reikšmes */
transform: scale(-1);Elemento didinima x ir y galima nurodyti skirtingomis reikšmėmis.
Galima apsukti arba apverst elementą, naudojant negatyvias reikšmes
transform: scale(-1,1);Translate suteikia galimybę judinti elementą iš jo esamos pozicijos. Elementas, kuriam naudojama translate turi turėti erdvės nustatyto veiksmo atlikimui, todėl jam reikia nustatyti position:absolute
.button:active {
-webkit-translate(1px,2px);
-moz-translate(1px,2px);
-o-translate(1px,2px);
-ms-translate(1px,2px);
translate(1px,2px);
}Translate reikšmės gali būti nurodytos x ir y atskirai.
transform: translateY(-.5em);Skew leidžia pakreipti elemento kraštines x yr y ašyse.
-webkit-transform: skew(45deg, 0);
-moz-transform: skew(45deg, 0);
-o-transform: skew(45deg, 0);
-ms-transform: skew(45deg, 0);
transform: skew(45deg, 0);Viršuje esančiame pavyzdyje pakrepiamos vertikalios linijos 45 laipsniais.
CSS ypatybė transform, nurodant reikšmę leidžia naudoti kelias funkcijas.
transform: skew(45deg,0deg) scale(.5) translate(400px,500px) rotate(90deg);CSS ypatybė transform, nurodant reikšmę leidžia naudoti kelias funkcijas.
transform: skew(45deg,0deg) scale(.5) translate(400px,500px) rotate(90deg);Yprastai, kai elementui taikoma transform ypatybė imamas elemento centras, transformacijos taškui nustatyti.
Transformacijos taško poziciją, galima pakeisti, naudojant transform-origin ypatybę. Ji veikia panašiai, kaip background-position
transform-origin: left top;
transform-origin: 100% 100%;CSS3 palaiko ir 3D transformaciją. Apie jos taikymą galite susipažintim čia:
Transition (perėjimas) savybė yra animacija iš vieno CSS savybių rinkinio į kitą.
Praktiškai kalbant transition sukuria elegantišką perėjimo efektą per laiką, kai keičiasi nustatytos savybės.
pvz. galima pritaikyti elemento transformacijai per 2s.
Norint naudoti transition, reikia:
navButton {
background-color: orange;
transition-property: background-color;
transition-duration: 1s;
}
.navButton:hover {
background-color: blue;
}transition-property: color, background-color, border-color;
transition-duration: .25s, .75s, 2s;Kai paminėta ankščiau transition-duration nurodo animacijos trukmę, t.y. per kiek laiko bus įvykdyta animacija. Tačiau yra kita ypatybė transition-timing-function, kuri atsakinga už animacijos parodymą (kaip animacija prasidės ir kaip pasibaigs).
transition-timing-function, gali turėti šias reikšmes:
Jeigu transition-timing-function nenurodyta, naršyklė naudos ease metodą, kuris pradeda animaciją lėtai, pagreitina per vidurį ir sulėtina pabaigoje. Tokiu būdu sukuriamas animacijos efektas.
-webkit-transition-timing-function: ease-in-out;
-moz-transition-timing-function: ease-in-out;
-o-transition-timing-function: ease-in-out;
transition-timing-function: ease-in-out;Jeigu norim nepradėti perėjimo efekto iskarto, galima nustatyti užlaikymo laiką.
.navButton {
color: black;
background-color: #FF6603;
border: 5px solid #660034;
transition-property: color, background-color, border-color;
transition-duration: 1s, 1s, .5s;
transition-delay: 0, 0, 1s;
}
.navButton:hover {
color: white;
background-color: #660034;
border-color: #FF6603;
}Nurodant transition reikšmę ir susijusių ypatybių reikšmes, galima nurodyti vienoje eilutėje.
transition: all 1s ease-in .5s;
/*taikom visom savybėm, trukmė 1s,
timing function ease-in, užlaikymas
pusė sekundės*/
transition: all 1s;
transition: background-color 1s;
transition: color 1s, background-color 1s, border-color .5s 1s;...
By Martynas Kašelionis