css3和js网页制作实例:网页头像展示效果: U! f5 I* R+ E3 i8 C' k7 u
今天就为大家分享一个非常有创意的CSS3头像展示效果,交互性强,是一个基于css3和js来实现的,代码量不多,但是最终的效果却很让人赞叹,所以特别推荐给大家。其中关于本示例的一些css样式呈现,个人认为还有很大的发挥空间,例如鼠标经过的时候而不是切换成一个背景色和文字,而是替换成其他的相关图片(例如改为人物的其他表情),这将会是非常的有意思的。
, f# d, ?* i( b
$ _; Y, a' M* {+ s) R2 W( j* L" y2 e0 A
好了,接下来我们一起看看其效果的制作方法。
, f4 H( |" U3 Y1 sHTML代码结构
) [- o# g' q% E+ ^" Q. w- J
! b9 B% t9 h4 S: v# I' Y7 g- <ul class="grid"><li><a href="http://www.jiawin.com/creative-css3-avatar-display"><img src="images/1.jpg" alt="" /><div class="info"><p>1</p></div></a></li></ul>
复制代码 看了上面代码是极其简单的,就一个列表元素,你需要放多少张图片就写多少<li>。<li>里面的结构如上。6 N" ?1 @+ ^0 I" U& |
CSS样式表, M* G) H& u0 Q x0 W
}2 S: N" ~ G接下来就是我们的css样式表了,在这里只是一个示例,大家在这部分可以自由发挥,定义出你们的个性来。
- T" N# l/ C' F% j- body {font-family: Helvetica, Arial, sans-serif;font-size: 16px;-webkit-font-smoothing: antialiased;-moz-font-smoothing: antialiased;font-smoothing: antialiased;margin:0;padding:0;background-color: #E6E6E6;}.grid {margin: 100px auto 80px auto;padding: 0px;width: 100%;height: auto;overflow: hidden;max-width: 1000px;-webkit-box-shadow:0px 40px 50px rgba(0, 0, 0, 0.3);-moz-box-shadow:0px 40px 50px rgba(0, 0, 0, 0.3);box-shadow:0px 40px 50px rgba(0, 0, 0, 0.3);}.grid li {width: 10%;background: #000000;float: left;position: relative;overflow: hidden;}.grid img {float: left;width: 100%;height: auto;position: relative;-webkit-transform-style: preserve-3d;-webkit-backface-visibility: hidden;-webkit-transform: translate3d(0, 0, 0);-moz-transform-style: preserve-3d;-moz-backface-visibility: hidden;-moz-transform: translate3d(0, 0, 0);transform-style: preserve-3d;backface-visibility: hidden;transform: translate3d(0, 0, 0);}.grid .info {position: absolute;width: 100%;height: 100%;padding: 15px;background: #DC584C;display: none;z-index: 2;-webkit-transform-style: preserve-3d;-webkit-backface-visibility: hidden;-webkit-transform: translate3d(0, 0, 0);-moz-transform-style: preserve-3d;-moz-backface-visibility: hidden;-moz-transform: translate3d(0, 0, 0);transform-style: preserve-3d;backface-visibility: hidden;transform: translate3d(0, 0, 0);}.grid p {font-size: 22px;font-weight: bolder;color: #FFF;}
复制代码 JavaScript代码
. x. S8 W) o" ]. b! G8 x
4 J1 X) G4 I$ R1 O f4 F最后,我们需要借助JavaScript来完成一些特殊的互动(动画效果)。
7 A( a; h( ^7 r7 Q; V4 p# Z7 q(function() {5 t, k4 O' h0 Q4 u2 z
$(function() {! U2 O* p0 ?6 w, C! I& `
var columns, current, easing, grid, hideItem, showItem, time,
( Y7 \# f/ I" s$ U3 ]9 i_this = this;0 K: T/ u$ B( {
grid = $(".grid");9 K, s" N) {6 m8 B a" r1 _
current = {7 c' a. l" `6 d; X4 z0 m
index: -1,
0 K$ _+ i- I; r n0 b6 dcolumn: 0,
/ {+ g6 p3 `, P8 uline: 0" M% P: W. r4 a+ G0 t3 H+ I
};
2 o5 I: U ^) }7 ]+ |8 pcolumns = 10;) o( i( V# I9 C! b* U$ k" q: Z
easing = "cubic-bezier(0.165, 0.840, 0.440, 1.000)";
+ o$ I/ S" r* `8 o% ?: A) utime = 400;6 j1 {( b& V" p* K4 j7 w- X7 F% u4 q( @
grid.on("mouseenter", "a", function(e) {
: x2 s! z. A7 [" K! J2 n# Evar column, el, image, index, info, item, line;
U& m, s' k' w' Eel = $(e.currentTarget);
' k% J3 O4 T. @1 J+ N3 \5 x, e3 Yinfo = el.find(".info");
/ r- o0 K! [9 iimage = el.find("img");
- C4 B0 c$ f3 ^) m- X7 A7 Xindex = el.parent().index();7 A% D5 M: B. p
column = index % columns;1 K; M# w ]8 D8 [& h! p' q
line = Math.floor(index / columns);) d3 R& \! H: H1 F2 j3 g: ]2 f
console.log(index, column, line);! n& f# o ?( q
item = {
$ `& O! K- _5 ^6 C1 Yel: el,4 Q; o5 `% n6 k7 R
index: index,( ?! F$ B; ]5 D7 {
column: column,
4 c8 P" c' Z1 Q: t5 N2 @line: line,
% A P% ]1 O/ E: |info: info,
2 S9 ]6 d' X" ?% e6 P& [image: image
3 e& I6 ~# u! k0 H$ _" A6 m8 g};7 H/ w$ n+ i& ~* b5 D
if (current.el && current.index === index) return;
: d9 v3 c* U$ m3 N+ H! _if (line === current.line && column > current.column) {
1 w9 `+ i) { s, @+ }showItem(item, "-100%", 0, "25%", 0);0 L" C5 A" A r$ y9 r2 f( a b
hideItem(current, "100%", 0, "-25%", 0);
; X- X1 m; ?- Y1 i0 ?: p} else if (line === current.line && column < current.column) { showItem(item, "100%", 0, "-25%", 0); hideItem(current, "-100%", 0, "25%", 0); } else if (line > current.line && column === current.column) {9 d w' m3 R4 K, p
showItem(item, 0, "-100%", 0, "25%");# c. H; {- D8 B: m) D& S1 H4 g/ v
hideItem(current, 0, "100%", 0, "-25%");' ^0 E8 O7 s1 a2 K' Y2 k" U
} else {
" \' X0 y e \& Z3 [showItem(item, 0, "100%", 0, "-25%");9 z, B6 ` Q5 h3 [5 E
hideItem(current, 0, "-100%", 0, "25%");: h$ x y5 {. X! K. |* {$ z; n
}
% z5 H+ j! I" }) @return current = item;
& V; X' f# y2 ]1 P7 L& A});
9 h' \( V* i% }' B6 w8 ~showItem = function(item, infoX, infoY, imageX, imageY) {
. q! X6 T) n, Ritem.info.stop().css({
6 B7 {: R" C7 p# ~' R4 qx: infoX,
, p2 S0 x/ r) _5 |' Iy: infoY,* i1 C% d5 F1 |$ `9 n
display: "block"
7 w# K K: W ~& H( y) P}).transition({
3 J% T: M! T% u4 l* Gx: 0,
4 d0 ]+ b, Z( \' ky: 0,
0 h; E6 u. o, j' o* l+ x7 Wduration: time,, B% S6 w1 S% |* a' F; I# F
easing: easing
+ _: s) g. r: ? g& E+ [});
5 d& C. |' ~+ `return item.image.stop().transition({5 u" j% [8 f( k/ F3 p
x: imageX,
6 C/ B; _( F e, n7 p' G% j, x% a8 R/ E1 Ry: imageY,
% s8 u+ O# W" w6 X5 Popacity: .5, a Z0 Z' i; |3 b5 o8 a
duration: time,- D5 h0 W6 k3 w! E
easing: easing
" _4 r; X% T' m4 h; x});2 [% B W. [4 b$ W$ l
};
' h0 i1 x0 K& ^* @+ jreturn hideItem = function(item, infoX, infoY, imageX, imageY) {! T) T0 _& N1 U: m! F% G
if (!item.el) return;
! B% ?& o- d* t/ H- ]item.info.stop().transition({
; E" L( Q) A. W# H7 sx: infoX,; m$ ?% Q/ j6 f
y: infoY,
: g" ]6 R6 F, u( o3 xduration: time,4 @9 k" w4 F" l3 Y) ^
easing: easing
# x. G2 e8 x- G) K% L});1 a. u. x9 `6 _9 |: _& Z$ |1 q0 D
return item.image.stop().css({. L1 Y0 }" [' k1 E1 o, i# q
x: imageX,# ^4 A) @8 N$ u8 p R; U3 x) Q
y: imageY,
/ q3 m+ H; t/ ^) t% wopacity: .5
; p, [5 h$ a% n}).transition({
4 _2 z! l, }% z' Yx: 0,
. \5 L R1 y( dy: 0,
6 l: O6 ~# ~6 z# E+ @% o9 \" ~opacity: 1,2 C" v1 e4 M: Q. n
duration: time,. @8 y n5 ^* O+ q* ^
easing: easing" i$ { K" I/ ?6 r5 C2 ~
});
$ h& i3 Q( x. j: f- V};6 i h8 p/ _3 F# E
});4 r' O' W& X/ @) o2 Y
}).call(this);. U5 J0 v o* N4 h$ h& Y
- 到这里,我们的示例基本上就完成了,但是按照上面几步来,最终是没效果的,那是因为我们还没引入jQuery库和一个jQuery插件(jQuery Transit)。
复制代码- <script src="http://code.jquery.com/jquery-latest.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.transit/0.9.9/jquery.transit.min.js"></script>
复制代码 jQuery Transit是一个利用了CSS3的过渡和转换特性来实现动画特效的 jQuery插件,与jQuery的animate方法有着同样的语法。此插件支持这个特性所提供的大部分方法,同时增加了 jQuery 独有的技术:回调(callbacks)、自动增加浏览器CSS前缀、链盒(chaining)等。由于此插件使用了真正的CSS3规则,所以它不能兼容旧版本的浏览器。
4 w$ q/ F! ?1 m0 B7 c8 G, ^- i _0 {/ p
下载附件:http://www.webjx.com/files/soft/1_130711103319.rar2 \1 H% H. F8 i U q& d
今天的示例就到这里了,希望大家喜欢,如果有问题可以在下方留言,一起探讨研究。 |
|