Hozzon létre tökéletes érzékeny alakzatokat a CSS vw segítségével. Online CSS3 generátor egyszerű grafikus felhasználói felülettel - EnjoyCSS Hogyan készítsünk alakzatokat css-ben

  • Dátum: 22.12.2021

Front-end fejlesztő és vektoros illusztrátor

A vektorművészek és a front-end fejlesztők munkája gyakran megosztott. Ennek az az oka, hogy általában sok cégnél van elegendő létszám, így a szétválasztás a termelékenység növelése érdekében történik. Egy másik gyakori ok az, hogy egyesek teljes mértékben a front-end fejlesztésre akarnak koncentrálni, míg mások jobban vonzódnak az illusztrációkhoz. Mindkét iparágnak vannak sajátos rései, amelyekben az igazán jó és értékes készségek elsajátítására kell összpontosítani.

Természetesen ez a megközelítés nagyon ésszerű, de úgy gondolom, hogy egy front-end fejlesztőnek sok haszna származhat abból, ha illusztrációkkal dolgozik, még ha nem is ez a fő iránya.

A lényeg az, hogy mindkét készség lényegében a különböző komponensek összeállításáról szól a végtermék létrehozásához. Az illusztrátorok különböző formákat állítanak össze, és a formákkal dolgozva elkészítik a végső rajzot. A front-end fejlesztők pedig összeállítják a kódrészleteket, hogy létrehozzanak egy weboldalt.

A vektorgrafika alapjainak elsajátítása bemutatja az elrendezéseket, a színmintákat, a formadinamikát és általánosabban a front-end fejlesztők kreativitását.

A vektorgrafika front-end fejlesztők számára történő bemutatásának előnyeiről szóló beszélgetést azzal kezdtem, hogy a tiszta CSS-képek jól példázzák, milyen nagyszerű metszéspont lehet a vektoros illusztrátorok és a front-end fejlesztők között.

Egy kép létrehozása tiszta CSS-ben azt jelenti, hogy ahelyett szoftver vektoros illusztrációk (például Inkscape, Illustrator, Affinity Designer vagy Sketch) létrehozásához közvetlenül a CSS-kóddal kell dolgozni.

A szakmák hasonlósága ellenére úgy gondolom, hogy egy illusztrátor megfélemlítőnek találhatja a rengeteg CSS-t, ami egy kép létrehozásához szükséges, de egy front-end fejlesztőnek is - a kód segítségével történő képalkotás lehetősége.

Emiatt itt van egy útmutató az első kép létrehozásához tiszta CSS-ben, remélem:

  • növeli a tiszta CSS-ben történő képek létrehozásának hitelességét;
  • segít megérteni, hogyan készülnek a képek tiszta CSS-ben;
  • ha Ön front-end fejlesztő, növeli érdeklődését a vektorgrafika iránt;
  • ha Ön vektoros illusztrátor, növeli érdeklődését a front-end fejlesztés iránt;
  • Alapsablont biztosít a tiszta CSS-képek létrehozásához.

Tiszta CSS-képkomponensek

Először is nézzük meg, mi az a „tiszta CSS”.

A „tiszta CSS-sel” való képek létrehozása magában foglalja a CSS-stílus hozzáadását több HTML divhez.

Például létrehozhatunk egy négyzetet egyetlen div-vel és egy stílussal:

