Opprette en adaptiv, filtrerbar portefølje ved hjelp av jQuery-isotop

I dag tar vi en PSD-porteføljelayout fra ThemeForest, og kopierer den helt i HTML og CSS, samtidig som den gjør den adaptiv. Vi vil da gå videre og integrere isotop-jQuery-pluginet for å gjøre det til en fullt funksjonell filtrerbar portefølje.


Trinn 1: Organisering av prosjektet

Vi starter med å lage en enkel prosjektstruktur slik at alt holdes organisert. Vi lager tre mapper:

  • css - for våre CSS-filer
  • Bilder - alle bildene blir plassert her inne
  • js - for våre jQuery-plugins og tilpassede skript


Trinn 2: Dokument

Før vi sitter fast i kodingen, oppretter vi index.html-filen som kan plasseres i roten til prosjektet. Vi kaster inn en grunnleggende HTML5-mal, som kobler til vår CSS-fil i hode. I tillegg må vi koble til flere filer:

  • jQuery Library - Vi må koble til jQuery-biblioteket klar til senere når vi bruker isotop-pluginet, vil vi fortsette å kaste det inn nå. Jeg har gått og brukt biblioteket som hostes av Google (anbefales).
  • HTML5 Shiv - Siden vi skal bruke HTML5-elementer, må vi sørge for at vi kobler til HTML5 Shiv for å tillate elementene å bli gjenkjent i eldre IE-versjoner.
  • Google webfonter - Hvis du ser på PSD, merker du at skriften PT Sans er brukt. Siden denne fonten ikke vil være lokalt tilgjengelig for mange brukere, kobler vi til den ved hjelp av tjenesten Google Web Fonts.
       Hipstar Tutorial            

Trinn 3: Legge til generelle stiler

Vi trenger nå noen generelle stiler i vår CSS-fil. Dette vil innebære bare en enkel tilbakestilling som du kan legge til toppen av CSS-filen din.

 html, kropp, div, span, applet, objekt, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, en, abbr, og, adresse, sitere, kode, del, DFN, em, img, ins, kbd, q, s, samp, liten, streik, sterk, sub, sup, tt, Var, b, u, i, dl, dt, dd, ol, ul, li, feltsett, form, etikett, legende, bord, bildetekst, tbody, TFOOT thead, st, th, td, artikkel, side, lerret, detaljer, embed, figur, figcaption, bunntekst, header, hgroup, meny, nav, utgang, rubin, seksjon, sammendrag, tid, mark, lyd, video, inngang, tekstfelt velg bakgrunn: gjennomsiktig; kant: 0; font-size: 100%; margin: 0; omriss: 0; padding: 0; vertical-align: baseline artikkel, bortsett detaljer, figcaption, figur, footer, header, hgroup, meny, nav, del display: block body linjehøyde: 1 abbr [tittel], dfn [title] border-bottom: 1px dotted; cursor: hjelpe formatering for blokksitat, q anføres: ingen innrykket tekst: før, innrykket tekst: etter, q: før, q: etter innhold: none del tekst-dekorasjon: linje-through hr bakgrunn: gjennomsiktig; kant: 0; klar: begge, farge: gjennomsiktig; høyde: 1 px; margin: 0; padding: 0 mark bakgrunnsfarge: # ffffb3; font-type: kursiv inngang velg vertikal-Justering: middel ins backgro und-farge: rød; farge: hvit; tekst-dekorasjon: ingen ol, ul listestil: ingen tabell grensekollaps: kollaps; grenseavstand: 0 a tekstdekorasjon: ingen;. klar klar : begge; display: block; høyde: 0; overløp: skjult; synlighet: skjult, bredde: 0 .clearfix: etter klar: begge, innhold: "; display: block; font-size: 0; høyde : 0; linjehøyde: 0; synlighet: skjult; bredde: 0 * html .clearfix,: første barn + html .clearfix zoom: 1

Trinn 4: Starter med toppteksten

Nå begynner vi å bygge opp strukturen på nettstedet! Vi starter med overskriften og gjør det ved å bruke HTML5 Header-elementet.

  

