Kamis, 07 Juli 2011

Membuat Portofolio HTML5 dengan jQuery dan plugin Quicksand

Dalam tutorial ini kita akan membuat sebuah portofolio HTML5 yang indah didukung oleh jQuery dan plugin Quicksand. Anda dapat menggunakannya untuk memamerkan karya terbaru Anda dan sepenuhnya disesuaikan, sehingga Anda bisa memperluas berpotensi untuk melakukan lebih banyak.


HTML

Langkah pertama adalah menuliskan markup dari sebuah dokumen HTML5 baru. Pada bagian kepala, kami akan menyertakan stylesheet untuk halaman. Perpustakaan jQuery, plugin Quicksand dan script.js kami akan pergi tepat sebelum tag penutup tubuh:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />

<title>Making a Beautiful HTML5 Portfolio | Tutorialzine Demo</title>

<!-- Our CSS stylesheet file -->
<link rel="stylesheet" href="assets/css/styles.css" />

<!-- Enabling HTML5 tags for older IE browsers -->
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>

<body>

<header>
<h1>My Portfolio</h1>
</header>

<nav id="filter">
<!-- The menu items will go here (generated by jQuery) -->
</nav>

<section id="container">
<ul id="stage">
<!-- Your portfolio items go here -->
</ul>
</section>

<footer>
</footer>

<!-- Including jQuery, the Quicksand plugin, and our own script.js -->

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script src="assets/js/jquery.quicksand.js"></script>
<script src="assets/js/script.js"></script>

</body>
</html>


Di dalam tubuh, ada sejumlah elemen HTML5 baru. Header memegang pos h1 kami (yang bergaya sebagai logo), elemen bagian memegang daftar unordered dengan item portofolio (daftar lebih ditambahkan oleh jQuery, karena Anda akan lihat nanti), dan elemen nav, ditata sebagai hijau bar, bertindak sebagai filter konten.

Tahap # daftar unordered item memegang portfolio kami. Anda dapat melihat apa barang-barang ini akan terlihat seperti di bawah ini. Masing-masing memiliki atribut HTML5 data, yang mendefinisikan serangkaian dipisahkan dengan koma tag. Kemudian, ketika kita menggunakan jQuery untuk loop melalui daftar ini, kita akan merekam tag dan membuat kategori yang bisa dipilih dari bar hijau.

<li data-tags="Print Design">
<img src="assets/img/shots/1.jpg" />
</li>

<li data-tags="Logo Design,Print Design">
<img src="assets/img/shots/2.jpg" />
</li>

<li data-tags="Web Design,Logo Design">
<img src="assets/img/shots/3.jpg" />
</li>


Anda dapat menaruh apa pun yang Anda inginkan dalam item li dan menyesuaikan portofolio lebih lanjut. Plugin Quicksand akan menangani transisi animasi daftar ini, jadi anda bebas untuk bereksperimen.
HTML5 indah Portofolio dengan jQuery

HTML5 indah Portofolio dengan jQuery


jQuery

Apa plugin Quicksand tidak, adalah membandingkan dua daftar unordered item, menemukan LIS cocok di dalamnya, dan menghidupkan mereka ke posisi baru mereka. Script jQuery kita akan menulis bagian ini, akan loop melalui item portofolio dalam daftar tahap #, dan membuat daftar (tersembunyi) baru unordered untuk setiap tag yang ditemukan. Ini juga akan membuat pilihan menu baru, yang akan memicu transisi pasir apung antara dua daftar.

Pertama kita perlu untuk mendengarkan acara siap (titik awal dalam pemuatan halaman di mana kita dapat mengakses DOM), dan loop melalui semua item li mendeteksi tag terkait.

script.js – Part 1

