Oprettelse af en adaptiv, Filtrerbar Portefølje Ved Hjælp af jQuery Isotop
() translation by (you can also view the original English article)
I dag tager vi et PSD Portfolio layout fra ThemeForest og replikerer det helt i HTML & CSS, samtidig med at det gør det adaptivt. Vi vil derefter gå videre og integrere isotop jQuery plugin'et for at gøre det til en fuldt funktionel filtrerbar portefølje.
Trin 1: Organisering af Projektet
Vi starter med at oprette en simpel projektstruktur så alt holdes organiseret. Vi opretter tre mapper:
- css - til vores CSS filer
- billeder - alle billeder vil blive placeret her
- js - til vores jQuery plugins og brugerdefinerede scripts



Trin 2: Dokument
Før vi går i stå i vores kodning vil vi oprette filen index.html, som kan være placeret i roden af dit projekt. Vi kaster i en grundlæggende HTML5 skabelon, der linker til vores CSS fil i hovedet
. Desuden bliver vi nødt til at linke til nogle flere filer:
- jQuery Library - Vi skal linke til jQuery biblioteket klar til senere, når vi bruger isotop-pluginet, vil vi gå videre og smide det ind nu. Jeg har gået og bruges biblioteket hostet af Google (stærkt anbefales).
- HTML5 Shiv - Da vi bruger HTML5 elementer, skal vi sørge for, at vi linker til HTML5 Shiv så elementerne kan genkendes i ældre IE versioner.
- Google Web Fonts - Hvis du ser på PSD'en vil du bemærke, at skrifttypen PT Sans er brugt. Da denne skrifttype ikke er lokalt tilgængelig for mange brugere, linker vi til den ved hjælp af tjenesten Google Web Fonts.
1 |
|
2 |
<!DOCTYPE html>
|
3 |
<html>
|
4 |
<head>
|
5 |
|
6 |
<!--Meta tags-->
|
7 |
<meta charset="utf-8"> |
8 |
|
9 |
<!--Title-->
|
10 |
<title>Hipstar Tutorial</title> |
11 |
|
12 |
<!--Stylesheets-->
|
13 |
<link rel="stylesheet" href="css/styles.css"> |
14 |
|
15 |
<!--Google Web Fonts-->
|
16 |
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Sans+Narrow|PT+Sans+Caption:400,700"> |
17 |
|
18 |
<!--jQuery-->
|
19 |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> |
20 |
|
21 |
<!--HTML5 Shiv-->
|
22 |
<!--[if lt IE 9]>
|
23 |
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
24 |
<![endif]-->
|
25 |
|
26 |
</head>
|
27 |
<body>
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
</body>
|
36 |
</html>
|
Trin 3: Tilføjelse af Generelle Stilarter
Vi skal nu bruge nogle generelle stilarter i vores CSS fil. Dette indebærer blot en simpel nulstilling, som du kan føje til toppen af din CSS fil.
1 |
|
2 |
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,and,address,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video,input,textarea,select{background:transparent;border:0;font-size:100%;margin:0;outline:0;padding:0;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}del{text-decoration:line-through}hr{background:transparent;border:0;clear:both;color:transparent;height:1px;margin:0;padding:0}mark{background-color:#ffffb3;font-style:italic}input,select{vertical-align:middle}ins{background-color:red;color:white;text-decoration:none}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}a{text-decoration:none;} |
3 |
.clear{clear:both;display:block;height:0;overflow:hidden;visibility:hidden;width:0}.clearfix:after{clear:both;content:' ';display:block;font-size:0;height:0;line-height:0;visibility:hidden;width:0}* html .clearfix,:first-child+html .clearfix{zoom:1} |
Trin 4: Start Med Overskriften
Nu vil vi begynde at opbygge strukturen af webstedet! Vi starter med hovedet og gøre det ved at bruge HTML5 Header element.
1 |
|
2 |
<header class="header clearfix"> |
3 |
|
4 |
|
5 |
</header>
|
Dernæst tilføjer vi nogle CSS til vores overskrift. Vi bruger nogle grundlæggende stilarter her, men det vigtigste aspekt, der skal tages i betragtning, er positioneringen. Her bruger vi en position af faste og derefter 0 øverst, til venstre og højre. Dette vil sikre vores header forbliver øverst i vinduet, når du ruller - og at det fylder hele højden af browseren.
1 |
|
2 |
.header { |
3 |
height:69px; |
4 |
background:url(../images/header.png) repeat; |
5 |
border-bottom:1px solid #fff; |
6 |
-webkit-box-shadow:0 0 7px rgba(0,0,0,.25); |
7 |
-moz-box-shadow:0 0 7px rgba(0,0,0,.25); |
8 |
box-shadow:0 0 7px rgba(0,0,0,.25); |
9 |
position:fixed; |
10 |
top:0; |
11 |
left:0; |
12 |
right:0; |
13 |
z-index:101; |
14 |
}
|
Trin 5: Logoet og 'Hire Me' Mærket
Af enkelhedens skyld vil begge dele blive udført ved hjælp af billeder, men vi vil også pakke dem inden for ankeretiketter og give dem en klasse, så vi kan indstille nogle stilarter til positionering.
1 |
|
2 |
<header class="header clearfix"> |
3 |
|
4 |
<a href="#" class="logo"><img src="images/logo.png" alt="Hipstar"></a> |
5 |
|
6 |
<a href="#" class="hire-me"><img src="images/hire_me.png" alt="Hire Me"></a> |
7 |
|
8 |
</header>
|
Begge disse bruger lignende styling, begge placeret helt (hovedet er forælder) med en 0 top. Logoet har forladt af 0 for at holde det til venstre, og leje mands-kiltet giver ret til 20px for at skubbe det lidt fra højre.
1 |
|
2 |
.logo { |
3 |
position:absolute; |
4 |
top:0; |
5 |
left:0; |
6 |
}
|
7 |
|
8 |
.hire-me { |
9 |
position:absolute; |
10 |
top:0; |
11 |
right:20px; |
12 |
}
|
Du skal have noget, der ser sådan ud:



Trin 6: Sidebjælken
Endnu engang vil vi udnytte HTML5's markup og oprette vores sidebjælke ved hjælp af side
elementet.
1 |
|
2 |
<aside class="sidebar clearfix"> |
3 |
|
4 |
|
5 |
</aside>
|
På CSS til sidebjælken vil du bemærke, at vi har brugt stillingen igen, teknisk set gælder det ikke her, da skyderen skal fylde sidens højde.
1 |
|
2 |
.sidebar { |
3 |
width:149px; |
4 |
position:fixed; |
5 |
top:70px; |
6 |
left:0; |
7 |
bottom:0; |
8 |
right:0; |
9 |
z-index:1; |
10 |
float:left; |
11 |
border-right:1px solid #a13d36; |
12 |
margin-right:-1px; |
13 |
-webkit-box-shadow:inset -1px 0 0 #ff786b; |
14 |
-moz-box-shadow:inset -1px 0 0 #ff786b; |
15 |
box-shadow:inset -1px 0 0 #ff786b; |
16 |
}
|
Trin 7: Sidebjælke Baggrund!
Du bemærker, at vi har undladt at definere en baggrund. Vi anvender sidebar baggrunden, men ikke til sidebjælken; vi anvender det på kroppen og gentager det på y-aksen, så det løber fra top til bund. En Venstre
position vil også blive brugt til at sikre, at baggrunden er placeret på venstre side af siden til sidebjælken.
Da dette er en kropsstil, kan det være fornuftigt at rulle op på din CSS fil og placere den nærmere toppen. Jeg gik også videre og tilføjede en skrifttypens glatningsegenskab til webkit browsere.
1 |
|
2 |
body { |
3 |
background:#f8faf4 url(../images/sidebar_body.png) fixed left repeat-y; |
4 |
-webkit-font-smoothing:antialiased; |
5 |
}
|
Vi har nu afsluttet bunden af vores sidebjælke!



Trin 8: Navigations Tid
Nu er sidebaret lavet, så vi kan tilføje navigationen til den. Vi opretter en uordnet liste og pakker den sammen med elementet HTML5 Nav.
1 |
|
2 |
<nav class="primary clearfix"> |
3 |
<ul>
|
4 |
<li><a href="#">All</a></li> |
5 |
<li><a href="#">Web Design</a></li> |
6 |
<li><a href="#">Illustration</a></li> |
7 |
<li><a href="#">Logo</a></li> |
8 |
<li><a href="#">Video</a></li> |
9 |
<li><a href="#">Print Design</a></li> |
10 |
</ul>
|
11 |
</nav>
|
Nu er nogle grundlæggende styling til navigationen, tilføjer en baggrund, skrifttypestile og også skrifttypefamilien fra Google Web Fonts - PT Sans.
1 |
|
2 |
nav.primary ul li a { |
3 |
background:url(../images/nav.png) repeat-x center top; |
4 |
height:39px; |
5 |
width:149px; |
6 |
display:block; |
7 |
border-bottom:1px solid #ba4b42; |
8 |
font-family:'PT Sans Narrow', Helvetica, Arial, sans-serif; |
9 |
font-size:18px; |
10 |
color:#fff; |
11 |
text-indent:20px; |
12 |
text-shadow:0 -1px 0 #BA1E1A; |
13 |
text-decoration:none; |
14 |
line-height:39px; |
15 |
}
|
16 |
nav.primary ul li a:hover { |
17 |
color:#E9EBE5; |
18 |
background-position:center bottom; |
19 |
}
|
Trin 9: Oprettelse af Området Med hovedindholdet
1 |
|
2 |
<section class="main clearfix"> |
3 |
|
4 |
|
5 |
</section>
|
Vi skal nu oprette en indpakningsbeholder, som vil holde porteføljeposterne. Vi skal også tilføje nogle margener og paddings for at sikre, at indtastningerne vises på det rigtige sted. Dette kan gøres ved først at flytte hele elementet væk fra overskriften og sidebjælken.
Hvis vi ser på overskriften 70px høj skal vi have 70px margin-top. Sidebjælken er 150px bred så vi vil anvende 150px margin-venstre. Den sidste ting er 20px polstring øverst og venstre for at skubbe posterne væk fra overskriften og sidebjælken.
1 |
|
2 |
.main { |
3 |
padding:20px 20px 0; |
4 |
margin:70px 0 0 150px; |
5 |
}
|
Trin 10: Tilføjelse af en Porteføl Jepost
Tid til at starte med porteføl jepos terne. Gå videre og opret en div med en klasse af portefølje
inden for vores hovedområde, dette vil holde vores porteføljevarer sammen. Vores porteføljeindtastning består af en figur (igen et HTML5 element) som bruges til at betegne en container til medier af en eller anden art.
Vi har så et billede med to spændinger; en til båndet og et til sværgeren. Du kan også bruge pseudo-elementer til disse, hvilket ville lette markeringen, men reducere browserens kompatibilitet på siden.
1 |
|
2 |
<section class="main clearfix"> |
3 |
|
4 |
<div class="portfolio"> |
5 |
|
6 |
<figure class="entry"> |
7 |
<span class="ribbon"></span> |
8 |
<img src="images/portfolio-image.jpg" alt=""> |
9 |
<span class="hover"></span> |
10 |
</figure>
|
11 |
|
12 |
</div>
|
13 |
|
14 |
</section>
|
Trin 11: Styling af Portefølje Posten
Styling til porteføljen er grundlæggende ting. Vi flyver til venstre og tilføjer 20px af margen til højre og nederst. For at oprette den hvide grænse vil vi blot tilføje noget polstring og derefter en baggrund, disse vil blive afrundet ved hjælp af en simpel grænsestrek på 5 px (mens du husker prefikserne). Endelig, vil en boks-skygge blive anvendt.
1 |
|
2 |
.entry { |
3 |
position:relative; |
4 |
float:left; |
5 |
margin-right:20px; |
6 |
margin-bottom:20px; |
7 |
cursor:pointer; |
8 |
|
9 |
background:#fff; |
10 |
padding:10px; |
11 |
width:440px; |
12 |
|
13 |
-webkit-border-radius:5px; |
14 |
-moz-border-radius:5px; |
15 |
border-radius:5px; |
16 |
|
17 |
-webkit-box-shadow:0 0 7px rgba(0,0,0,.1); |
18 |
-moz-box-shadow:0 0 7px rgba(0,0,0,.1); |
19 |
box-shadow:0 0 7px rgba(0,0,0,.1); |
20 |
}
|
Da vi anvender 20px af margen til højre for posterne skal vi trække det fra forældrebeholderen (porteføljens div).
1 |
|
2 |
.portfolio { margin-right:-20px; } |
Trin 12: Tilføjelse af in Dtastning Sbåndet
Vi oprettede båndmarkeringen, når vi tilføjede porteføljeposten (selvom du igen har brugt et pseudo-element), skal vi nu style det ved hjælp af CSS.
1 |
|
2 |
.ribbon { |
3 |
background:url(../images/camera_ribbon.png) no-repeat; |
4 |
width:31px; |
5 |
height:47px; |
6 |
position:absolute; |
7 |
top:-4px; |
8 |
right:11px; |
9 |
z-index:9999; |
10 |
}
|
Trin 13: Portfolio Hover State
Den sidste ting at gøre for porteføljen er at tilføje hover tilstanden. Dette vil blive opnået med det spænd, vi skabte tidligere, alt hvad vi behøver nu er stylingen. Vi bruger et billede og en sort baggrund med en alfa opacitet på 70%. Vi har også tilføjet nogle CSS3 overgange for at muliggøre en glat svæveffekt. Den sidste ting er at tilføje opacitet: 1;
for når du svinger over indgangen, som vil falme i svæverdelen.
1 |
|
2 |
.hover { |
3 |
background:rgba(0,0,0,.7) url(../images/hover.png) no-repeat center; |
4 |
position:absolute; |
5 |
top:10px; |
6 |
left:10px; |
7 |
bottom:13px; |
8 |
right:10px; |
9 |
opacity:0; |
10 |
-webkit-transition:all .3s ease-in-out; |
11 |
-moz-transition:all .3s ease-in-out; |
12 |
-ms-transition:all .3s ease-in-out; |
13 |
-o-transition:all .3s ease-in-out; |
14 |
transition:all .3s ease-in-out; |
15 |
}
|
16 |
|
17 |
.entry:hover .hover { opacity:1; } |
Nu er vores portefølje genstand komplet, du er fri til at tilføje dig egen og ændre billederne!



Trin 14: Adaptiv Godhed
Nu, hvor vi har genopbygget PSD'en i et fungerende design, vil vi gå videre og gøre det adaptivt. Vi anvender ikke et rent fleksibelt net, hvorfor det, vi praktiserer, ikke er teknisk responsivt. Vi bruger CSS3 Media Queries til at ændre og redigere layoutet i forskellige visningsmetoder. Vi bruger grove dimensioner, giver os hvad der kan mere-eller-mindre opfattes som Tablet Portrait Orientation, Tablet Landskab sorientering, Mobile Portrait Orientation og, endelig, Mobile Landscape Orientation.
Før vi begynder at redigere layoutet, skal vi gøre to ting. For det første skal vi tilføje visnings metatag get som gør det muligt for vores websted at blive vist korrekt på mobiltelefoner og tablets. Hvis du vil vide mere om dette, skal du tjekke denne artikel af Ian Yates. Det sidste er at tilføje en lille smule CSS, så vores billeder kan være flydende:
1 |
|
2 |
img { |
3 |
max-width:100%; |
4 |
}
|
Trin 15: Tablet Portræt
Vi starter med at målrette tabletter med en portrætorientering. Der kræves kun en lille smule redigering for at tilpasse vores layout. Den vigtigste til at tage varsel på er indgangen; det bliver gjort mindre for at rumme flere poster på hver linje.
1 |
|
2 |
@media only screen and (min-width: 768px) and (max-width: 959px) { |
3 |
.content { padding:20px 0 0 20px; } |
4 |
.entry { width:258px; } |
5 |
}
|
Trin 16: Tablet Landskab
Normalt vil du ikke målrette mod landskabsretningen på en tablet, medmindre du virkelig skal, men på grund af designet af denne side vil det helt sikkert hjælpe os. Vi vil ikke bruge min og max bredder til at bestemme visningsportstørrelsen - vi vil målrette den efter orientering. Denne gang bruger vi endnu mindre kode ved blot at ændre bredden af porteføljeposten.
1 |
|
2 |
@media only screen and (max-device-width: 1024px) and (orientation:landscape) { |
3 |
.entry { width:386px; } |
4 |
}
|
Trin 17: Mobil Portræt
Vi bevæger os på mobil nu, begyndende med portrætorientering. Denne gang bliver vi nødt til at gøre lidt mere redigering. Vi skal justere layoutet nu, fordi skærmen bliver mindre, er vi ikke længere i stand til at rumme sidebjælken til venstre med poster til højre. Vi vil flytte indholdsoversigten før posterne og har det fylder hele bredden af skærmen.
På grund af at overskriften er en stor størrelse med sidebjælken/navigationen under den, kan du muligvis ikke se så mange af posterne. Vi fjerner stillingen: Fast
og ændrer den til absolut
, så overskriften vil rulle i stedet for at blive øverst på siden.
1 |
|
2 |
@media only screen and (max-width: 767px) { |
3 |
body { background-image:none; } |
4 |
|
5 |
.header { |
6 |
position:absolute; |
7 |
float:left; |
8 |
width:100%; |
9 |
}
|
10 |
|
11 |
.logo { float:left; } |
12 |
.hire-me { float:right; } |
13 |
|
14 |
#wrapper { |
15 |
float:left; |
16 |
width:100%; |
17 |
}
|
18 |
|
19 |
.sidebar { |
20 |
width:100%; |
21 |
position:relative; |
22 |
z-index:1; |
23 |
float:left; |
24 |
border-right:1px solid #a13d36; |
25 |
margin-right:-1px; |
26 |
-webkit-box-shadow:none; |
27 |
-moz-box-shadow:none; |
28 |
box-shadow:none; |
29 |
}
|
30 |
|
31 |
nav.primary li { |
32 |
float:left; |
33 |
width:100%; |
34 |
background:url(../images/sidebar.png); |
35 |
}
|
36 |
|
37 |
nav.primary ul li a {width:100%; } |
38 |
|
39 |
nav.primary ul li a:active, nav.primary ul li a.selected { background:url(../images/mobile_nav_active.png); } |
40 |
|
41 |
.page { |
42 |
float:left; |
43 |
width:100%; |
44 |
}
|
45 |
|
46 |
.main { |
47 |
float:left; |
48 |
padding:20px 20px 0; |
49 |
margin:70px 0 0 0; |
50 |
}
|
51 |
|
52 |
.entry { width:260px; } |
53 |
}
|
Trin 18: Fastsættelse af Nogle Positionerings Problemer
Okay, nu har vi kørt ind i nogle problemer. Indholdsoversigten er justeret pænt til skærmens layout, men forsikringsbestanden positionerer forkert. Vi bliver nødt til at gå tilbage til vores markering og tilføje to ekstra divs, en med et id for wrapper som vil pakke alt andet end header og et andet med en klasse af side, der vil pakke vores hovedindholdsområde.
1 |
|
2 |
<div id="wrapper"> |
3 |
|
4 |
<aside class="sidebar clearfix"> |
5 |
|
6 |
<nav class="primary clearfix"> |
7 |
<ul>
|
8 |
<li><a href="#" class="selected" data-filter="*">All</a></li> |
9 |
<li><a href="#" data-filter=".web">Web Design</a></li> |
10 |
<li><a href="#" data-filter=".ill">Ilustration</a></li> |
11 |
<li><a href="#" data-filter=".logo">Logo</a></li> |
12 |
<li><a href="#" data-filter=".video">Video</a></li> |
13 |
<li><a href="#" data-filter=".print">Print Design</a></li> |
14 |
</ul>
|
15 |
</nav>
|
16 |
|
17 |
</aside>
|
18 |
|
19 |
<div class="page"> |
20 |
|
21 |
<section class="main clearfix"> |
22 |
|
23 |
<div class="portfolio"> |
24 |
|
25 |
<figure class="entry"> |
26 |
<span class="ribbon"></span> |
27 |
<img src="images/portfolio-image.jpg" alt=""> |
28 |
<span class="hover"></span> |
29 |
</figure>
|
30 |
|
31 |
<figure class="entry"> |
32 |
<span class="ribbon"></span> |
33 |
<img src="images/portfolio-image.jpg" alt=""> |
34 |
<span class="hover"></span> |
35 |
</figure>
|
36 |
|
37 |
<figure class="entry"> |
38 |
<span class="ribbon"></span> |
39 |
<img src="images/portfolio-image.jpg" alt=""> |
40 |
<span class="hover"></span> |
41 |
</figure>
|
42 |
|
43 |
<figure class="entry"> |
44 |
<span class="ribbon"></span> |
45 |
<img src="images/portfolio-image.jpg" alt=""> |
46 |
<span class="hover"></span> |
47 |
</figure>
|
48 |
|
49 |
<figure class="entry"> |
50 |
<span class="ribbon"></span> |
51 |
<img src="images/portfolio-image.jpg" alt=""> |
52 |
<span class="hover"></span> |
53 |
</figure>
|
54 |
|
55 |
<figure class="entry"> |
56 |
<span class="ribbon"></span> |
57 |
<img src="images/portfolio-image.jpg" alt=""> |
58 |
<span class="hover"></span> |
59 |
</figure>
|
60 |
|
61 |
<figure class="entry"> |
62 |
<span class="ribbon"></span> |
63 |
<img src="images/portfolio-image.jpg" alt=""> |
64 |
<span class="hover"></span> |
65 |
</figure>
|
66 |
|
67 |
<figure class="entry"> |
68 |
<span class="ribbon"></span> |
69 |
<img src="images/portfolio-image.jpg" alt=""> |
70 |
<span class="hover"></span> |
71 |
</figure>
|
72 |
|
73 |
</div>
|
74 |
|
75 |
</section>
|
76 |
|
77 |
</div>
|
78 |
<!-- page -->
|
79 |
|
80 |
</div>
|
81 |
<!-- wrapper -->
|
Når vi har tilføjet den nødvendige markering, skal vi tilføje nogle stilarter. Rul tilbage på op til toppen af din CSS fil og tilføje følgende:
1 |
|
2 |
#wrapper { |
3 |
height:auto; |
4 |
margin:0; |
5 |
overflow:hidden; |
6 |
padding:0; |
7 |
}
|
8 |
|
9 |
.page { |
10 |
position:relative; |
11 |
overflow:hidden; |
12 |
top:0px; |
13 |
margin:0px; |
14 |
padding:0px; |
15 |
border-left:1px solid #a13d36; |
16 |
}
|
Trin 19: Mobil Landskab
Okay, endelig landskabsretningen for mobil. Hvis du placerer dette efter den mobile portræt CSS har vi netop oprettet det, arver disse stilarter, .e.g den fulde bredde sidebar mv. Alt vi skal gøre nu, er ændre posten bredde.
1 |
|
2 |
@media only screen and (min-width: 480px) and (max-width: 767px) { |
3 |
.entry { width:190px; } |
4 |
}
|