Deretter legger vi til noen CSS for vår overskrift. Vi bruker noen grunnleggende stiler her, men det viktigste aspektet å ta hensyn til er plasseringen. Her bruker vi en posisjon av faste og deretter 0 på toppen, til venstre og høyre. Dette sikrer at toppteksten forblir øverst i vinduet når du ruller - og at den fyller hele høyden på nettleseren.

 .header høyde: 69px; bakgrunn: url (... /images/header.png) gjenta; grensebunn: 1px solid #fff; -webkit-boks-skygge: 0 0 7px rgba (0,0,0, .25); -moz-boks-skygge: 0 0 7px rgba (0,0,0, .25); boks-skygge: 0 0 7px rgba (0,0,0, .25); stilling: fast; topp: 0; venstre: 0; høyre: 0; z-index: 101; 

Trinn 5: Logoet og "Hire Me" -merket

For enkelhets skyld vil begge deler bli utført ved hjelp av bilder, men vi vil også pakke dem inn i ankeretiketter og gi dem en klasse slik at vi kan sette noen stiler for posisjonering.

  Hipstar Ansette meg 

Begge disse bruker lignende styling, begge posisjoneres absolutt (toppteksten er foreldrene) med en 0 topp. Logoen har forlatt 0 for å holde den til venstre og leiet-meg-merket har en rett på 20px for å skyve den litt av fra høyre.

 .logo posisjon: absolutt; topp: 0; venstre: 0;  .hire-meg posisjon: absolutt; topp: 0; høyre: 20px; 

Du bør ha noe som ser slik ut:



Trinn 6: Sidebjelken

Igjen vil vi dra nytte av HTML5s oppslag og opprette sidebjelken ved hjelp av side element.

 

På CSS for sidebjelken vil du legge merke til at vi har brukt posisjonen fast igjen, teknisk sett gjelder dette ikke her da skyveknappen skal fylle høyden på siden.

 .sidebar bredde: 149px; stilling: fast; top: 70 piksler; venstre: 0; bottom: 0; høyre: 0; z-indeks: 1; float: venstre; border-right: 1px solid # a13d36; margin-right: -1px; -webkit-boks-skygge: innsett -1px 0 0 # ff786b; -moz-box-shadow: insert -1px 0 0 # ff786b; boks-skygge: innspill -1px 0 0 # ff786b; 

Trinn 7: Sidebar Bakgrunn!

Du vil legge merke til at vi ikke har definert en bakgrunn ... Vi bruker sidebarbakgrunnen, men ikke til sidefeltet. Vi bruker den på kroppen og gjentar den på y-aksen, slik at den går fra topp til bunn. En posisjon av venstre Vil også brukes til å sikre at bakgrunnen er plassert på venstre side av siden for sidefeltet.

Å se ettersom dette er en kroppsstil, kan det være fornuftig å bla opp CSS-filen din og plassere den nærmere toppen. Jeg gikk også videre og la til en skriftlig jevnegenskap for webkit-nettlesere.

 kropp bakgrunn: # f8faf4 url ​​(... /images/sidebar_body.png) fast venstre repetisjon-y; -webkit-font-glatting: antialiased; 

Vi har nå fullført basisen til sidelinjen!



Trinn 8: Navigeringstid

Nå er sidebaret gjort, vi kan legge til navigasjonen til den. Vi lager en uordnet liste og pakker den sammen med HTML5 Nav-elementet.

 

Nå er noen grunnleggende styling for navigasjonen, legge til en bakgrunn, skrifttypestiler og også skrifttypefamilien fra Google Web Fonts - PT Sans.

 nav.primary ul li a bakgrunn: url (... /images/nav.png) repeat-x center top; høyde: 39px; bredde: 149px; display: block; border-bottom: 1px solid # ba4b42; font-familie: 'PT Sans Narrow', Helvetica, Arial, sans-serif; font-size: 18 piksler; farge: #fff; text-indent: 20px; tekstskygge: 0 -1px 0 # BA1E1A; text-decoration: none; linje-høyde: 39px;  nav.primary ul li a: hover color: # E9EBE5; bakgrunnsposisjon: midtbunn; 

Trinn 9: Opprette hovedinnholdsområdet

 

Vi må nå opprette en innpakningsbeholder som holder porteføljepostene. Også, vi må legge til noen marginer og paddinger for å sikre at oppføringene vises på riktig sted. Dette kan gjøres ved først å flytte hele elementet bort fra topptekst og sidebjelke.

Hvis vi ser på toppteksten som er 70px høy, trenger vi 70px margin-top. Sidebjelken er 150px bred, så vi bruker 150px margin-left. Den endelige tingen er 20px polstring på toppen og igjen for å skyve oppføringene vekk fra topptekst og sidebjelke.

 .main polstring: 20px 20px 0; margin: 70px 0 0 150px; 