$(document).ready(function(){

var items = $('#stage li'),
itemsByTags = {};

// Looping though all the li items:

items.each(function(i){
var elem = $(this),
tags = elem.data('tags').split(',');

// Adding a data-id attribute. Required by the Quicksand plugin:
elem.attr('data-id',i);

$.each(tags,function(key,value){

// Removing extra whitespace:
value = $.trim(value);

if(!(value in itemsByTags)){
// Create an empty array to hold this item:
itemsByTags[value] = [];
}

// Each item is added to one array per tag:
itemsByTags[value].push(elem);
});

});

Setiap tag ditambahkan ke objek itemsByTags sebagai array. Ini berarti bahwa itemsByTags ['Desain Web'] akan mengadakan sebuah array dengan semua item yang memiliki Web Design sebagai salah satu tag mereka. Kami akan menggunakan objek ini untuk membuat daftar unordered, tersembunyi di halaman untuk pasir hisap.

Ini akan menjadi yang terbaik untuk menciptakan sebuah fungsi pembantu yang akan menanganinya untuk kita:

script.js – Part 2

function createList(text,items){

// This is a helper function that takes the
// text of a menu button and array of li items

// Creating an empty unordered list:
var ul = $('<ul>',{'class':'hidden'});

$.each(items,function(){
// Creating a copy of each li item
// and adding it to the list:

$(this).clone().appendTo(ul);
});

ul.appendTo('#container');

// Creating a menu item. The unordered list is added
// as a data parameter (available via .data('list')):

var a = $('<a>',{
html: text,
href:'#',
data: {list:ul}
}).appendTo('#filter');
}


Fungsi ini mengambil nama dari grup dan sebuah array dengan item LI sebagai parameter. Kemudian klon item ini ke UL baru dan menambahkan link di bar hijau.

Sekarang kita harus loop melalui semua kelompok dan memanggil fungsi di atas, dan juga mendengarkan untuk klik pada item menu.

script.js – Part 3

// Creating the "Everything" option in the menu:
createList('Everything',items);

// Looping though the arrays in itemsByTags:
$.each(itemsByTags,function(k,v){
createList(k,v);
});

$('#filter a').live('click',function(e){
var link = $(this);

link.addClass('active').siblings().removeClass('active');

// Using the Quicksand plugin to animate the li items.
// It uses data('list') defined by our createList function:

$('#stage').quicksand(link.data('list').find('li'));
e.preventDefault();
});

// Selecting the first menu item by default:
$('#filter a:first').click();


Bagus! Sekarang kita memiliki segalanya di tempat kita bisa melanjutkan ke gaya halaman.

CSS


Styling halaman itu sendiri tidak yang menarik (Anda dapat melihat CSS untuk ini dalam aset / css / styles.css). Namun apa yang lebih menarik adalah bar berwarna hijau (atau bar # filter), yang menggunakan: sebelum /: setelah elemen pseudo untuk menambahkan sudut menarik di sisi bar. Seperti diposisikan benar-benar, mereka juga tumbuh bersama dengan bar.


styles.css



#filter {
background: url("../img/bar.png") repeat-x 0 -94px;
display: block;
height: 39px;
margin: 55px auto;
position: relative;
width: 600px;
text-align:center;

-moz-box-shadow:0 4px 4px #000;
-webkit-box-shadow:0 4px 4px #000;
box-shadow:0 4px 4px #000;
}

#filter:before, #filter:after {
background: url("../img/bar.png") no-repeat;
height: 43px;
position: absolute;
top: 0;
width: 78px;
content: '';

-moz-box-shadow:0 2px 0 rgba(0,0,0,0.4);
-webkit-box-shadow:0 2px 0 rgba(0,0,0,0.4);
box-shadow:0 2px 0 rgba(0,0,0,0.4);
}

#filter:before {
background-position: 0 -47px;
left: -78px;
}

#filter:after {
background-position: 0 0;
right: -78px;
}

#filter a{
color: #FFFFFF;
display: inline-block;
height: 39px;
line-height: 37px;
padding: 0 15px;
text-shadow:1px 1px 1px #315218;
}

#filter a:hover{
text-decoration:none;
}

