með auðkenni "hverfa" sem verður svartur kápa okkar sem dökktir efnið þegar valmyndaráknið er smellt á.
Að lokum hringjum við í jQuery frá Google og eigin handritaskrá okkar sem er þar sem við munum vinna nokkuð. En fyrst skulum við fara í gegnum stíl.
Stíll með CSS
Þannig að við munum ekki fara í gegnum allar CSS stíl (ef þú vilt að þú getir skoðað eða "skoðað uppspretta" á kynningu) eins og þau eru að mestu notuð fyrir almenna stíl á síðunni, sem er ekki markmiðið af þessari grein. Við munum brjóta það upp og horfa á nokkrar klumpur af kóða sem eru mikilvæg fyrir þau áhrif. Svo fyrst af öllu:
html.no-js #fallback-nav { display: block; }html.no-js .fade { display: none; }html.no-js #navicon { display: none; }html.js #fallback-nav { display: none; }
Við munum sparka af því með því að ganga úr skugga um að ef vafrinn notandinn hefur ekki Javascript til staðar (það er þetta kennitala á HTML frumefni sem við sáum fyrr með Modernizr) þá munum við sýna # fallback-nav í hausnum og Við munum fela #fade DIV ásamt flakkáknið. Þetta er okkar fallback lausn þannig að fallback valmyndin þarf að vera stíll á hefðbundnum hætti. Við erum líka að fela þessa lausn ef JavaScript er í boði, eins og þú sérð í síðustu línu.
#navicon {float: right;font-size: 2em;text-decoration: none;position: relative;z-index: 9; }#navicon.open { color: white; }#navicon.open:hover { color: #e6e6e6; }#fade {position: fixed;top: 0;right: 0;bottom: 0;left: 0;background: #000;opacity: 0.5; }
Svo í þessum kafla erum við að stilla valmyndartáknið okkar í hausnum, það er frekar einfalt, bara að gefa það hlutfallslega stöðu og háum z-vísitölu (sem mun vera gagnlegt seinna þegar restin af efninu verður lakari út mun það vera áfram efst). Við erum líka að breyta litinni í hvítt þegar það er í flokki "opið" sem við munum bæta við og taka í burtu með jQuery. Við getum líka séð að einn div með auðkenni "hverfa" nær til að fylla allan skjáinn og fyllt með solid svarti með 50% gagnsæi. Ef notandi hefur ekki JavaScript þá verður þessi svarta sía falinn, ef ekki munum við fela það með jQuery. Lítum nú á valmyndina sjálft:
#main-nav {position: fixed;height: 100%;top: 0;right: -250px;background: #222;max-width: 250px;width: 100%;z-index: 5;text-align: center;display: flex;flex-direction: column; }#main-nav a {flex: 1;color: white;border-top: 1px solid #555;text-decoration: none;display: flex;flex-direction: column;justify-content: center; }#main-nav a:hover, #main-nav a.current { background: #3c3c3c; }
Svo síðast en ekki síst aðalvalmyndin. Ég þarf fyrst að bæta við að þetta er einfaldaðan kóða sem þyrfti nokkuð nokkrar seljandaforskeyti áður en það er samhæft við vafra. Til að ná þessu, mæli ég með að nota ógnvekjandi tól eins og Autoprefixer til að bæta við öllum réttu forskeyti fyrir þig.
Svo að það sé sagt, skulum líta á það sem það felur í sér: fyrst og fremst hefur það fast staðsetning efst á síðunni og neikvæð 250px til hægri. Þetta þýðir að það er þarna en bara "utan skjásins" (þar sem hún er með breidd 250 punkta). Hæðin er einnig 100%, þannig að það fyllir alla gluggann frá toppi til botns. Valmyndin þarf einnig z-vísitölu á milli 0 og 9 (fyrir ofan svarta síuna). Þá, hér er þegar galdur gerist, það hefur skjá: flex; eign, auk annars tengdrar eignar "sveigjanleika" (sem við höfum sett á "dálk" hér í stað þess að það er sjálfgefið "röð" sem þýðir að sveigjanlegir hlutir börnin - tenglarnir í valmyndinni - munu fylla alla hæðina foreldri hans í jöfnum hlutum).
Þannig hefur allt verið miðað við valmyndarhaldið # main-nav, næst þegar stíll tenglanna við gefum þeim sveigjanlegt gildi 1. Þetta er það sem gerir tengin að fylla alla hæðina jafnt. Þá eru þessi tenglar einnig sýndarvirði 'flex' sjálfir, sem þýðir að allir þættir inni í tenglunum verða fyrir áhrifum af þessu. Við tryggjum að sveigjanleiki sé enn "dálkur" og þá bætum við við eign "réttlætis innihalds: miðstöð". Þetta gerir textann sjálfan inni í tenglunum miðstöðvar lóðrétt eins og heilbrigður (þetta er ástæða þess að það eru divs inni í
tags af # main-nav, sem er ekki nákvæmlega merkingarmál en er mjög fljótleg og auðveld leið til að lóðrétta miðpunkti.)
Nú getum við ekki séð neitt sem við höfum bara gert alveg ennþá, við verðum nú að bæta virkni okkar við eigin scripts.js skrá okkar sem við kölluðum áður.
Bætir virkni við jQuery
Handritið með þessum hætti er mjög lítið og einfalt, en ég mun setja það allt hér fyrst og þá útskýra hvað er að gerast:
$(document).ready(function() {$('#fade').hide();$('#navicon').click(function() {if($('#navicon').hasClass('closed')) {$('body').animate({left: "-250px"} , 400) .css ({"flæða": "falinn"}); $ ('# main-nav'). ) .addClass ('opinn'). html ('x'); $ ('# hverfa'). fadeIn (); } annars ef ($ ('# navicon'). hasClass ('opinn')) {$('body').animate({left: "0"} , 400) .css ({"flæða": "fletta"}); $ ('# main-nav'). Animate ({hægri: "-250px"}, 400); $ (this) .removeClass ') .addClass (' lokað '). html (' ☰ '); $ (' # hverfa '). fadeOut (); }});});
Fyrst af öllu verðum við að fela svarta síuna. Þá verður næstum allt sem við gerum inni í aðgerð sem er tengt við smellahóp sem er bundið við valmyndartáknið. Þegar það er smellt, höfum við tvö mismunandi tilvik eða aðstæður; einn er þegar valmyndin er þegar falin (eins og sjálfgefið ástand) eða einn þegar valmyndin birtist. Svo er valmyndaráknið tengilinn með heiti lokaðs sem við bættum við og við stíll líka til að opna. Fyrsta "ef" yfirlýsing okkar er að ef tengilinn er lokaður (því sjálfgefið). Ef svo er þá þá allt
Einingin er hreyfð 250px til vinstri og hættir að fletta af síðunni. The # main-nav div er líka animated í stað, við erum að breyta því rétt gildi frá -250px til 0. Þá fjarlægjum við flokkinn "lokað" úr tengilanum og bætir við einn af "opnum" eins og heilbrigður eins og breyta html frá sérstökum staf þremur línum til "x". Að lokum erum við að hverfa í svörtu síunni til að gera restina af innihaldi myrkri. Og þannig er það! Það gefur okkur opið ástand valmyndarinnar.
Nú er "annað ef" yfirlýsingin miðuð við opinn kennslustund á valmyndarlistanum. Þegar við gerum það hið gagnstæða af öllu sem við gerðum áður, færum við líkamann aftur í stöðu, auk þess að færa valmyndina af skjánum aftur. Fjarlægi bekkinn 'opinn' úr valmyndartákninu, bætir 'lokað' og breytir efninu aftur á táknið og hverfur úr #fade div okkar. Ef allt fer samkvæmt áætlun er þetta hvernig virkni ætti að líta út:
Niðurstaða
Svo þarna höfum við það! Það er ein leið til að gera þetta flott áhrif sem við erum að sjá meira og meira núna með stíl nútíma vefhönnun, sérstaklega á farsímahönnun. Þessi áhrif eru góð og einföld lausn sem krefst ekki viðbætur og hægt er að aðlaga að fullu að þörfum hvers verkefnis. Einnig hefur það verið tækifæri til að nýta flexbox auk nokkurra annarra gagnlegra verkfæra. Láttu mig vita í athugasemdum ef eitthvað er sem þú myndir hafa gert öðruvísi eða bara það sem þú hélt!
Valin mynd / smámynd, rennihurðsmynd um Shutterstock.