Trin 20: Indførelse af Isotopen
Nu har vi dækket at skabe design vi kan begynde at give det nogle funktionalitet! Vi bruger den fantastiske isotop plugin af David DeSandro. Isotop bruges til at oprette layout, filtrering og sortering. Det bruges almindeligvis på porteføljer til at filtrere stykker arbejde i forskellige kategorier - for eksempel Web Design, Fotografi og Illustration. På dette notat, lad os få det installeret!
Før vi kan tilføje det til vores design vi bliver nødt til at hente den. Gå videre til http://isotope.metafizzy.co/jquery.isotope.min.js. Du vil nu se isotop javascript filen, bare gå til Filer> Gem og gem den i den js mappe, vi oprettede i starten. Vi skal derefter link til scriptet i din HTML fil.
1 |
|
2 |
<script src="js/jquery.isotope.min.js"></script> |
Trin 21: Filtrerings Processen
At tillade vores portefølje elementer filtreres vi bliver nødt til at ændre vores markup igen. Vi starter med den navigation der vil filtrere for os. Isotop bruger HTML5 Custom Data Attributes, specifikt data-filter = ''''
. Vi sætter en værdi afhængig af kategorien; Web Design bruger .web
(bemærk at vi skal tilføje en periode før kategorien værdi). Ankeretiketten for Alle categorys bruger ikke .all
men bruger en stjerne.
1 |
|
2 |
<nav class="primary clearfix"> |
3 |
<ul>
|
4 |
<li><a href="#" data-filter="*">All</a></li> |
5 |
<li><a href="#" data-filter=".web">Web Design</a></li> |
6 |
<li><a href="#" data-filter=".ill">Ilustration</a></li> |
7 |
<li><a href="#" data-filter=".logo">Logo</a></li> |
8 |
<li><a href="#" data-filter=".video">Video</a></li> |
9 |
<li><a href="#" data-filter=".print">Print Design</a></li> |
10 |
</ul>
|
11 |
</nav>
|
Trin 22: Filtrering af Portefølje Poster
Den sidste del af filterprocessen er at redigere porteføljeposterne. Når du har tilføjet data-filter
værdier, skal du tilføje de tilsvarende værdier til hver post. Hvis arbejdsindgangen er i videokategorien skal du tilføje en klasse af video. Bemærk, at hvis dine data-filter
værdier er små bogstaver, skal du bruge små bogstaver til indgangsklasserne.
1 |
|
2 |
<figure class="entry video"> |
3 |
<span class="ribbon"></span> |
4 |
<img src="images/portfolio-image.jpg" alt=""> |
5 |
<span class="hover"></span> |
6 |
</figure>
|
Trin 23: Hooking the Plugin
Det er på tide at aktivere isotop som vi vil gøre i to dele. Først skal vi tilslutte den del, der vil sortere vores porteføljeposter. Start med at oprette en ny fil kald ''custom.js'' og læg den i din js mappe.
1 |
|
2 |
$(window).load(function(){ |
3 |
|
4 |
var $container = $('.portfolio'); |
5 |
$container.isotope({ |
6 |
filter: '*', |
7 |
animationOptions: { |
8 |
duration: 750, |
9 |
easing: 'linear', |
10 |
queue: false, |
11 |
}
|
12 |
});
|
13 |
|
14 |
});
|
Trin 24: Klik på Funktion
Den anden del kører navigationen for at muliggøre filtreringen.
1 |
|
2 |
$(window).load(function(){ |
3 |
|
4 |
var $container = $('.portfolio'); |
5 |
$container.isotope({ |
6 |
filter: '*', |
7 |
animationOptions: { |
8 |
duration: 750, |
9 |
easing: 'linear', |
10 |
queue: false, |
11 |
}
|
12 |
});
|
13 |
|
14 |
$('nav.primary ul a').click(function(){ |
15 |
var selector = $(this).attr('data-filter'); |
16 |
$container.isotope({ |
17 |
filter: selector, |
18 |
animationOptions: { |
19 |
duration: 750, |
20 |
easing: 'linear', |
21 |
queue: false, |
22 |
}
|
23 |
});
|
24 |
return false; |
25 |
});
|
26 |
|
27 |
});
|
Trin 25: Tilføjelse af en Aktiv Tilstand
Vist i PSD er en aktiv tilstand for det aktuelle valgte navigationsanker. Vi skal tilføje nogle flere markeringer, nogle flere CSS og endelig nogle flere jQuery. Start med at gå tilbage til din HTML fil og tilføj class = ''selected''
til den første anker tag.
1 |
|
2 |
<nav class="primary clearfix"> |
3 |
<ul>
|
4 |
<li><a href="#" class="selected" data-filter="*">All</a></li> |
5 |
<li><a href="#" data-filter=".web">Web Design</a></li> |
6 |
<li><a href="#" data-filter=".ill">Illustration</a></li> |
7 |
<li><a href="#" data-filter=".logo">Logo</a></li> |
8 |
<li><a href="#" data-filter=".video">Video</a></li> |
9 |
<li><a href="#" data-filter=".print">Print Design</a></li> |
10 |
</ul>
|
11 |
</nav>
|
Derefter skal du tilføje nogle flere CSS, så tilføj dette lige under navigationsstile.
1 |
|
2 |
nav.primary ul li a:active, nav.primary ul li a.selected { |
3 |
background:url(../images/nav_active.png); |
4 |
border-bottom:1px solid #9e3f38; |
5 |
}
|
Den sidste del er nogle jQuery, dette vil tilføje klasser, når de klikkes for at vise den aktive knap/kategori.
1 |
|
2 |
var $optionSets = $('nav.primary ul'), |
3 |
$optionLinks = $optionSets.find('a'); |
4 |
|
5 |
$optionLinks.click(function(){ |
6 |
var $this = $(this); |
7 |
// don't proceed if already selected
|
8 |
if ( $this.hasClass('selected') ) { |
9 |
return false; |
10 |
}
|
11 |
var $optionSet = $this.parents('nav.primary ul'); |
12 |
$optionSet.find('.selected').removeClass('selected'); |
13 |
$this.addClass('selected'); |
14 |
});
|
Trin 26: Glemmer Noget Er Vi?
Hvis du går videre og klikker på nav knapperne kan du se at filteret virker! Men vent, det er ikke en smidig overgang! Nå det er fordi vi stadig skal tilføje nogle CSS overgange.
1 |
|
2 |
.isotope-item { |
3 |
z-index: 2; |
4 |
}
|
5 |
|
6 |
.isotope-hidden.isotope-item { |
7 |
pointer-events: none; |
8 |
z-index: 1; |
9 |
}
|
10 |
|
11 |
.isotope, |
12 |
.isotope .isotope-item { |
13 |
-webkit-transition-duration: 0.8s; |
14 |
-moz-transition-duration: 0.8s; |
15 |
transition-duration: 0.8s; |
16 |
}
|
17 |
|
18 |
.isotope { |
19 |
-webkit-transition-property: height, width; |
20 |
-moz-transition-property: height, width; |
21 |
transition-property: height, width; |
22 |
}
|
23 |
|
24 |
.isotope .isotope-item { |
25 |
-webkit-transition-property: -webkit-transform, opacity; |
26 |
-moz-transition-property: -moz-transform, opacity; |
27 |
transition-property: transform, opacity; |
28 |
}
|
Konklusion
Og vi går der, en anden nyttig tutorial komplet! Du kan frit bruge denne metode i ethvert design du har. Gå og have det sjovt med det.



Jeg håber du har haft denne tutorial, tak for læsning!