#filter a.active{
background: url("../img/bar.png") repeat-x 0 -138px;
box-shadow: 1px 0 0 rgba(255, 255, 255, 0.2),
-1px 0 0 rgba(255, 255, 255, 0.2),
1px 0 1px rgba(0,0,0,0.2) inset,
-1px 0 1px rgba(0,0,0,0.2) inset;
}


Dengan portofolio kami yang indah, tutorial HTML5 ini telah lengkap!

Kesimpulan

Anda dapat menggunakan template ini untuk mempresentasikan hasil kerja Anda. Hal terbaik tentang itu adalah bahwa itu benar-benar mudah untuk menyesuaikan. Anda hanya perlu mengubah isi dari item LI awal daftar stage #, dan menentukan beberapa tag baru - script akan melakukan sisanya. Jika pengunjung tidak memiliki JavaScript diaktifkan, mereka masih akan melihat semua portofolio Anda item, yang juga baik untuk tujuan SEO.

Download kodenya :Download - Membuat Portofolio HTML5 dengan jQuery dan plugin Quicksand

Contoh lihat disini :Demo - Membuat Portofolio HTML5 dengan jQuery dan plugin Quicksand
Read more

Membuat Menu CSS3 Animasi

Dalam tutorial singkat ini, kita akan menggunakan kekuatan CSS3 efek dan transisi, untuk membangun menu JavaScript navigasi gratis animasi yang dapat Anda gunakan untuk menambahkan melihat dipoles ke website Anda atau template. Kami akan menggunakan beberapa fitur rapi seperti: sasaran semu pemilih dan: setelah unsur-unsur.

HTML

Langkah pertama adalah mendefinisikan tulang punggung HTML website. Kami menggunakan tag HTML5 luas, jadi kita akan perlu untuk memasukkan script HTML5 memungkinkan untuk IE di bagian kepala dari dokumen. Seperti terlampir dalam komentar bersyarat, itu hanya akan diminta dalam browser IE dan tidak akan mempengaruhi kinerja yang lain:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />

<title>CSS3 Animated Navigation Menu | Tutorialzine Demo</title>

<!-- Our CSS stylesheet file -->
<link rel="stylesheet" href="assets/css/styles.css" />

<!-- Including the Lobster font from Google's Font Directory -->
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Lobster" />

<!-- Enabling HTML5 support for Internet Explorer -->
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>

<body>

<header>
<h1>CSS3 Animated Navigation Menu</h1>
<h2>&laquo; Read and download on Tutorialzine</h2>
</header>

<nav>
<ul class="fancyNav">
<li id="home"><a href="#home" class="homeIcon">Home</a></li>
<li id="news"><a href="#news">News</a></li>
<li id="about"><a href="#about">About us</a></li>
<li id="services"><a href="#services">Services</a></li>
<li id="contact"><a href="#contact">Contact us</a></li>
</ul>
</nav>

<footer>Looks best in Firefox 4, usable everywhere.</footer>

</body>
</html>


Anda dapat melihat bahwa kita termasuk stylesheet dari Google API. Ini berisi deklarasi @ font-face dan termasuk font Lobster ke halaman kami, dari direktori Font Web Google, yang telah berkembang untuk menyertakan lebih dari 100 font sumber terbuka yang indah, murah hati host oleh Google.

Dalam tubuh dokumen, kita memiliki header, nav dan tag HTML5 footer, yang membagi halaman ke tiga bagian dengan nilai semantik. Kami akan berkonsentrasi pada elemen UL di dalam tag nav. Ini adalah menu navigasi kita.

Daftar unordered memiliki kelas fancyNav diterapkan untuk itu, yang kita akan menggunakan untuk membatasi efek dari gaya CSS yang kita akan menulis dalam sekejap. Ini akan membuat kode lebih portabel dan membatasi efek samping yang mungkin. Satu hal yang perlu tunjukkan adalah bahwa setiap elemen LI memiliki ID yang unik, terkait dengan dari elemen jangkar di dalamnya. Hal ini akan memungkinkan kita untuk menggunakan: target pseudo-class untuk gaya item menu yang dipilih saat ini.

Jadi mari kita beralih ke CSS style.

CSS

