-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b49c522
commit 811cf1a
Showing
50 changed files
with
1,565 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
# Harjoitus 1: Relaatiot | ||
|
||
**Harjoituksen sisältö** | ||
|
||
Harjoituksessa opetellaan hyödyntämään ulkopuolisia tauluja aineiston editoinnissa. | ||
|
||
**Harjoituksen tavoite** | ||
|
||
Harjoituksen jälkeen osallistuja osaa hyödyntää tehokkaasti QGISin Attribute Forms toiminnallisuutta ominaisuustietojen editoinnissa. | ||
|
||
**Arvioitu kesto** | ||
|
||
30 minuuttia. | ||
|
||
## **Valmistautuminen** | ||
|
||
Avaa uusi QGIS-projekti (**Projekti \> Uusi**) ja tallenna se nimellä \"**QGIS-harjoitus 3**\". Lisää projektiin seuraavat aineistot: | ||
|
||
- **OpenStreetMap** | ||
|
||
- **Luokat.gpkg (luokitus_taso_1, luokitus_taso_2, luokitus_taso_3)** | ||
|
||
- **Loppi.gpkg** | ||
|
||
## **Aineistojen valmistelu** | ||
|
||
GeoPackage-tietokantaan voi lisätä myös tasoja/tiedostoja/aineistoja, jotka eivät sisällä lainkaan geometrioita -- käytännössä QGISiin avautuu silloin kuinkin kohteen attribuuttitaulut. Projektiin avatut **Luokat-GeoPackagen** sisältämät tasot ovat juuri tällaisia aineistoja, joilla ei ole geometriaa. **Luokat-aineisto** sisältää kolmiportaisen maankäyttöluokitusjärjestelmän, joka perustuu [SLICES](https://www.stat.fi/meta/luokitukset/maankaytto/001-2000-05-01/kuvaus.html)-luokitukseen. Avaa kunkin tason attribuuttitaulut ja tarkastele niiden sisältöä. | ||
|
||
![](img/harjoitus_1/image1.png) | ||
|
||
Luokittelu on hierarkinen ja logiikka on helppo ymmärtää: | ||
|
||
- Jokaisella maankäyttöluokalla on oma koodinsa, jonka pituus riippuu hierarkian tasosta | ||
|
||
- Jokaisella luokalla on myös sanallinen kuvaus luokasta | ||
|
||
Editoinnin tarkoituksena on hyödyntää ja rajoittaa luokkien välisiä suhteita attribuuttitietojen editoinnissa. Tehdään maankäytön suunnitelma näillä luokituksilla, joka perustuu kuusikulmioihin. Useassa kaupungissa on luotu yleiskaavoja, joissa kerrotaan ruuduittain alueiden käytön suunnittelusta. Harjoituksessa luomme kuvitteellisen yleiskaavan Lopelle Kanta-Hämeeseen heksagonien avulla. | ||
|
||
![](img/harjoitus_1/image2.png) | ||
|
||
Seuraavaksi luomme koko kunnan alueen kattavan kuusikulmioaineiston. Valitse **Prosessointityökalut-paneelista Vektoritiedon luonti \> Luo ruudukko**. Täytä avautuva Luo ruudukko -ikkunan tiedot seuraavan kuvan mukaisesti: | ||
|
||
![](img/harjoitus_1/image3.png) | ||
|
||
Valitse **Ruudukon laajuus -kohdassa ... \> Valitse laajuus piirtoalueelta**, jonka jälkeen QGIS pyytää sinua valitsemaan kursorilla alueen jolle ruudukko muodostetaan. | ||
|
||
![](img/harjoitus_1/image4.png) | ||
|
||
Jätä **tyhjäksi tallennussijainti** kohta, jolloin tiedosto tallentuu väliaikaiseksi tiedostoksi nimellä **Ruudukko**. Kun klikkaat **Suorita**, QGIS luo heksagoniruudukon valitsemallesi alueelle. | ||
|
||
![](img/harjoitus_1/image5.png) | ||
Kun ruudukko on luotu, valikoimme siitä vain Loppi-polygonin kohdalle osuvat ruudut. Tämä tehdään **Prosessointityökalut-paneelista Vektoritiedosta poiminta \> Irrota sijainnin perusteella -työkalulla**. Valitse Irrota tasolta kohtaan äsken luotu väliaikainen-tasosta **Ruudukko** ja valitse ne kohteet, jotka leikkaavat. Valitse tallennussijainniksi **Loppi.gpkg** ja anna tason nimeksi **Loppi_ruudukko** ja klikkaa **Suorita**. | ||
|
||
![](img/harjoitus_1/image6.png) | ||
|
||
|
||
![](img/harjoitus_1/image7.png) | ||
|
||
Seuraavaksi lisäämme tasoon uudet attribuuttitietokentät, jotka kertovat kyseisen tason maankäytöstä. Seuraamme luokituksessa SLICES-luokitusta, jonka luemme toisesta taulusta. Luokittelu on kolmiportainen, joten ensimmäisenä luomme ominaisuustietokentän nimeltä **\"Taso_1\"** **Loppi_ruudukko-tason** attribuuttitauluun. Avaa ruudukko-tason attribuuttitaulu klikkaamalla **Avaa attribuuttitaulu -kuvaketta** ![](img/harjoitus_1/image8.png) **Ominaisuustietojen työkalupalkista** tai klikkaamalla tasoa hiiren oikealla painikkeella ja valitsemalla **Avaa attribuuttitaulu**. Luo uusi kenttä klikkaamalla **Uusi kenttä -kuvaketta** ![](img/harjoitus_1/image9.png) attribuuttitaulussa. | ||
|
||
![](img/harjoitus_1/image10.png) | ||
|
||
Lisää samalla tavalla myös kentät \"Taso_2\" ja \"Taso_3\". Nyt sinulla on suunnitelman pohja valmiina. | ||
|
||
## **Editointi relaatioita hyödyntämällä** | ||
|
||
Lähdetään tutkimaan luodun tason **attribuuttilomaketta**. Klikkaa tason päällä hiiren oikeaa painiketta ja valitse **Ominaisuudet... \> Attribuuttilomake**. Tehdään ensin muista kuin kolmesta luomastamme kentästä sellaisia, ettei niitä pysty muokkaamaan. Tämä tehdään poistamalla rasti **Muokattava-kohdasta**. | ||
|
||
![](img/harjoitus_1/image11.png) | ||
|
||
Siirry seuraavaksi tehtyjen luokitusten kenttiin. Valitse Taso_1-kentän muokkauksen tyypiksi **Arvojen suhde** ja aseta määritykset seuraavan kuvan mukaisesti: | ||
|
||
![](img/harjoitus_1/image12.png) | ||
|
||
Lisää samalla tavalla myös relaatiot kentille **Taso_2** ja **Taso_3**, mutta muuta **Taso-kohtaan** oikea luokitustaso (2 ja 3). Paina sitten **OK**. | ||
|
||
Valitse nyt kartalta useampi ruutu ja klikkaa sitten **Muokkaa samalla kaikkien valittujen kohteiden attribuutteja -kuvaketta** ![](img/harjoitus_1/image13.png). Pääset nyt valitsemaan alasvetovalikosta oikeita luokkia näihin ruudukoihin. | ||
|
||
![](img/harjoitus_1/image14.png) | ||
|
||
Käytännössä saat siis oikeat arvot kenttiin kirjoittamatta niitä manuaalisesti. Kuitenkin tässä tapauksessa käyttäjän on vielä mahdollista tehdä ns. vääriä valintoja, eli on mahdollista että valitset ylemmästä luokasta jonkun, joka ei vastaa alemman luokan määrityksiä. Valitse kuitenkin kaikille valituille ruuduille jokin pääluokka. | ||
|
||
## **Relaatioiden sisäiset säännöt** | ||
|
||
Asetetaan nyt säännöt, jonka mukaan relaatiot riippuvat lomakkeen täytössä tehdyistä valinnoista. Mene uudestaan tason **Attribuuttilomakkeeseen** ja valitsemaasi tason ominaisuuskenttään (Taso_1, Taso_2 tai Taso_3). Syötä Taso_2 -kentän **Suodatinlauseke-kenttään** seuraava lauseke: | ||
|
||
::: code-box | ||
left("koodi",1)=current_value('Taso_1') | ||
::: | ||
|
||
![](img/harjoitus_1/image15.png) | ||
|
||
Käytännössä tämä määrittää rajoituksen, jonka mukaan lomakkeella näytetään ainoastaan sellaisia kohteita, joiden koodi vastaa ylemmän tason määritystä. Tee samalla logiikalla määritykset tasolle 3, mutta muuta lausekkeen numerot 1 numeroiksi 2. Mene nyt **Loppi_ruudukko-tasolle** ja yritä luoda kokonaan uusi geometria. Jos määritykset toimivat, editointi ei anna nyt käyttäjän syöttää vääriä tietoja! | ||
|
||
![](img/harjoitus_1/image16.png) | ||
|
||
## **Lisätehtävä: automaattisesti täydentyvät arvot** | ||
|
||
**Attribuuttilomake**-välilehden avulla voit myös asettaa lausekkeita, joiden avulla kenttien arvot täydentyvät automaattisesti. Lauseke annetaan välilehden alaosan **Oletusarvo** -kohdassa. | ||
|
||
![](img/harjoitus_1/image17.png) | ||
|
||
Asetetaan nyt oletusarvot siten, että käyttäjän valitessa suoraan sopivan maankäyttöluokan tasolla 3, tasojen 1 ja 2 arvot täydentyvät automaattisesti vastaaviksi. Huomaa, että jos käytät oletusarvoja, edellisessä tehtävässä tehdyt suodatuslausekeet eivät toimi yhtäaikaisesti oletusarvojen kanssa. Ne on siis ensin poistettava. | ||
|
||
Tasolla 3 ei anneta mitään suodatuslauseketta eikä myöskään oletusarvoa. Tasolle 2 asetetaan oletusarvo-kohtaan lauseke siten, että se poimii Taso_3-kentän nykyisestä arvosta kaksi vasemmanpuoleisinta merkkiä ja kirjoittaa saamansa tuloksen Taso_2 -kenttään. | ||
|
||
::: code-box | ||
left(attribute(\$currentfeature, 'Taso_3'),2) | ||
::: | ||
|
||
Ruksi myös **Käytä oletusarvoa päivityksessä** -kohta. | ||
|
||
Vastaavasti Taso_1:n oletusarvoksi asetetaan yhden vasemmanpuoleisimman merkin poiminta Taso_3-kentästä. | ||
|
||
![](img/harjoitus_1/image18.png) | ||
|
||
Testaa lausekkeiden toimivuutta editoimalla muutaman kuusikulmion ominaisuustietoja: valitse Taso_3-kentässä haluamasi maanäyttöluokka ja tarkista, että kentät Taso_1 ja Taso_2 päivittyvät. | ||
|
||
![](img/harjoitus_1/image19.png) | ||
|
||
Muita hyödyllisiä käyttötarjoituksia **oletusarvo** -toiminnolle on mm. kohteen editointihetken tallentaminen komennolla **now()** sekä kohteen luojan tai editoijan käyttäjätunnuksen tallentaminen komennolla **user_account_name**. | ||
|
||
Kun olet valmis, tallenna projektitiedosto kurssihakemistoon pikanäppäimellä **CTRL + T** (englanninkielisessä QGISissä **CTRL + S**) tai päävalikosta **Projekti \> Tallenna**. | ||
|
||
::: hint-box | ||
Psst! Muista tukipalvelu! Koulutuksen jälkeen saat henkilökohtaista tukea Gispon tukipalvelun kautta lähettämällä yksinkertaisesti tuki\@gispo.fi-sähköpostiosoitteeseen kysymyksen tai kommentin jostakin sinua mietityttävästä asiasta. Gispon tiimi auttaa sinua toimiesi äärellä. Kysymykset käsitellään henkilökohtaisesti. | ||
::: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
# Harjoitus 2: Topologia ja geometria | ||
|
||
**Harjoituksen sisältö** | ||
|
||
Harjoituksessa opetellaan käyttämään QGISia topologian ja geometrian tarkistukseen. | ||
|
||
**Harjoituksen tavoite** | ||
|
||
Harjoituksen jälkeen opiskelija osaa tarkastaa aineistonsa geometrioita ja tehdä niihin manuaalisesti ja automaattisesti tarvittavia korjauksia. | ||
|
||
**Arvioitu kesto** | ||
|
||
30 minuuttia. | ||
|
||
## **Valmistautuminen** | ||
|
||
Avaa uusi QGIS-projekti (**Projekti \> Uusi**) ja tallenna se nimellä \"**QGIS-harjoitus 4**\". Lisää projektiin seuraavat aineistot: | ||
|
||
- **Rakennukset_alueina_GK25.shp** | ||
|
||
## **Virheellisen aineiston tuonti QGISiin** | ||
|
||
**Rakennukset_alueina_GK25-tiedosto** on Helsinki Region Infoshare -sivustolta ladattu avoin aineisto, joka sisältää Vantaan kaupungin rakennukset. Aineiston on kerrottu päivittyvän viikoittain ja sen lähteeksi on merkitty Vantaan kaupungin kiinteistöt ja asuminen, mutta pienellä tarkastelulla huomaamme, että kyseinen aineisto ei ole täysin virheetöntä. | ||
|
||
![](img/harjoitus_2/image1.png) | ||
|
||
Aineisto näyttää silmämääräisesti olevan kunnossa, mutta entä sen koneluettavuus? Jos aineisto ei ole kaikkien teknisten määritysten mukainen, voi olla että sillä ei pysty esimerkiksi suorittamaan kaikkia spatiaalisia operaatioita tai sen siirrossa formaatista toiseen tulee ongelmia. Tarkastetaan siis onko tässä aineistossa joitain mahdollisia ongelmia. Tähän tarkoitukseen löytyy QGISistä useita erilaisia työkaluja. | ||
|
||
## **Tarkista kelpoisuus (Check validity)** | ||
|
||
Aloitetaan aineiston koneluettavuuden (= aineiston laadun) tarkistus \"kevyimmällä\" tarkistustyökalulla. Valitse QGISin päävalikosta **Vektori \> Geometria-työkalut \> Tarkista kelpoisuus...**, jolloin QGISiin avautuu **Tarkista kelpoisuus -ikkuna**. | ||
|
||
![](img/harjoitus_2/image2.png) | ||
|
||
Kyseinen algoritmi tekee kelpoisuustarkistuksen tason geometrioille. Geometriat luokitellaan kolmeen ryhmään (**Kelvollinen tulos, Virheellinen tulos** ja **Virhetuloste**) ja kullekin näistä luodaan uusi taso. Oletusarvoisesti algoritmi käyttää tiukkaa OGC-määritystä polygonin validoinnissa, mutta me emme halua ottaa tiukinta mahdollista määritystä huomioon, joten valitse **Ignore ring self intersections**. Koska rakennus voi olla geometrialtaan täysin validi vaikka siinä olisi reikä, jätetään kyseiset virheilmoitukset huomiotta. Paina sitten **Suorita**. | ||
|
||
![](img/harjoitus_2/image3.png) | ||
|
||
QGIS tuottaa oletusasetuksilla kolme väliaikaista tasoa, jotka se lisää projektiin. Saat vielä kohteiden määrän näkyviin klikkaamalla tasoa hiiren oikealla ja valitsemalla **Näytä kohteiden lukumäärä**. Kuten alla olevasta kuvasta näkyy, aineisto sisältää melkoisen määrän virheellisiä geometrioita. | ||
|
||
![](img/harjoitus_2/image4.png) | ||
|
||
Avaa **Virheellinen tulos -tason** attribuuttitaulu ja tarkastele **\_error-saraketta**. Sarake sisältää selkokielisen kuvauksen virheen luonteesta. Suurin osa virheilmoituksista on **Self-intersection-virheitä**, mikä tarkoittaa että polygoni leikkaa itsensä. Tämä analyysi tuo siis **tiedon virheellisistä kohteista, mutta ei auta niiden korjaamisessa**. | ||
|
||
## **Topologian tarkastaja (Topology checker)** | ||
|
||
Seuraava vaihtoehto aineiston laatutarkistukseen on **Topologian tarkastaja -työkalu**. Se on QGISin ns. **ytimeen kuuluva lisäosa**, eli se tulee QGISin mukana, mutta sitä ei ole aina aktivoitu. Mene ylävalikosta **Lisäosat \> Hallitse ja asenna lisäosia...** ja kirjoita hakukenttään **\"Topologian tarkastaja\"**. Klikkaa työkalu aktiiviseksi, jolloin se ilmestyy ylävalikon **Vektori-valikkoon**. | ||
|
||
![](img/harjoitus_2/image5.png) | ||
|
||
**Topologian tarkistin -paneeli** aukeaa seuraavasta **Topologian tarkastaja -kuvakkeesta** ![](img/harjoitus_2/image6.png). Aineiston topologisen eheyden voi tarkistaa tästä paneelista. | ||
|
||
![](img/harjoitus_2/image7.png) | ||
|
||
Valitse ensimmäiseksi **Topologian tarkastaja -paneelista Konfiguroi** ![](img/harjoitus_2/image8.png), jolloin QGISiin aukeaa uusi **Topologiasääntöjen asetukset -ikkuna**. Tässä ikkunassa voidaan määritellä ne säännöt, joiden mukaan QGIS käsittelee aineiston geometrioita. Säännöt voivat koskea vain yhtä tasoa tai ne voivat olla kahden tason välisiä sääntöjä. Sääntöjä voi olla esimerkiksi etteivät kaksi tasoa saa olla päällekkäin. Lisää aineistoon kolme sääntöä kuvan mukaisesti ja paina **OK**. | ||
|
||
![](img/harjoitus_2/image9.png) | ||
|
||
Klikkaa sitten **Topologian tarkastaja -paneelissa Tarkasta kaikki -kuvaketta** ![](img/harjoitus_2/image10.png), jolloin QGIS ajaa kaikki äsken listatut säännöt. Minkälaisia tuloksia saat? Tarkastele tuloksia paneelin valikosta. | ||
|
||
## **Tarkista geometriat (Geometry checker)** | ||
|
||
Kolmas ja järein vaihtoehto geometrioiden tarkistukseen on **Tarkista geometriat -työkalu**. Tämäkin työkalu pitää käydä aktivoimassa edellisen tapaan lisäosien valikoimasta. Tämäkin työkalu ilmestyy ylävalikon **Vektori-valikkoon**. | ||
|
||
![](img/harjoitus_2/image11.png) | ||
|
||
Kuten heti huomaat kyseisen työkalun valikosta, **Tarkista geometriat -työkalu** antaa ylivoimaisesti laajimman valikoiman validoinnin toiminnallisuuksista. Tehdään kuitenkin perustason tarkastus aineistolle ja etsitään ainoastaan duplikaatteja. Valitse siis kuvan mukaiset asetukset aineiston validoinnissa ja valitse viimeiseksi vaihtoehdoksi (vieritä ikkunaa alaspäin) **Muokkaa syötetasoja**. Paina sitten **Suorita**. | ||
|
||
![](img/harjoitus_2/image12.png) | ||
|
||
Työkalu ajaa algoritmia hetken, mutta palauttaa sen jälkeen virheilmoitukset havaitsemistaan virheellisistä kohteista. Voit tarkastella yksittäistä virhettä klikkaamalla riviä; kartta zoomautuu oikeaan sijaintiin ja virheellinen kohde korostuu. Virheitä voi korjata yksitellen, mutta myös useamman virheen voi valita ja korjata isomman osion kerralla. Ennen varsinaista virheiden korjausta voit määrittää virheiden ratkaisumenetelmät valitsemalla **Error resolution settings**. Aseta **Duplicate-kohtaan** ratkaisuksi **Remove duplicates**. | ||
|
||
![](img/harjoitus_2/image13.png) | ||
|
||
Korjaa virheet valitsemalla **Fix selected errors using default resolution**, jolloin QGIS poistaa duplikaattigeometriat, kuten määrittelimme äsken. | ||
|
||
![](img/harjoitus_2/image14.png) | ||
|
||
Voit lukea lisää työkalusta QGISin dokumentaatiosta: | ||
|
||
<https://docs.qgis.org/3.22/en/docs/user_manual/plugins/core_plugins/plugins_geometry_checker.html> | ||
|
||
::: hint-box | ||
Miksi kaikki menetelmät tuottivat niin erilaisia tuloksia ja miksi vaihtoehtoja tarkastukseen on niin monta? Entä mikä olisi omalle aineistollesi paras mahdollinen tapa tarkistukseen? | ||
::: | ||
|
||
## **Geometrian ja topologian validointi tasoa muokattaessa** | ||
|
||
Voit välttää virheellisten geometrioiden muodostumista jo aineistoa digitoidessa ja editoidessa. Avaa muokattavan tason **Ominaisuudet** -ikkuna ja mene **Digitointi** -välilehdelle. Ruksi aktiivisiksi haluamasi korjaukset. | ||
|
||
![](img/harjoitus_2/image15.png) | ||
|
||
Nimestään huolimatta tämä toiminto ei tee korjauksia automaattisesti, mutta huomauttaa virheellisistä geometrioista. | ||
|
||
![](img/harjoitus_2/image16.png) | ||
|
||
Editoidessa voit hyödyntää myös **Tarttumisen työkalut** -palkin toimintoa päällekkäisten kohteiden digitoinnin välttämiseen. | ||
|
||
![](img/harjoitus_2/image17.png) | ||
|
||
Kun olet valmis, tallenna projektitiedosto kurssihakemistoon pikanäppäimellä **CTRL + T** (englanninkielisessä QGISissä **CTRL + S**) tai päävalikosta **Projekti \> Tallenna**. | ||
|
||
::: hint-box | ||
Psst! Muista tukipalvelu! Koulutuksen jälkeen saat henkilökohtaista tukea Gispon tukipalvelun kautta lähettämällä yksinkertaisesti tuki\@gispo.fi-sähköpostiosoitteeseen kysymyksen tai kommentin jostakin sinua mietityttävästä asiasta. Gispon tiimi auttaa sinua toimiesi äärellä. Kysymykset käsitellään henkilökohtaisesti. | ||
::: |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
/*! | ||
* Hamburgers | ||
* @description Tasty CSS-animated hamburgers | ||
* @author Jonathan Suh @jonsuh | ||
* @site https://jonsuh.com/hamburgers | ||
* @link https://github.com/jonsuh/hamburgers | ||
*/ | ||
.hamburger { | ||
padding: 15px 15px; | ||
display: inline-block; | ||
cursor: pointer; | ||
transition-property: opacity, filter; | ||
transition-duration: 0.15s; | ||
transition-timing-function: linear; | ||
font: inherit; | ||
color: inherit; | ||
text-transform: none; | ||
background-color: transparent; | ||
border: 0; | ||
margin: 0; | ||
overflow: visible; } | ||
.hamburger:hover { | ||
opacity: 0.7; } | ||
.hamburger.is-active:hover { | ||
opacity: 0.7; } | ||
.hamburger.is-active .hamburger-inner, | ||
.hamburger.is-active .hamburger-inner::before, | ||
.hamburger.is-active .hamburger-inner::after { | ||
background-color: #fbfbfb; } | ||
|
||
.hamburger-box { | ||
width: 40px; | ||
height: 24px; | ||
display: inline-block; | ||
position: relative; } | ||
|
||
.hamburger-inner { | ||
display: block; | ||
top: 50%; | ||
margin-top: -2px; } | ||
.hamburger-inner, .hamburger-inner::before, .hamburger-inner::after { | ||
width: 40px; | ||
height: 4px; | ||
background-color: #000; | ||
border-radius: 4px; | ||
position: absolute; | ||
transition-property: transform; | ||
transition-duration: 0.15s; | ||
transition-timing-function: ease; } | ||
.hamburger-inner::before, .hamburger-inner::after { | ||
content: ""; | ||
display: block; } | ||
.hamburger-inner::before { | ||
top: -10px; } | ||
.hamburger-inner::after { | ||
bottom: -10px; } | ||
|
||
/* | ||
* Arrow | ||
*/ | ||
.hamburger--arrow.is-active .hamburger-inner::before { | ||
transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); } | ||
|
||
.hamburger--arrow.is-active .hamburger-inner::after { | ||
transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); } | ||
|
||
/* | ||
* Collapse | ||
*/ | ||
.hamburger--collapse .hamburger-inner { | ||
top: auto; | ||
bottom: 0; | ||
transition-duration: 0.13s; | ||
transition-delay: 0.13s; | ||
transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } | ||
.hamburger--collapse .hamburger-inner::after { | ||
top: -20px; | ||
transition: top 0.2s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear; } | ||
.hamburger--collapse .hamburger-inner::before { | ||
transition: top 0.12s 0.2s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.13s cubic-bezier(0.55, 0.055, 0.675, 0.19); } | ||
|
||
.hamburger--collapse.is-active .hamburger-inner { | ||
transform: translate3d(0, -10px, 0) rotate(-45deg); | ||
transition-delay: 0.22s; | ||
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } | ||
.hamburger--collapse.is-active .hamburger-inner::after { | ||
top: 0; | ||
opacity: 0; | ||
transition: top 0.2s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.22s linear; } | ||
.hamburger--collapse.is-active .hamburger-inner::before { | ||
top: 0; | ||
transform: rotate(-90deg); | ||
transition: top 0.1s 0.16s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.13s 0.25s cubic-bezier(0.215, 0.61, 0.355, 1); } |
Oops, something went wrong.