140 likes | 230 Views
Web-grafika II (SVG) 8. gyakorlat. Kereszty Gábor. Belső stíluslapok. S tyle elhelyezése az svg törzsön belül:. < style t y pe =“text/ css ”> <![CDATA[ elem { tulajdons ág1 : érték1 ; tulajdonság2 : érték2 ; … } … további elemek … ]]> </style>
E N D
Web-grafika II (SVG)8. gyakorlat Kereszty Gábor
Belső stíluslapok Style elhelyezése az svg törzsön belül: <style type=“text/css”> <![CDATA[ elem { tulajdonság1: érték1; tulajdonság2: érték2; …} … további elemek … ]]> </style> <rect x=“x” y=“y” width=“w” height=“h”/> Ekkor a téglalap stílusát elég fent megadni, viszont ebben a dokumentumban minden téglalapnak ugyanolyanok lesznek a stílusjellemzői.
Feladat • Készíts két belső stílust egy svg file-ba. Az egyik a körök, a másik a téglalapok kinézetét befolyásolja. A körök legyenek kitöltetlenek és 2 egység széles, kék színű körvonallal rendelkezzenek. A téglalapok belseje legyen átlátszó piros színű, körvonaluk 2 egység és zöld. • Készíts 10 kört és 10 téglalapot a stílusok megtekintéséhez.
Stílus-osztályok elem.osztálynév1 { tulajdonság1: érték1; …} .osztálynév2{ tulajdonság2:érték2;…} <elemattribútumok class=“osztálynév1[osztálynév2]”/> Ekkor nem minden alakzat stílusát adjuk meg előre. Minden alakzatban be kell állítani, hogy felhasználja e az osztályt, vagy sem. Egyszerre akár több osztályt is felhasználhatunk!
Feladatok • Hozz létre az előző file-ban egy „teli” osztályt, mely a körökön belül érvényes, és kék kitöltőszínt állít be. Az előbb létrehozott körök közül néhánynál állítsd be, hogy a stílusuk „teli” legyen. • Hozd létre a „sárga” osztályt, mely félig átlátszó sárga kitöltőszínt definiál. Rendeld ezt az osztályt néhány körhöz és néhány téglalaphoz.
Külső stíluslapok - CSS A .css file-ban leírjuk az egyes stílusjellemzőket: * { fill: red; stroke: blue;}/* Alapértelmezett érték minden elemre */ rect {fill: blue;} .kover {stroke-width: 5;} .atlatszo {fill-opacity: 0.5;} A .svg file 2. sorában betöltjük ezt a külső stíluslapot: <?xml-stylesheet href=“kulso.css” type=“text/css”?>
Feladat • Az eddig létrehozott belső stíluslapot mentsük ki egy stilus.css nevű file-ba, majd ezt használjuk fel a kívánt stílus megjelenítéséhez.
Stílusok - egyéb • A következő megadási módok ekvivalensek: <rect x=“x” y=“y” width=“w” height=“h” style=“fill: blue; stroke: red;”/> <rect x=“x” y=“y” width=“w” height=“h” fill=“blue” stroke=“red”/> • A stílusdefiníciók prioritása csökkenő sorrendben: • Külső stíluslap • Belső stíluslap • Közvetlen stílusdefiníció
Vágás <defs> <clipPath id=“cP”> <text x=“x” y=“y” style=“fill: none; font-size: 48pt”>FELIRAT</text> </clipPath> </defs> <alakzat… style=“clip-path: url(#cP); …további stílusok…”/> <g style=“clip-path: url(#cP)”> … alakzatok … </g> Ekkor az alakzatokból csak a fent definiált vágási területben lévő részek fognak látszódni.
Feladat • Az eddig használt file-ba helyezz el egy vágást, ami egy négyzetből és egy körből áll. Alkalmazd ezt a vágást az összes alakzaton. • Készíts egy másikat, ami egy text elemet tartalmaz. Próbáld ki a hatását.
Vágás folyt. <defs> <clipPath id=“cP” clipPathUnits=“objectBoundingBox”> <circle cx=“0.5” cy=“0.5” r=“0.6” /> </clipPath> </defs> <alakzat… style=“clip-path: url(#cP); …további stílusok…”/> <g style=“clip-path: url(#cP)”> … alakzatok … </g> Most annyiban térünk el az előzőtől, hogy a vágási terület nem abszolút, hanem az alakzat befoglaló téglalapjának arányában számítódik ki.
Feladat • Készíts egy olyan vágógörbét, ami az egész munkalapnak csak egy kör alakú részét mutatja. A kör tetszőleges helyen lehet, a sugara a befoglaló alakzat 30%-a legyen.
Maszkolás <defs> <mask id=“maszk” x=“x” y=“y” width=“w” height=“h” maskContentUnits=“objectBoundingBox | userSpaceOnUse”> <rect x=“x” y=“y” width=“rw” height=“rh” style=“fill: white; fill-opacity: 0.5”/> </mask> </defs> <alakzat… style=“mask: url(#maszk); …további stílusok…”/> <g style=“mask: url(#maszk)”> … alakzatok … </g> Ekkor az alakzatokból csak a fent definiált rész fog látszani, az is csak a megfelelő átlátszósággal.
Feladat • Készíts egy körkörös színátmenetet, ahol a szinek fehérek, és csak az átlátszóság változik. • Használd fel ezt egy maszk készítéséhez. (objectBoundingBox) • Készíts két téglalapot egymásra helyezve. A hátsó legyen piros, az első kék. Ez utóbbinál használd a maszkot is.