Anda mungkin merasa heran bahwa menu navigasi kita sedang membangun tidak menggunakan gambar (kecuali untuk ikon rumah - png transparan). Semuanya dilakukan dengan CSS3 gradien, bayangan kotak, dan latar belakang beberapa.

Sedangkan untuk mendukung browser, menu bekerja pada versi terbaru dari Firefox, Chrome, Safari dan Opera, sementara itu masih dapat digunakan dalam setiap versi IE dari 7 dan seterusnya. Namun, tidak melihat yang terbaik di Firefox 4, karena mendukung menjiwai: sebelum dan: setelah unsur-unsur semu melalui properti transisi (browser lain diharapkan untuk mengikuti suite).

Kami CSS gaya didefinisikan dalam aset / styles.css. Saya akan menyarankan agar Anda mendownload kode menu dari tombol atas, dan membuka file tersebut dalam editor teks. Kami akan memfokuskan terutama pada menu navigasi, jadi saya akan melewatkan bagian membosankan dari file.

Mari kita mulai styling menu navigasi! Kami pertama menulis aturan untuk daftar unordered - ditargetkan dengan kelas fancyNav, dan item li:


.fancyNav{
/* Affects the UL element */
overflow: hidden;
display: inline-block;

border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;

box-shadow: 0 0 4px rgba(255, 255, 255, 0.6);
-moz-box-shadow: 0 0 4px rgba(255, 255, 255, 0.6);
-webkit-box-shadow: 0 0 4px rgba(255, 255, 255, 0.6);
}

.fancyNav li{
/* Specifying a fallback color and we define CSS3 gradients for the major browsers: */

background-color: #f0f0f0;
background-image: -webkit-gradient(linear,left top, left bottom,from(#fefefe), color-stop(0.5,#f0f0f0), color-stop(0.51, #e6e6e6));
background-image: -moz-linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);
background-image: -o-linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);
background-image: -ms-linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);
background-image: linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);

border-right: 1px solid rgba(9, 9, 9, 0.125);

/* Adding a 1px inset highlight for a more polished efect: */

box-shadow: 1px -1px 0 rgba(255, 255, 255, 0.6) inset;
-moz-box-shadow: 1px -1px 0 rgba(255, 255, 255, 0.6) inset;
-webkit-box-shadow: 1px -1px 0 rgba(255, 255, 255, 0.6) inset;

position:relative;

float: left;
list-style: none;
}


Perhatikan daftar besar CSS3 syntaxes gradien. Semua terakhir versi dari Firefox, Chrome dan Safari dukungan gradien. Dengan Opera dan IE 10 (saat ini dalam modus pratinjau platform), juga bergabung dengan versi terbaru mereka. Awalnya ada dua syntaxes bersaing, didukung oleh Mozilla (Firefox) di satu sisi dan WebKit (Chrome dan Safari) di sisi lain, namun sintaks gradien Firefox telah disepakati sebagai standar industri.

Langkah selanjutnya adalah dengan menggunakan: setelah elemen pseudo untuk menciptakan bayangan gelap, ditampilkan ketika Anda membawa lebih dari satu item menu:

.fancyNav li:after{

/* This creates a pseudo element inslide each LI */

content:'.';
text-indent:-9999px;
overflow:hidden;
position:absolute;
width:100%;
height:100%;
top:0;
left:0;
z-index:1;
opacity:0;

/* Gradients! */

background-image:-webkit-gradient(linear, left top, right top, from(rgba(168,168,168,0.5)),color-stop(0.5,rgba(168,168,168,0)), to(rgba(168,168,168,0.5)));
background-image:-moz-linear-gradient(left, rgba(168,168,168,0.5), rgba(168,168,168,0) 50%, rgba(168,168,168,0.5));
background-image:-o-linear-gradient(left, rgba(168,168,168,0.5), rgba(168,168,168,0) 50%, rgba(168,168,168,0.5));
background-image:-ms-linear-gradient(left, rgba(168,168,168,0.5), rgba(168,168,168,0) 50%, rgba(168,168,168,0.5));
background-image:linear-gradient(left, rgba(168,168,168,0.5), rgba(168,168,168,0) 50%, rgba(168,168,168,0.5));

/* Creating borders with box-shadow. Useful, as they don't affect the size of the element. */

box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff,1px 0 0 #a3a3a3,2px 0 0 #fff;
-moz-box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff,1px 0 0 #a3a3a3,2px 0 0 #fff;
-webkit-box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff,1px 0 0 #a3a3a3,2px 0 0 #fff;

/* This will create a smooth transition for the opacity property */

-moz-transition:0.25s all;
-webkit-transition:0.25s all;
-o-transition:0.25s all;
transition:0.25s all;
}