Trinn 10: Legge til en porteføljeoppføring

Tid til å starte med porteføljens oppføringer. Gå videre og opprett en div med en klasse av portefølje innenfor vårt hovedområde, vil dette holde porteføljepostene våre sammen. Vår porteføljeoppføring består av en figur (igjen et HTML5-element) som brukes til å betegne en container for media av noe slag.

Vi vil da få et bilde med to spenner; en for båndet og en for svingeren. Du kan også bruke pseudo-elementer for disse, noe som vil lette oppmerkningen, men redusere sidens kompatibilitet på siden.

 

Trinn 11: Styling av porteføljeposten

Styling for porteføljen er grunnleggende ting. Vi flyter til venstre og legger 20px av margen høyre og nederst. For å lage den hvite grensen legger vi ganske enkelt til noe polstring og deretter en bakgrunn, disse blir avrundet ved hjelp av en enkel grense-radius på 5px (mens du husker prefiksene). Endelig vil en boksskygge bli brukt.

 .oppføring posisjon: relativ; float: venstre; margin-right: 20px; margin-bottom: 20 piksler; Markøren: pekeren; bakgrunn: #fff; padding: 10px; bredde: 440px; -webkit-border-radius: 5 px; -moz-border-radius: 5 px; border-radius: 5 px; -webkit-boks-skygge: 0 0 7px rgba (0,0,0, .1); -moz-boks-skygge: 0 0 7px rgba (0,0,0, .1); boks-skygge: 0 0 7px rgba (0,0,0, .1); 

Når vi bruker 20px av margin til høyre for oppføringene, må vi trekke det fra foreldrebeholderen (porteføljens div).

 .portefølje margin-right: -20px; 

Trinn 12: Legge til oppføringsbåndet

Vi opprettet båndmarkeringen når du legger til porteføljeposten (selv om du igjen har brukt et pseudo-element), må vi nå stile den ved hjelp av CSS.

 .bånd bakgrunn: url (... /images/camera_ribbon.png) no-repeat; bredde: 31px; høyde: 47px; stilling: absolutt; top: -4px; høyre: 11px; z-indeks: 9999; 

Trinn 13: Porteføljehånerstat

Den siste tingen å gjøre for porteføljen er å legge til sveverstaten. Dette vil bli oppnådd med det spekteret vi opprettet tidligere, alt vi trenger nå er styling. Vi bruker et bilde og en svart bakgrunn med en alfagasitet på 70%. Vi har også lagt til noen CSS3-overganger for å muliggjøre en jevn sveveffekt. Det siste er å legge til opacity: 1; for når du svinger over inngangen, som vil forsvinne i hoverdelen.

 .hover bakgrunn: rgba (0,0,0, .7) url (... /images/hover.png) no-repeat center; stilling: absolutt; top: 10px; venstre: 10px; bunn: 13 piksler; høyre: 10px; opacity: 0; -webkit-overgang: alle .3s brukervennlige -moz-overgang: alle .3s lett-i-ut; -ms-overgang: alle .3s lett-i-ut; -o-overgang: alle .3s lett-i-ut; overgang: alle .3s lett-i-ut;  .entry: hover .hover opacity: 1; 

Nå er vårt porteføljeobjekt ferdig, du er fri til å legge til egen og endre bildene!



Trinn 14: Adaptiv godhet

Nå som vi har kopiert PSD til en fungerende design, vil vi fortsette og gjøre den tilpasningsdyktig. Vi bruker ikke et rent fleksibelt rutenett, og derfor er det vi ikke praktiserer det vi praktiserer mottakelig. Vi bruker CSS3 Media Queries for å endre og redigere oppsettet når det er i forskjellige visningsmoduser. Vi bruker grove dimensjoner, og gir oss det som mer eller mindre kan oppfattes som Tablet Portrait Orientation, Tablet Landscape Orientation, Orientering for mobilportrett og endelig Mobile Landscape Orientation.

Før vi begynner å redigere oppsettet, må vi gjøre to ting. For det første må vi legge til metadag for visningsport, som gjør at nettstedet vårt kan vises korrekt på mobiler og nettbrett. Hvis du vil vite mer om dette, må du sjekke ut denne artikkelen av Ian Yates. Det siste er å legge til en kort bit av CSS for å tillate bildene våre til å være flytende:

 img maksimal bredde: 100%; 

