jQuery技术

基于jQuery&CSS3的HTML5 portfolio特效制作

字号+ 作者:小想 来源: 2014-11-16 22:49 我要评论( )

在本教程中,我们将完成一个不错的基于jQuery和Quicksand插件的HTML5 portfolio特效。它支持定制,因此,你完全可以扩展实现更多功能。 【e800编译】在本教程中,我们将完成一个不错的基

在本教程中,我们将完成一个不错的基于jQuery和Quicksand插件的HTML5 portfolio特效。它支持定制,因此,你完全可以扩展实现更多功能。

【e800编译】在本教程中,我们将完成一个不错的基于jQuery和Quicksand插件的HTML5portfolio特效。它支持定制,因此,你完全可以扩展实现更多功能。你可在页面上展示各种分类的图片,它可把内容按不同的分类筛选显示出来,并在显示过程中附加动画效果,不但分类了图片,也使页面更加生动。

HTML

首先,第一步你需要创建一个新的HTML5标记文档。在<head>区域需要包括页面的样式,jQuery库,Quicksand插件以及script.js。

index.html

<!DOCTYPE html>

<html>

<head>

<meta charset=”utf-8″ />

<title>Making a Beautiful HTML5 Portfolio |TutorialzineDemo</title>

<!– Our CSS stylesheet file –>

<link rel=”stylesheet” href=”assets/css/styles.css” />

<!– Enabling HTML5 tags for older IE browsers–>

<!–[if lt IE 9]>

<scriptsrc=”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 ownscript.js–>

<scriptsrc=”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>

在<body>中,包含一系列新的HTML5元素。header中含h1标题(logo样式),section元素中包含内容项的无序列表(后面你可以看到更多的列表由jQuery添加)以及nav元素。

#stage 无序列表中包含了所有的文件项,这些文件项如下所示。其中每一项都包含一个HTML5数据属性,它定义了一系列以逗号分隔的标签。最后,当我们通过jQuery来循环遍历该列表时,我们将记录标记并创建绿色条栏中可选的分类。

<li data-tags=”PrintDesign”>

<img src=”assets/img/shots/1.jpg” />

</li>

<li data-tags=”LogoDesign,Print Design”>

<img src=”assets/img/shots/2.jpg” />

</li>

<li data-tags=”WebDesign,Logo Design”>

<img src=”assets/img/shots/3.jpg” />

</li>

现在你可以放入任何你想要展示内容项,并进一步自定义组合。Quicksand插件会实现这个列表的动画过渡,你可以自由选择去尝试。

[Demo]   [Download]

jQuery

Quicksand插件在于比较两个无序内容列表,找到他们里面匹配的LIS,并以动画形式将其放至它新的位置。至于jQuery脚本,我们需要将它写在本节中,它将循环遍历#stage列表中的内容项,并为它所找到的每个标签创建一个新的(隐藏)无序列表。同时,它还将创建一个新的菜单选项,由其触发两个列表间的Quicksand过渡。

首先,我们需要监听ready事件(加载页面最早的点,在这里我们可以访问DOM),检查相关标记并循环遍历所有项。

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 Quicksandplugin:

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);

});

});

每个标签作为一个数组对象添加到itemsByTags。这意味着itemsByTags['Web Design']将是包含所有项的数组。我们使用这个对象为Quicksand在页面上创建隐藏的无序列表。

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 isadded

// as a data parameter (available via.data(‘list’)):

var a= $(‘<a>’,{

html: text,

href:’#',

data: {list:ul}

}).appendTo(‘#filter’);

}

此函数需要以分组的名称以及包含LI项的数组作为参数,然后克隆这些项至新的UL,同时在绿色栏中添加链接。

现在我们需要遍历所有分组并调用上面的函数,同时监听菜单项上的点击事件。

script.js– Part 3

// Creating the “Everything” option in themenu:

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 liitems.

// It uses data(‘list’) defined by our createListfunction:

$(‘#stage’).quicksand(link.data(‘list’).find(‘li’));

e.preventDefault();

});

// Selecting the first menu item by default:

$(‘#filter a:first’).click();

现在,一切已经就绪,我们就可以继续页面造型设计。

CSS

页面样式本身并不是很有趣(你可以在assets/css/styles.css中看到)。绿色导航栏(#filterbar)使用:before/:after伪元素在两端添加华丽的边角。由于它们也都是绝对定位的,他们也将随导航栏一同变化。

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;

}

Before/After元素

结论

您可以使用此模板来展示你的工作,它最好的一点就是,很容易进行定制。你唯一需要做的只是更改#stage list的相应项目,并定义一些新的标签–其余的工作都将由脚本去完成。如果没有启用JavaScript,他们依然会看到你所有的内容,同样也是出于搜索引擎优化的目的。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 7个有用的jQuery小技巧

    7个有用的jQuery小技巧

    2016-02-26 13:02

  • jQuery制作select双向选择列表

    jQuery制作select双向选择列表

    2016-02-26 11:00

  • 全面详细的jQuery常见开发技巧手册

    全面详细的jQuery常见开发技巧手册

    2016-02-26 10:02

  • 强大的jQuery移动插件Top 10

    强大的jQuery移动插件Top 10

    2016-02-25 09:05

网友点评
m