: Setelah deklarasi menciptakan elemen styleable nyata. Ia memiliki gradien horisontal halus yang menggelapkan item menu ketika melayang di atas. Seperti yang terlihat secara default (opacity diatur ke 0), kita menggunakan CSS3 transisi ke bernyawa itu antara opacity nol dan penuh, dipicu di hover. Sayangnya hanya Firefox mendukung menjiwai elemen semu saat ini, tapi browser lain diharapkan untuk segera memperkenalkan fitur ini.

Selanjutnya kita akan menggunakan: pertama-anak dan: terakhir-anak penyeleksi pseudo untuk target item menu pertama dan terakhir.

/* Treating the first LI and li:after elements separately */

.fancyNav li:first-child{
border-radius: 4px 0 0 4px;
}

.fancyNav li:first-child:after,
.fancyNav li.selected:first-child:after{
box-shadow:1px 0 0 #a3a3a3,2px 0 0 #fff;
-moz-box-shadow:1px 0 0 #a3a3a3,2px 0 0 #fff;
-webkit-box-shadow:1px 0 0 #a3a3a3,2px 0 0 #fff;

border-radius:4px 0 0 4px;
}

.fancyNav li:last-child{
border-radius: 0 4px 4px 0;
}

/* Treating the last LI and li:after elements separately */

.fancyNav li:last-child:after,
.fancyNav li.selected:last-child:after{
box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff;
-moz-box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff;
-webkit-box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff;

border-radius:0 4px 4px 0;
}

.fancyNav li:hover:after,
.fancyNav li.selected:after,
.fancyNav li:target:after{
/* This property triggers the CSS3 transition */
opacity:1;
}



Menerapkan gaya yang berbeda untuk item pertama dan terakhir sangat diperlukan, karena kita tidak ingin menampilkan perbatasan jelek yang menjangkau luar menu. Kami juga putaran sudut-sudut yang tepat dari unsur-unsur.

Catatan: Anda dapat menambahkan class = "dipilih" untuk item daftar dalam urutan untuk membuatnya dipilih / aktif secara default. Hal ini berguna ketika membangun template atau menghasilkan menu dengan bahasa server-side.


Setelah ini kita perlu menerapkan memperbaiki ke menu. Ini adalah untuk menyembunyikan elemen yang dipilih saat ini ketika kita hover pada menu lagi:

.fancyNav:hover li.selected:after,
.fancyNav:hover li:target:after{
/* Hides the targeted li when we are hovering on the UL */
opacity:0;
}

.fancyNav li.selected:hover:after,
.fancyNav li:target:hover:after{
opacity:1 !important;
}


Dan terakhir semua yang tersisa adalah untuk gaya elemen jangkar yang berada di LI.

/* Styling the anchor elements */

.fancyNav li a{
color: #5d5d5d;
display: inline-block;
font: 20px/1 Lobster,Arial,sans-serif;
padding: 12px 35px 14px;
position: relative;
text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6);
z-index:2;
text-decoration:none !important;
white-space:nowrap;
}

.fancyNav a.homeIcon{
background:url('../img/home.png') no-repeat center center;
display: block;
overflow: hidden;
padding-left: 12px;
padding-right: 12px;
text-indent: -9999px;
width: 16px;
}



Dengan menu ini animasi kita CSS3 lengkap!
Read more