Trinn 15: Tabletportrett

Vi starter med å målrette tabletter med stående orientering. Det er bare nødvendig med en liten redigering for å tilpasse oppsettet. Den viktigste for å legge merke til er inngangen; Det blir gjort mindre for å imøtekomme flere oppføringer på hver linje.

 @media bare skjerm og (min bredde: 768px) og (maksimal bredde: 959px) .content padding: 20px 0 0 20px;  .entry width: 258px; 

Trinn 16: Tablet Landscape

Vanligvis ville du ikke målrette landskapsretningen til en nettbrett, med mindre du virkelig trenger det, men på grunn av utformingen av denne siden vil det sikkert hjelpe oss. Vi vil ikke bruke min og maks bredder for å bestemme visningsportstørrelsen - vi målretter den mot orientering. Denne gangen bruker vi enda mindre kode ved ganske enkelt å endre bredden på porteføljens oppføring.

 @media bare skjerm og (maksimal enhetbredde: 1024px) og (orientering: landskap) .entry bredde: 386px; 

Trinn 17: Mobil portrett

Vi beveger oss på mobiler nå, med utgangspunkt i stående orientering. Denne gangen må vi gjøre litt mer redigering. Vi skal justere oppsettet nå, på grunn av at skjermen blir mindre, er vi ikke lenger i stand til å få plass til sidelinjen til venstre med oppføringer til høyre. Vi flytter sidebjelken før oppføringene og har den fylt hele bredden på skjermen.

På grunn av at overskriften har en stor størrelse med sidebar / navigasjon under det, kan du kanskje ikke se så mange av oppføringene. Vi fjerner posisjon: fast og endre den til absolutte så overskriften vil nå bla i stedet for å holde seg øverst på siden.

 @media bare skjerm og (maks bredde: 767px) kropp bakgrunnsbilde: ingen;  .header posisjon: absolutt; float: venstre; bredde: 100%;  .logo float: left;  .hire-me float: right;  #wrapper float: left; bredde: 100%;  .sidebar bredde: 100%; stilling: i forhold; z-indeks: 1; float: venstre; border-right: 1px solid # a13d36; margin-right: -1px; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none;  nav.primary li float: left; bredde: 100%; bakgrunn: url (... /images/sidebar.png);  nav.primary ul li a bredde: 100%;  nav.primary ul li a: aktiv, nav.primary ul li a.selected background: url (... /images/mobile_nav_active.png);  .page float: left; bredde: 100%;  .main float: left; polstring: 20px 20px 0; margin: 70px 0 0 0;  .entry width: 260px; 

Trinn 18: Å fikse noen posisjoneringsproblemer

Ok, nå har vi løpt inn i noen problemer. Sidebjelken har justert seg pent på skjermoppsettet, men porteføljeposter er posisjonert feil. Vi må gå tilbake til vårt oppslag og legge til to ekstra divs, en med et id for wrapper som vil pakke alt annet enn toppteksten og en annen med en klasseside som vil pakke inn hovedinnholdsområdet.

 

Etter å ha lagt til i nødvendig merking, må vi legge til noen stiler. Rull tilbake på toppen av CSS-filen din og legg til følgende:

 #wrapper høyde: auto; margin: 0; flow: hidden; padding: 0;  .page posisjon: relative; flow: hidden; top: 0px; margin: 0 px; padding: 0 px; border-left: 1px solid # a13d36; 

Trinn 19: Mobil Landskap

Ok, endelig landskapsretningen for mobil. Hvis du plasserer dette etter det mobile portrett CSS vi nettopp har opprettet, vil det arve disse stilene, .g.g den komplette bredden sidebar etc. Alt vi trenger å gjøre nå, er å endre inngangsbredden.

 @media bare skjerm og (min bredde: 480px) og (maks bredde: 767px) .entry bredde: 190px; 


Trinn 20: Introduksjon av isotop

Nå har vi dekket å skape designet vi kan begynne å gi den litt funksjonalitet! Vi bruker den strålende isotopen plugin av David DeSandro. Isotop brukes til å lage oppsett, filtrering og sortering. Det brukes ofte på porteføljer for å filtrere arbeidsstykker i ulike kategorier - for eksempel Webdesign, fotografi og illustrasjon. På det notatet, la oss få det installert!

