css3和js网页制作实例:网页头像展示效果
/ D% ]6 G0 e9 K9 F# [今天就为大家分享一个非常有创意的CSS3头像展示效果,交互性强,是一个基于css3和js来实现的,代码量不多,但是最终的效果却很让人赞叹,所以特别推荐给大家。其中关于本示例的一些css样式呈现,个人认为还有很大的发挥空间,例如鼠标经过的时候而不是切换成一个背景色和文字,而是替换成其他的相关图片(例如改为人物的其他表情),这将会是非常的有意思的。" s& w7 O+ l) L d9 N6 f2 f% R, |
4 P* ~+ O# m( O$ i/ g! R, A+ L. t! _! M( K4 I- [
好了,接下来我们一起看看其效果的制作方法。
( s) e* w% j7 _5 O" HHTML代码结构 V: _+ T& u7 m0 U+ \* l9 s
7 ]$ U* l( s `4 C& b) ~- H
- <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>里面的结构如上。
& |0 V) E/ J2 @2 j* T; m8 i6 VCSS样式表
* ]) ?) [: @) A2 W9 ]1 `# e; d! r; b& k3 S9 i( V" k4 `
接下来就是我们的css样式表了,在这里只是一个示例,大家在这部分可以自由发挥,定义出你们的个性来。
/ E+ W/ W% a' z3 |/ Y6 I- 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代码7 t' a* n& r: z
! u: a# [* b1 {" K2 H
最后,我们需要借助JavaScript来完成一些特殊的互动(动画效果)。
- B) q7 i; I+ |3 n/ q/ @(function() {3 r+ d& p( B5 A* p- {' u y& P
$(function() {
# @" m2 \3 Q) M" B2 rvar columns, current, easing, grid, hideItem, showItem, time,, F6 o& C1 X8 P- f# K9 I
_this = this;- O8 k6 {% a2 f; m
grid = $(".grid");
/ H6 M5 Y' s% `! R& N8 ^current = {
* o# V2 \6 T) x3 H' E; aindex: -1,
, B1 q% H7 ^$ E4 Ycolumn: 0,
5 A/ [4 P; L$ N% cline: 0
* L. |( _( ^ L( D+ ^2 Q1 _( M};) C6 y3 v( h! x# O4 H$ J1 E7 C
columns = 10;6 [4 E H* |: c
easing = "cubic-bezier(0.165, 0.840, 0.440, 1.000)";; E3 f8 m5 H7 r' _. [
time = 400;
g% M% s: B, z# w5 S9 Egrid.on("mouseenter", "a", function(e) {
- V- K) d& B! W$ m( s0 Hvar column, el, image, index, info, item, line;
9 h, x* }! N9 P- _3 t4 Del = $(e.currentTarget);
& v8 y9 q" k) c: c+ x: Minfo = el.find(".info");
$ G5 y% b9 _" w6 Vimage = el.find("img");7 | f- m0 X/ N$ Q8 h0 w. u
index = el.parent().index();3 b) K" S5 V9 b
column = index % columns;) e( c! x& |1 m6 p# b. X
line = Math.floor(index / columns);
4 t+ a& |$ b+ W% G! D# ?' dconsole.log(index, column, line);
[) m& e: g b& C4 @item = {
5 ~" k+ H+ U r/ z7 H* {el: el,
# L7 C4 Y/ i; b5 t3 h% K% W( f9 @: Tindex: index,
+ _; D! N; H% ?column: column,0 b5 L; T) F6 a6 K: a4 G% @! O
line: line,
2 N& g, _, b" O H+ f- Rinfo: info,
. J8 E7 P( F6 r0 Himage: image$ F( w& C/ l5 h6 \4 c% P$ x# c3 I6 l
};
' u, I: B! a8 o: L V, f1 Y4 d5 fif (current.el && current.index === index) return;7 v: h: w, q/ X) e
if (line === current.line && column > current.column) {
. {' N" D' u7 g' c$ A; e% K; t2 JshowItem(item, "-100%", 0, "25%", 0);3 v! E3 y; b) h# R, L; r
hideItem(current, "100%", 0, "-25%", 0);, F- q1 k3 }& p! X" q5 B
} 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) {3 I9 s/ h2 B8 N7 s
showItem(item, 0, "-100%", 0, "25%");3 Q' C, {' {& I; Z! f3 `4 |
hideItem(current, 0, "100%", 0, "-25%");
$ [9 g; T# p9 d3 Z; e6 ^. w} else {
/ {/ ?) B9 c) wshowItem(item, 0, "100%", 0, "-25%");9 `' A z! m7 ?, g+ {5 Q$ M
hideItem(current, 0, "-100%", 0, "25%");
, K, b1 ^% B0 O+ U- B3 u6 u/ G/ E6 u, b}
" t! `+ o% y9 x: ereturn current = item;
; X# T6 c, w Q, a: h. v6 A});1 W' N+ Q8 S9 W- f( J( s: Q2 s
showItem = function(item, infoX, infoY, imageX, imageY) {' y& o- ?; U X6 a( {) R& \
item.info.stop().css({7 X; e" I5 }- M2 D
x: infoX,
5 w6 m2 ~) n8 i" D% y" Q' [# q' n8 M' Uy: infoY,
- ]0 k, p! @! Xdisplay: "block", O f' M6 F. u5 g0 F. o3 {
}).transition({: Y3 y3 n8 P6 i# i* F- x$ a# U# l: n
x: 0,
+ C' B/ \" d K/ x9 [! y# D. Wy: 0,
1 ^9 s5 ]8 e$ e' D3 Nduration: time,
: I4 G; E& i: z% w, i* Geasing: easing: H- Y/ K6 \/ B. W. Z
});. ]% j! [; W( X9 [1 p4 h
return item.image.stop().transition({
( y0 I# j# q2 E5 h7 qx: imageX,: X* ?( ?2 W# i s
y: imageY,
& Q! c" o. R& h& ^opacity: .5,$ C5 V: U- f1 [8 j7 I. C: _9 j
duration: time,
4 L- D- ~5 L6 W2 _* v; _& S- measing: easing* P& C) a7 A: ~$ m
});+ x* X! w( Y0 g
};
2 ]- k3 J( L' y; L, Ureturn hideItem = function(item, infoX, infoY, imageX, imageY) {
% F% A h$ Y( T2 u* x' h* {1 Xif (!item.el) return;2 Y0 {* r; ?3 T0 v9 W
item.info.stop().transition({
& s% A. t6 b% m) s' a+ px: infoX,
) m* [0 X) [4 v' d by: infoY,
7 @6 k( Q, c1 k Yduration: time,
! Z7 p. r& f$ I' `& F$ O6 y# x$ Ceasing: easing
2 j& h6 z% D5 r8 q# w});
+ n6 ~! z5 q3 Y' s7 }. `return item.image.stop().css({
& H. {, X% A: Y5 Z8 O/ l+ rx: imageX,
- A1 g; t$ b6 Jy: imageY,. `( R4 i8 o* q& G
opacity: .5& ^6 R& x- u9 V5 J/ V8 A/ j7 I$ s! W
}).transition({3 e5 `" F; d: l6 d
x: 0,
4 V! J4 P h7 ~: G6 M S$ A! dy: 0,
3 _- x$ o! q9 }9 c: Lopacity: 1,) v- |3 }$ W/ o5 a
duration: time,4 E4 t) h) g0 ^9 S6 R
easing: easing
; D0 T2 V% P( w: |8 _7 _& o});
/ x* J! {) d5 C' H};( r- F4 G' E! C% r
});
. h+ g1 w0 p; |" f2 f+ S' w}).call(this);& C5 s; t5 o |7 F% X2 Q) \2 l7 k
- 到这里,我们的示例基本上就完成了,但是按照上面几步来,最终是没效果的,那是因为我们还没引入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规则,所以它不能兼容旧版本的浏览器。
. A; q# ^( D% u/ w, g$ l4 T2 p$ k" Z8 _
下载附件:http://www.webjx.com/files/soft/1_130711103319.rar
; p6 j) B5 G, x9 H/ a) F' T2 J今天的示例就到这里了,希望大家喜欢,如果有问题可以在下方留言,一起探讨研究。 |
|