Törzs (háttér: # 1D1F20;) .négyzet (szélesség: 100 képpont; magasság: 100 képpont; háttér: # A58CB6;)

Formákat fogunk létrehozni úgy, hogy a blokkokat stílusozzuk, hogy kialakítsuk belőlük a végső képet.

Minden tiszta CSS projekt a következő összetevőkből áll:

  • egy div tag minden alakzathoz;
  • egy adott CSS osztály minden divhez hozzárendelve;
  • egy láthatatlan blokk, amely vászonként fog szolgálni.

Ez a tiszta CSS-kép végleges verziója, melyhez csak a fent felsorolt ​​komponenseket használjuk.

Mielőtt azonban elkezdenénk írni a kódot, nézzük meg, milyen konkrét formákból áll ennek a koala képe.

Alakszerkezet

Először is, a koala teljes képe egy láthatatlan négyzet alakú vászonra épült (ez nem hivatalos kifejezés). Ez a láthatatlan doboz a test közepén lesz elhelyezve, a fej pedig a doboz közepén. Személy szerint úgy gondolom, hogy ez egy jó gyakorlat a reszponzív tervezés egyszerűsítésére (erről bővebben a cikk végén).

Egyelőre ne feledje, hogy egy láthatatlan téglalap alakú dobozról van szó, amelyet alább kiemeltem:

Másodszor, van egy kör annak a weboldalnak a közepén, amelyből létrehozunk fej.

Ezután létrehozzuk fülek amelyek a fej oldalain helyezkednek el. Minden fül abból áll két színes kör amelyek átfedik egymást, az egyik kör valamivel kisebb, mint a másik. Megkülönböztetjük a fül div és a "belső fül" div.

Ezen kívül kettőnk van szemek amelyek szintén körökben, egymásra helyezve. Színben és méretben különböznek: a nagyobb kör fehér, a kisebb kör (pupilla) fekete.

Az utolsó simítás pedig két szürke hajcsomó háromszögek formájában, amelyek különböző pozíciókkal rendelkeznek a koala tetején.

Egy másik fontos dolog, amit érdemes megemlíteni, hogy a kép elkészítéséhez is különböző rétegeket fogunk használni. A fülek a fej mögött, az orr a szemek előtt, stb. Ez világosabbá válik, ahogy továbbhaladunk a CSS-sel.

HTML

Ha szőrt adunk a koalánkhoz, akkor a clip-path módszert használjuk. A Chrome, a Safari és az Opera támogatja. Ha Firefoxot használ, azt tanácsolom, hogy váltson másik böngészőre az oktatóanyag idejére.

Általában hozzáadok egy divet az alakzatként, majd stílusozom, majd továbblépek a következő divre.

Mivel azonban ez egy utasítás, először vessünk egy pillantást a HTML-re, és bontsuk fel:

Fontos megjegyezni, hogy egyes divek másokba vannak beágyazva. Vessünk egy pillantást koalánk jobb fülének divájára:

A jobb fül a szülő div, a belső fül pedig a gyermek.

Ez a megkülönböztetés azért fontos, mert az alakzatok fix pozíciót, szélességet és magasságot kapnak, százalékban kifejezve.

Tegyük fel például, hogy van egy div egy testbe ágyazva, amelynek magassága: 100%, szélessége: 100%.

A some-div osztályhoz egy rögzített pozíció van hozzárendelve, amely 10%-kal a szülőblokk teteje alatt van. Mivel a some-div 100%-os szélességű és 100%-os magasságú testbe van beágyazva, a div 10%-kal a blokk teteje alatt lesz elhelyezve.

Most helyezzünk be egy másik div-t a some-div-be, és ugyanúgy stílusozzuk:

Amint látja, teljesen más elrendezést kapunk.

Ebben a példában az other-div (kék négyzet) 10%-kal alacsonyabb, mint a some-div (piros négyzet).

Most helyezzünk át egy másik div-t a some-div-ről a body-ra, és növeljük a párnázást 30%-ra:

Az other-div most 30%-ra van behúzva a test tetejétől, nem pedig some-div.

Ezt szem előtt tartva, térjünk át a CSS-stílusokra.

CSS stílusok

test

Először is adjunk háttérszínt a testnek. Legyen olyan kék árnyalatú, mint a Twitter:

Test (háttér: # 25A9FC;)

doboz

Most alakítsuk ki a láthatatlan blokkot. Vízszintesen középre kerül (a mező változásának nyomon követéséhez adjon hozzá hátteret vagy szegélyt):

Doboz (pozíció: relatív; margó: automatikus; kijelző: blokk; // opcionális háttér és szegély háttér: fehér; szegély: folyamatos 4px piros; // írja ide a kódot)

pozíció: relatív azt jelenti, hogy az elem a normál helyzetéhez képest helyezkedik el, ami a bal felső sarokban van, mivel ez az első div a törzsben.

Ha a pozíció tulajdonság relatívra van állítva, használja a display: block; és margó: auto; hogy a mezőt automatikusan vízszintesen középre állítsa.

Ezután hozzáadhatjuk a következő kódrészletet, hogy a dobozt 8%-kal lejjebb helyezzük, a magasságot és a szélességet ugyanarra a méretre állítjuk, mint a fenti képen, végül beállíthatjuk a háttér értékét a kívánt értékre:

Doboz (pozíció: relatív; margó: automatikus; kijelző: blokk; felső margó: 8%; szélesség: 600 képpont; magasság: 420 képpont; háttér: nincs;)

Vegye figyelembe, hogy a margin-top: 8% tulajdonságot használjuk az árrés 8%-os csökkentésére. Mivel a tetejét személyre szabjuk, ez nem érinti a korábbi kitöltésünket, amelyet a margón keresztül állítottunk be: auto.

Most, hogy a doboz be van állítva, az összes többi div benne lesz. Ez megint csak azért fontos, mert amikor az abszolút pozíciókat százalékban rendeljük hozzá, akkor a div a marzs azonos százalékával pozícionálja. de nem attól test. Ugyanez az elv működik a magasságunkkal és a szélességünkkel is.

Fej

Vessünk egy pillantást a kódra a fej létrehozásához, majd bontsuk le lépésről lépésre:

Fej (pozíció: abszolút; felül: 16,5%; bal: 25%; szélesség: 50%; magasság: 67%; háttér: # A6BECF; szegélysugár: 50%;)

A felső és a bal oldali százalékok azt jelentik, hogy a div 15% lesz a margó tetejétől és 25% a bal oldaltól. A div szélessége a doboz szélességének 50%-a, a magasság pedig a doboz magasságának 67%-a. Ezt követően a háttérszínt világosszürkére állítottuk.

Ezután a szegély sugarát használjuk: 50%. Ha ezt a tulajdonságot elhagyja, a fej mindig téglalap (vagy négyzet) alakú lesz. border-radius az alakot megváltoztató tulajdonság. Ha ismeri az Illustratort, összehasonlíthatja a border-radius tulajdonság hozzáadását a négyzet éleinek húzásával annak lekerekítéséhez. Az alakzat körré kerekítéséhez mindig 50%-os tényezőt használunk.

A border-radius segítségével nem csak kört hozhatunk létre, hanem bármilyen alakzatot lekerekíthetünk, például a koalánk orrának téglalapját.

Mielőtt továbbmennénk, elmagyarázom, honnan vettem a felső és bal oldali szegély százalékos arányát, a szélességet és a magasságot. A mezőt 600 pixel szélesre állítottuk be, így az 50% 300 pixelt ad. Tekintettel arra, hogy a margó csak 400 képpont magas, a fej százalékos arányának magasabbnak kell lennie.

Valószínűleg azt várja tőlem, hogy megadjam a pontos képletet a magasság kiszámításához. Őszintén szólva általában gépeléssel találom meg a megfelelő értéket.

Minél több képet készít tiszta CSS-sel, annál gyorsabban találja meg az optimális értékeket. De most igazán gondolnia kell a szülő div magasságára és szélességére, valamint arra, hogy mekkora méretre van szüksége a gyermek divnek a szülőhöz képest.

Most, a pozíciók százalékos arányát figyelembe véve, sokkal könnyebb kiszámítani az abszolút középpontot. Íme a képlet:

Bal = (100 - szélesség) / 2 felső = (100 - magasság) / 2 // esetünkben (100 - 67) / 2 = felül: 16,5%; (100-50) / 2 = bal: 25%;

Most ez a kódrészlet működik a head div-ünkhöz, mert középre szeretnénk helyezni. Mi azonban például nem szeretnénk a füleket a középpontba helyezni. Hamarosan rátérünk erre a pontra, és azt is elmagyarázom, hogy mikor kell az alsót és a jobbat használni a felső és a bal helyett.

Az utolsó dolog, amit ebben a szakaszban el kell mondani, az az, hogy minden egyes következő div a head div-be lesz ágyazva, mivel minden hozzáadott alakzat a tetejére kerül.

A következőket kell elérnünk ebben a szakaszban:

Fej másolat

.head-copy (szélesség: 100%; magasság: 100%; pozíció: abszolút; háttér: # A6BECF; szegélysugár: 50%; z-index: 2;)

A head copy div kizárólag azért készült, hogy a fülek megjelenhessenek a fej mögött. Ehhez a z-index tulajdonságot használjuk. Figyeljük meg az előző kódrészlet utolsó sorát:

Z-index: 2;

A z-index azt a szintet jelzi, amelyen a divek másokhoz képest a képernyőre merőleges tengely mentén helyezkednek el (azaz Ön felé vagy Öntől távol). Ez a tulajdonság beállítja a rétegeket.

Végső képünkön a szemek a fej felett, az orr a szemek felett lesznek, és így tovább. Mindezt a z-index fogja szabályozni. Minél magasabb a z-index értéke, annál magasabbra kerül a div.

Tehát ha két div-je van, a z-index: 1 lesz az alsó réteg, a z-index: 2 pedig a felső. Amikor hozzáadjuk a fej másolatát, z-indexet adunk neki: 2, ami azt jelenti, hogy koalánk fülei a fej mögött helyezkednek el.

Ha tetszik, eltávolíthatja a fej másolatát, amikor hozzáadjuk a füleket, és meglátjuk, mi történik.

Nem szabadna látnunk semmilyen változást. A kép továbbra is így néz ki:

Fülek

Amint korábban említettük, mindkét oldalon egy-egy körből álló fülünk lesz. Két nagyobb világosszürke kör és két kisebb sötétszürke kör mindkét fül tetején (nevezzük őket belső fülnek).

Fül-bal (pozíció: abszolút; szélesség: 60%; magasság: 65%; bal: -20%; felül: 5%; háttér: # A6BECF; szegélysugár: 50%; z-index: 1;) .ear -jobb (pozíció: abszolút; szélesség: 60%; magasság: 65%; jobb: -20%; felül: 5%; háttér: # A6BECF; szegélysugár: 50%; z-index: 1;) .belső- fül (pozíció: abszolút; szegélysugár: 50%; szélesség: 80%; magasság: 80%; felső: 10%; bal: 10%; háttér: # 819CAF;)

Minden osztálynál használjuk a szegély sugarát: 50%, mivel köröket akarunk, majd színt adunk a háttér segítségével .
Mint látható, két különböző stílust írtunk a fülre, de csak egyet a belső fülre. Ez nyilvánvalóvá válik, ha megértjük a pozicionálást.

A jobb és bal fül szülődivje a fej. Így a százalékokat a fejhez, valamint a magassághoz és a szélességhez viszonyítva számítják ki. A magasságot és a szélességet az alapján számoljuk ki, hogy nagy füleket szeretnénk, ami azonban kisebb legyen, mint a fej. Így kapjuk a szélességet: 60% ill magasság: 65%.

A belső fülek a bal és a jobb fülben helyezkednek el. Tudjuk, hogy valamivel kisebbnek kell lenniük, ezért 80%-os szélességet és magasságot adunk nekik. Azt is szeretnénk, hogy a belső fül a fülek közepén legyen, így ismét használhatjuk az ismerős formulát:

Bal = (100 - szélesség) / 2 felső = (100 - magasság) / 2 // esetünkben ez (100 - 80) / 2 = felső: 10%; (100-80) / 2 = bal: 10%;

Mivel a bal és a jobb fülhöz viszonyítva ugyanazt a stílust használhatjuk a bal és a jobb fülre, így csak egy belső fül div. Kénytelenek vagyunk két külön fül-div-t használni, mert ezek eltérő bal és jobb értékkel rendelkeznek. a fejhez képest helyezkednek el.

Azt akarjuk, hogy a fülek kilógjanak a fej bal és jobb oldalán. Balra: -20% és jobbra: -20% negatív értékeket használunk a megadott irányba való eltoláshoz.

Íme, mi történt a végén:

// bal fül szélessége: 60%; magasság: 65%; bal: -20%; legjobb 5%; // jobb fül szélessége: 60%; magasság: 65%; jobbra: -20%; legjobb 5%;

Végül adjuk hozzá a z-indexet: 1; így a fülünk a fej alá kerül. A következőket kell beszereznünk:

Szemek

.szem-bal (pozíció: abszolút; háttér: fehér; szélesség: 30%; magasság: 33%; felső: 25%; bal: 21%; szegélysugár: 50%; z-index: 3;) .eye- jobb (pozíció: abszolút; háttér: fehér; szélesség: 30%; magasság: 33%; felül: 25%; jobb: 21%; szegélysugár: 50%; z-index: 2;) .pupil (pozíció: abszolút ; szélesség: 28%; magasság: 30%; felső: 35%; bal: 36%; szegélysugár: 50%; háttér: # 27354A;)

Amint látja, koalánk szeme hasonlít a füléhez. Két nagy fehér körünk van (bal és jobb szem) és egy pupillánk.

Ezekhez a határ sugarát használjuk: 50% , mivel körökről van szó, hátteret is használunk a megfelelő szín beállításához.

Van egy pupillánk, amely minden szemünkbe illeszkedik. Kitaláljuk a pupilla magasságát és szélességét, középre állítjuk, és ezt az eredményt kapjuk:

Szélesség: 28%; magasság: 30%; felső: 35%; bal: 36%;

A bal szem bemélyedésének meghatározásához próba és hiba vagy a fenti képlet is használható. Eközben csak találgatjuk a magassági és szélességi értékeket, amíg meg nem találjuk az optimális értéket.

// bal szem szélessége: 30%; magasság: 33%; felső: 25%; bal: 21%; // jobb szem szélessége: 30%; magasság: 33%; felső: 25%; jobb: 21%;

Ami a z-indexet illeti, a következő értékek az orrot közvetlenül a szem fölé helyezik:

// bal szem z-index: 3; // jobb szem z-index: 2;

Ennek eredményeként a következő képet kell kapnunk:

Orr

.orr (pozíció: abszolút; háttér: # BE845F; szélesség: 25%; magasság: 42,5%; bal: 37%; felső: 45%; szegélysugár: 50 képpont; z-index: 4;)

Most pedig vigyázzunk az orrra. Az összes értéket ugyanúgy választjuk ki, itt vannak az optimálisak:

Szélesség: 25%; magasság: 42,5%; bal: 37%; felső: 45%;

A háttér színét barnára állítottuk a háttér segítségével, és mélység a z-index segítségével: 4 úgy, hogy az orr a szem felett legyen.

A keret sugarát is használjuk: 50 képpont, hogy szükség szerint lekerekítsük a téglalap sarkait. Ha egy alakzatot csak egy kicsit kell kerekíteni, könnyebb a pixelek számát megadni, nem pedig százalékos arányt.

Most a következő képet kapjuk:

Haj

Majdnem kész! Utolsó lépésként stílust adunk a két hajfürtünkhöz, jobbra és balra, ami után megkapjuk a kész koala képet.

Haj-bal (pozíció: abszolút; felső: -8%; bal: 30%; szélesség: 20%; magasság: 20%; háttér: # A6BECF; -webkit-vágógörbe: sokszög (50% 0%, 0% 100%, 100% 100%); vágógörbe: sokszög (50% 0%, 0% 100%, 100% 100%);). Hajszál jobb (pozíció: abszolút; felül: -4%; bal: 48 %; szélesség: 20%; magasság: 20%; háttér: # A6BECF; -webkit-vágógörbe: sokszög (50% 0%, 0% 100%, 100% 100%); clip-path: sokszög (50% 0%, 0% 100%, 100% 100%);)

Amint látja, itt nem border-radiust használunk, hanem van egy ilyen kódunk a clip-path-al:

Webkit-clip-útvonal: sokszög (50% 0%, 0% 100%, 100% 100%); clip-path: sokszög (50% 0%, 0% 100%, 100% 100%);

A négyzettől, háromszögtől és körtől eltérő bármely alakzat esetén könnyebb a clip-path módszert használni.

Lehet, hogy ez kissé zavaróan hangzik, de szerencsére létezik egy kiváló Clippy eszköz, amely klip-útvonalakat biztosít különféle alakzatokhoz. A jobb oldalon számos különböző alakzatot fog látni:

A fenti képen a háromszög van kiválasztva, így kimásolhatja a clip-path-ot és beillesztheti a haj css osztályba.

Újra beállítjuk a színt a háttérrel, a szélességet és magasságot pedig 20%-ra mindkét kötegnél. A bal oldali köteget balra állítottuk: 30%, a jobb oldali köteget balra: 48%. Ez egy jó példa arra, hogy megvitassuk, hogy jobb vagy bal oldalt használjunk. Tegyük fel, hogy a jobb oldali köteget 5%-kal jobbra szeretnénk mozgatni. Hozzáadhatunk 5%-ot 48%-hoz, hogy balra maradjunk: 53%. A jó forma szabálya azonban az, hogy balról jobbra haladjunk, és fordítva, ha az érték 50% felett van. Ezért bal: 53% lesz egyenértékű a jobboldallal: 47%.

A felső eltolások negatívak lesznek, mivel azt szeretnénk, hogy mindkét hajcsomó kilógjon a fejünk felett. A bal oldali köteg kicsit jobban kilóg, ezért a magasságot 8%-ra állítjuk , és a jobb oldali köteg valamivel kisebb, magassága: 4% .

Elkészült a koala képünk!

Ennek eredményeként a CSS-kódnak így kell kinéznie:

Body (háttér: # 25A9FC;) .box (pozíció: relatív; margó: automatikus; kijelző: blokk; margó felső: 8%; szélesség: 600px; magasság: 420px; háttér: nincs;) .head (pozíció: abszolút; felső: 16,5%; bal: 25%; szélesség: 50%; magasság: 67%; háttér: # A6BECF; szegélysugár: 50%;) .fejmásolat (szélesség: 100%; magasság: 100%; pozíció: abszolút; háttér: # A6BECF; szegélysugár: 50%; z-index: 2;) .bal-fül (pozíció: abszolút; szélesség: 60%; magasság: 65%; bal: -20%; felül: 5% ; háttér: # A6BECF; szegélysugár: 50%; z-index: 1;) .fül-jobb (pozíció: abszolút; szélesség: 60%; magasság: 65%; jobb: -20%; felül: 5%; háttér: # A6BECF; szegélysugár: 50%; z-index: 1;) .belső fül (pozíció: abszolút; szegélysugár: 50%; szélesség: 80%; magasság: 80%; felső: 10%; bal: 10%; háttér: # 819CAF;) .szem-bal (pozíció: abszolút; háttér: fehér; szélesség: 30%; magasság: 33%; felül: 25%; bal: 21%; szegélysugár: 50% z-index: 3;) .szem-jobb (pozíció: abszolút; háttér: pünkösd e; szélesség: 30%; magasság: 33%; felső: 25%; jobb: 21%; határsugár: 50%; z-index: 3; ) .pupilla (pozíció: abszolút; szélesség: 28%; magasság: 30%; felső: 35%; bal: 36%; szegélysugár: 50%; háttér: # 27354A;) .orr (pozíció: abszolút; háttér: # BE845F; szélesség: 25%; magasság: 42,5%; bal: 37%; felső: 45%; szegélysugár: 50 képpont; z-index: 4;). Hajszál bal (pozíció: abszolút; felső: -8% ; bal: 30%; szélesség: 20%; magasság: 20%; háttér: # A6BECF; -webkit-vágógörbe: sokszög (50% 0%, 0% 100%, 100% 100%); vágógörbe: sokszög (50% 0%, 0% 100%, 100% 100%);). haj-jobb (pozíció: abszolút; felül: -4%; bal: 48%; szélesség: 20%; magasság: 20%; háttér : A6BECF ;)

További gyakorlat

Reméljük, hogy ez a cikk világosan megértette, hogyan hozhat létre képeket tiszta CSS-ben, és arra ösztönözte Önt, hogy folytassa a téma felfedezését. Ráadásul most már rendelkeznie kell egy jó sablonnal, amellyel tovább gyakorolhat.

Két ingyenes módszert is ajánlok a témával kapcsolatos készségek fejlesztésére:

  1. Videotanfolyam "Pure CSS Images".
  2. Kihívás "Napi CSS-képek".

Tipp programozóknak: Ha regisztrál a Huawei Honor Cupra, ingyenesen elérheti a résztvevők online iskoláját. Különböző készségeket fejleszthetsz, és magán a versenyen nyerhetsz díjakat. ...

Probléma

A képek gyémánt alakúra vágása elterjedt látványtervezési technika, de a CSS-ben egyáltalán nem könnyű megvalósítani. Valójában egészen a közelmúltig ez gyakorlatilag lehetetlen volt.

Ezért elképzeléseik megvalósításához a tervezőknek először a kívánt képeket kellett bevágniuk grafikus szerkesztő... Mondanunk sem kell, hogy a hatás alkalmazásának ez a módja óriási bonyodalmakat jelent a weboldal fenntartásában, és garantált zavart okoz a jövőben, ha valaki változtatni szeretne a képek stílusán. Ma határozottan jobb módszert kell találnunk. Valójában két ilyen út létezik!

Transzformáció alapú megoldás

A fő ötlet ugyanaz, mint az előző titok első megoldásában (lásd fentebb a "Párhuzamok" titkát) - be kell csomagolnunk a képünket

majd alkalmazzuk rá az ellenkező transzformációt forgatás ()
HTML



.kép (
szélesség: 400 képpont;
transzformáció: forgatás (45 fokkal);
túlcsordulás: rejtett;
}
.picture> img (
maximális szélesség: 100%;
transzformáció: forgatás (-45 fok);
}
Azonban, ahogy a képen is látszik, nem sikerült rögtön a kellő stílust kialakítani. Természetesen, ha azt tervezte, hogy nyolcszögre vágja a képet, akkor azt mondhatja, hogy a munka kész, és csináljon valami mást. De ahhoz, hogy a képet rombusz alakúra vághassa, még mindig izzadnia kell.

Az ellentétes forgatás () transzformáció nem elegendő a kívánt hatás eléréséhez (a .picture div szaggatott körvonallal van jelölve)
A fő probléma a maximális szélességben rejlik: 100% deklaráció. 100%-a a mi konténerünk oldalához tartozik. Azt szeretnénk azonban, hogy a végső kép szélessége egyenlő legyen az eredeti átlójával, ne az oldalával. Már sejtette, hogy ismét szükségünk van a Pitagorasz-tétel segítségére (ha fel kell frissítenie a memóriáját, akkor titokban talál magyarázatot). Ahogy a tétel mondja, egy négyzet átlója egyenlő az oldalidejével .

Ezért célszerű a maximális szélesség értéke 2 × 100% ≈ 141,4213562% vagy felfelé kerekítve 142%, mivel semmiképpen sem akarjuk, hogy a kép zsugorodik (és ha kicsit nagyobbnak bizonyul , akkor minden rendben van, mivel úgyis levágjuk).

Valójában még jobb felnagyítani a képet a skála () transzformációval, két okból: azt akarjuk, hogy a kép 100%-os maradjon olyan helyzetben, amikor a CSS átalakítások nem támogatottak;
Ha egy képet a méretarány (() átalakításával nagyít, akkor a kép a középponttól számítva lesz méretezve (kivéve, ha más transzformációs eredet értéket ad meg). Ha a width tulajdonság értékének változtatásával nagyobbra teszed, akkor a bal felső sarokból skálázódik, és az áthelyezéshez negatív margóértékeket kell használnunk. Mindezt összeadva megkapjuk a kód végső verzióját:
.kép (
szélesség: 400 képpont;
transzformáció: forgatás (45 fokkal);
túlcsordulás: rejtett;
}
.picture> img (
maximális szélesség: 100%;
transzformáció: forgatás (-45 fok) skála (1,42);
}
Ahogy a képen is látható, ezzel végre meghozzuk a kívánt eredményt.

PRÓBÁLJA MEG MAGÁT!
http://play.csssecrets.io/diamond-images

Vágógörbe megoldás

Az előző megoldás működik, de eleve piszkos trükk. Egy további HTML elemet igényel, ami azt jelenti, hogy ez egy zűrzavaros, zavaros és törékeny megoldás: ha nem négyzet alakú képekkel kell megküzdenünk, az eredmény borzasztó lesz.


Valójában van sokkal jobb módszer a kívánt eredmény elérésére. A fő gondolat az ingatlan hasznosítása clip-path- egy másik funkció az SVG-től kölcsönzött. Ez a tulajdonság most már HTML-tartalomra is alkalmazható (legalábbis a támogató böngészőkben), szép és olvasható szintaxissal, szemben az SVG megfelelőjével, amely dühítő képességéről híres.

Egyetlen hátránya van (az írás idején) - a böngésző korlátozott támogatása. Ez a megoldás azonban kecsesen visszagurul egy egyszerűsített renderelésre (nincs kivágás), ezért érdemes megfontolni. Valószínűleg már ismeri a vágógörbéket a képszerkesztő alkalmazásoknak köszönhetően, mint pl Adobe photoshop... A vágógörbék lehetővé teszik egy elem tetszőleges alakzatra vágását. Ebben az esetben a sokszög () alakzatot fogjuk használni.

Rombuszt fogunk definiálni, de általában ez az alakzat lehetővé teszi bármely sokszög meghatározását pontok sorozatával, vesszővel elválasztva. Akár százalékokat is használhat – a végösszegeket az elem teljes méretéhez viszonyítva számítjuk ki. A kód nagyon egyszerű:
clip-path: sokszög (50% 0, 100% 50%, 50% 100%, 0 50%);

Akár hiszed, akár nem, ez van! Két HTML-elem és nyolc sor bonyolult CSS helyett azonban egyetlen egyszerű sorral elértük, amit akartunk. A clip-path csodálatos képességei azonban nem érnek véget. Ez a tulajdonság még az animációt is támogatja - feltéve, hogy két azonos alakfüggvény (esetünkben sokszög ()) közötti átmenetet ugyanannyi ponttal animáljuk. Így, ha simán szeretnénk felfedni a teljes képet lebegtetés közben, ezt a következőképpen tehetjük meg:
img (
vágógörbe: sokszög (50% 0, 100% 50%,
50% 100%, 0 50%);
átmenet: 1s clip-path;
}
img: lebeg (
vágógörbe: sokszög (0 0, 100% 0,
100% 100%, 0 100%);
}
Ez a technika jól használható nem négyzet alakú képekhez is, Ah, a modern CSS örömei...
PRÓBÁLJA MEG MAGÁT!

Vlad Merzsevics

A weboldalakon a háromszögeket mindig az elemek tervezésének részeként használják, például mutatóként szolgálnak valamilyen objektumra, a megfelelő helyre irányítva az olvasó figyelmét. A háromszögek dekoratív funkciókat is ellátnak, kecsesebbé és modernebbé teszik a blokkokat, ahol felhelyezik őket. ábrán. Az 1. ábra egy példát mutat a háromszög használatára a tervezésben.

Rizs. 1. Háromszögek a webdesignban

Közvetlenül CSS-sel nem lehet háromszöget létrehozni, ezért két módszer áll rendelkezésre a hozzáadására – a szegélyen keresztül és az átalakítás.

Szegély használata

Bár a border tulajdonságon keresztül létrehozott szegélyek nem kapcsolódnak közvetlenül háromszögekhez, erre a leggyakrabban a bordert használják. Ha az elem szélességét és magasságát nullára állítjuk, és egy kellően vastag szegélyt is beállítunk, akkor négy háromszögből álló halmazt fogunk látni (2. ábra). Az áttekinthetőség kedvéért a szegélyek minden oldalon különböző színűek.

Rizs. 2. Szegély hozzáadása egy elemhez

Csak a kívánt szegélyt meghagyva, a többit átlátszóvá téve a kívánt színű háromszöget kapjuk (3. ábra).

Rizs. 3. Átlátszó szegélyű elem

Az 1. példa egy háromszög hozzáadását mutatja be egy blokkhoz a :: pszeudoelem után.

Példa 1. Blokk háromszöggel

Háromszög

Abszolút pozicionált elemek esetén nem kell nulla szélességet és magasságot megadni.

A szegélyek kombinálásával további négyféle háromszöget kaphatunk, ami a már említettekkel kombinálva nyolc lehetőséget ad. Típusukat és szükséges kódjukat a táblázat tartalmazza. egy.

Tab. 1. A háromszögek lehetséges típusai
Kilátás Stílus
keret: 20px tömör átlátszó; szegély-felül: 20 képpont, egyszínű zöld;
keret: 20px tömör átlátszó; szegély-jobb: 20 képpont folyamatos zöld;
keret: 20px tömör átlátszó; szegély-alsó: 20px egyszínű zöld;
keret: 20px tömör átlátszó; szegély-bal: 20px folyamatos zöld;
keret: 20px tömör átlátszó; szegély-felül: 20 képpont, egyszínű zöld; szegély-jobb: 20 képpont folyamatos zöld;
keret: 20px tömör átlátszó; szegély-jobb: 20 képpont folyamatos zöld; szegély-alsó: 20px egyszínű zöld;
keret: 20px tömör átlátszó; szegély-alsó: 20px egyszínű zöld; szegély-bal: 20px folyamatos zöld;
keret: 20px tömör átlátszó; szegély-bal: 20px folyamatos zöld; szegély-felül: 20 képpont, egyszínű zöld;

A táblázatból látható, hogy a láthatatlan szegélyek helyet foglalnak, ezt vegyük figyelembe az elemek elhelyezésénél. A stílust nulla szélességgel és magassággal is ki kell tölteni, vagy használni kell a pozíció tulajdonságot, mint az 1. példában.

A háromszög más alakúra is elkészíthető, ha más vastagságú szegélyeket állít be. Tehát az ábrán látható blokk létrehozásának kódja. A 4. ábra a 2. példában látható.

Rizs. 4. Hegyesszögű háromszög

2. példa Hegyesszögű háromszög

Háromszög

A szegély segítségével egyszínű háromszögeket kapunk, amelyek az ábrán látható szegélyt alkotják. 5 rá kell jönni a trükkre, és enyhe eltolással az egyik elemet a másikra kell helyezni. Itt is segítségünkre lesz a: előtte és utána pszeudoelem (3. példa).

Rizs. 5. Keret sarokkal

3. példa Átfedő háromszögek

Háromszög

A glocky kuzdra shteko felemelte a bokrenka oldalát, és összegömbölyödött.

Tekintettel arra, hogy az egyik egyszínű elemet a másikra fedjük, ez a módszer csak egyszínű kitöltésre alkalmas, színátmenetek vagy hátterek esetén nem.

Transzformáció használata

A transzformáció segítségével a négyzet elemet 45º-kal elforgathatjuk, és rombuszt kapunk belőle. Ez önmagában nem háromszög, ezért a szükséges kiálló részt jól látható helyen hagyjuk, a többit pedig egy másik elem mögé rejtjük (4. példa).

3. példa Átalakítás

Háromszög

A glocky kuzdra shteko felemelte a bokrenka oldalát, és összegömbölyödött.

Eredmény ezt a példátábrán látható. 6.

Rizs. 6. Háromszög árnyékkal

Üdv mindenkinek. Ma egy meglehetősen szokatlan témát fogunk érinteni, mégpedig a webdesign jövőjét, ez a CSS formák.

Mint tudják, most nagyon divatos, de főleg téglalapokból áll, amelyek viszont nagyban korlátozzák a tervezők látókörét. És ott van még az alkalmazkodóképesség is... Ami nagyon korlátozza a kreativitást. De van egy hatalmas plusz - egyszerűbb egy téglalap körül áramolni, de nehezebb a szöveget kerek vagy egyenetlen formák körül áramolni. Mert a képeket nem lehet kerekíteni.

Ebben az esetben a számok a segítségünkre vannak. A népszerű W3C CSS webhely közzétette az első formadokumentációt. Ez a bejegyzés angol nyelvű CSS Shapes Module Level 1 nyelven. Ez a modul nemrég, június 20-án jelent meg. Eddig ez egy béta verzió, amely olyan alakzatokat tartalmaz, mint a téglalap, háromszög, ellipszis, kör és sokszög.

Most pedig nézzük meg közelebbről, mi az előnye a CSS-alakzatoknak egy példán keresztül.

Kezdésként vegyünk egy egyszerű HTML-jelölést a http://www.webdesignerdepot.com webhelynek köszönhetően:

Ez egy példa szöveg