Før vi kan legge den til i vårt design, må vi laste den ned. Gå videre til http://isotope.metafizzy.co/jquery.isotope.min.js. Du vil nå se isotop-javascriptfilen, bare gå til Arkiv> Lagre og lagre den i js-mappen vi opprettet i begynnelsen. Vi må da koble til skriptet i HTML-filen din.

 

Trinn 21: Filtreringsprosessen

For å tillate at våre porteføljeposter blir filtrert, må vi endre merkingen vår igjen. Vi starter med navigasjonen som vil filtrere for oss. Isotop bruker spesifikt HTML5-tilpassede dataattributter data-filter = "". Vi setter en verdi avhengig av kategorien; Webdesign bruker .web (merk at vi må legge til en periode før kategoriverdien). Ankermerket for Alle kategorier bruker ikke .alle men det bruker en stjerne.

 

Trinn 22: Filtrering av porteføljeposter

Den siste delen av filterprosessen er å redigere porteføljepostene. Etter å ha lagt til data-filteret verdier må du legge til de tilsvarende verdiene for hver oppføring. Hvis arbeidsoppføringen er i videokategorien, må du legge til en klasse med video. Vær oppmerksom på at hvis din data-filteret verdiene er små bokstaver, du må bruke små bokstaver for oppføringsklassene.

 

Trinn 23: Hekker pluggen

Det er på tide å aktivere isotop som vi skal gjøre i to deler. Først må vi koble den delen som vil sortere porteføljens oppføringer. Start med å opprette en ny fil kalt "custom.js" og legg den i js-mappen din.

 $ window .load (function () var $ container = $ ('.portefølje'); $ container.isotope (filter: '*', animationOptions: duration: 750, easing: 'linear' falsk,  ); );

Trinn 24: Klikk på Funksjon

Den andre delen vil koble navigasjonen for å tillate filtreringen til å skje.

 $ window .load (function () var $ container = $ ('.portefølje'); $ container.isotope (filter: '*', animationOptions: duration: 750, easing: 'linear' false,); $ ('nav.primary ul a'). klikk (funksjon () varvelger = $ (dette) .attr ('datafilter'); $ container.isotope (filter: animationOptions: duration: 750, easing: 'lineær', kø: false,); return false;););

Trinn 25: Legge til en aktiv stat

Vist i PSD er en aktiv tilstand for det gjeldende valgte navigasjonsanker. Vi må legge til noe mer markup, litt mer CSS og til slutt litt mer jQuery. Start med å gå tilbake til HTML-filen din og legge til class = "selected" til den første ankermerket.

 

Deretter må du legge til noe mer CSS, så legg til dette like under navigasjonsstilene.

 nav.primary ul li a: aktiv, nav.primary ul li a.selected background: url (... /images/nav_active.png); border-bottom: 1px solid # 9e3f38; 

Den endelige delen er noe jQuery, dette vil legge til klasser når du klikker for å vise den aktive knappen / kategorien.

 var $ optionSets = $ ('nav.primary ul'), $ optionLinks = $ optionSets.find ('a'); $ optionLinks.click (funksjon () var $ this = $ (dette); // ikke fortsett hvis allerede valgt hvis ($ this.hasClass ('selected')) return false; var $ optionSet = $ dette .parents ('nav.primary ul'); $ optionSet.find ('.valgt'). removeClass ('valgt'); $ this.addClass ('valgt'););

Trinn 26: Glemmer noe er vi?

Hvis du går videre og klikker nav-knappene, ser du at filteret fungerer! Men vent, det er ikke en jevn overgang! Vel, det er fordi vi fortsatt må legge til noen CSS-overganger.

 .isotop-element z-indeks: 2;  .isotope-hidden.isotope-item pointer-events: none; z-indeks: 1;  .isotope .isotope .isotop-item -webkit-overgangsperiode: 0.8s; -moz-overgangs-varighet: 0,8s; Overgangsperiode: 0.8s;  .isotope -webkit-overgangseiendom: høyde, bredde; -moz-overgangseiendom: høyde, bredde; overgangseiendom: høyde, bredde;  .isotope .isotop-item -webkit-transition-property: -webkit-transform, opacity; -moz-overgangsegenskap: -moz-transform, opacity; overgangseiendom: transformere, opacity; 

Konklusjon

Og der går vi, en annen nyttig opplæring ferdig! Du er fri til å bruke denne metoden i alle design du har. Gå og ha det gøy med det.


Jeg håper du likte denne opplæringen, takk for å lese!