css3和js网页制作实例:网页头像展示效果) i9 |( }! F. B. ^3 s$ N- B
今天就为大家分享一个非常有创意的CSS3头像展示效果,交互性强,是一个基于css3和js来实现的,代码量不多,但是最终的效果却很让人赞叹,所以特别推荐给大家。其中关于本示例的一些css样式呈现,个人认为还有很大的发挥空间,例如鼠标经过的时候而不是切换成一个背景色和文字,而是替换成其他的相关图片(例如改为人物的其他表情),这将会是非常的有意思的。- Y' c0 S2 G4 |
~, Y* ~. R7 Y3 a9 A
5 e+ _4 b9 g) a8 o$ P, B好了,接下来我们一起看看其效果的制作方法。
; \! |( k" _$ w' HHTML代码结构
8 Z4 H* ~! w; \! k$ o4 G7 R5 k" p. o
- <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>里面的结构如上。3 |" J9 @( b) v! F, F
CSS样式表0 U. g; g5 P) E& p3 U
P& u% s/ e" m. L% X( i接下来就是我们的css样式表了,在这里只是一个示例,大家在这部分可以自由发挥,定义出你们的个性来。* p+ @9 V8 k' t! `- Q, C$ M
- 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代码9 q& }3 J- F2 }7 i2 L/ O, F- y
, G: ]% G% T9 `% |3 X最后,我们需要借助JavaScript来完成一些特殊的互动(动画效果)。3 `% b8 r% M* O- K. o4 J
(function() {. h! ^! q7 z3 q8 E/ D
$(function() {
/ C* ]1 \* r6 _ W6 Vvar columns, current, easing, grid, hideItem, showItem, time,8 i4 o0 [" E8 _- R+ d
_this = this;
4 R; X9 f% |9 }) b$ `+ }grid = $(".grid");
" q! ^1 E9 ^+ W4 a/ H: xcurrent = {
3 k7 E& p8 z9 ^3 |6 H/ @* {index: -1,# b D+ A5 @& E2 g* ^* J1 I" i0 U
column: 0,
. e9 F" s) c. i7 M% cline: 0% w2 n. I$ U& B( Z) s$ b! y, {
}; U9 a2 e' |8 c" C5 u: g4 g
columns = 10;% c+ m$ a) Q: z) `, E
easing = "cubic-bezier(0.165, 0.840, 0.440, 1.000)";" K5 S/ ^: Z% `8 z: u
time = 400;
6 r" L6 B4 ~8 E2 j3 {+ G# u3 z6 k. {grid.on("mouseenter", "a", function(e) {
+ E: ~" f, V# J2 i0 hvar column, el, image, index, info, item, line;7 ?# }8 T/ t# O6 Y( ], s
el = $(e.currentTarget);
! V% i) S. v) h$ z- ?info = el.find(".info");% w) t- _, m: w
image = el.find("img");3 `& Z" G- z% q
index = el.parent().index();
: W& N F" U' S% T; Tcolumn = index % columns;
G) D* L- {* x; k% G0 n8 K' ^. ?line = Math.floor(index / columns);- b" [* |3 f. I# P
console.log(index, column, line);
& o5 z% K* S- J# y8 B7 y$ Bitem = {
4 _: [* X) l$ v% R) G' Gel: el,6 O3 n6 e0 Z7 D. X& Z
index: index,. x. ~ d+ U3 R) r0 V& |( A
column: column,7 y6 l3 ^1 ? h) k
line: line,
1 u8 e$ }5 c* c' \6 k, _8 F1 v# Iinfo: info,2 I v6 B J) I! J' @5 V
image: image
) H+ |9 k$ a! h( |: B};
( `/ `& K8 m" {- i& B- dif (current.el && current.index === index) return;
7 h: l9 k2 m' I9 p: z Y7 @if (line === current.line && column > current.column) {! c. L2 E. H l, d! \# _
showItem(item, "-100%", 0, "25%", 0);
# E0 A! m. x0 M2 z! `8 |% r7 JhideItem(current, "100%", 0, "-25%", 0);
) G5 y5 _) i6 [9 E- v9 q} 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) {& M) X8 |( X' v) t- I1 t v
showItem(item, 0, "-100%", 0, "25%");- d! y5 r5 W0 T$ m* D6 h8 m
hideItem(current, 0, "100%", 0, "-25%");
; f: e0 b" X& V} else {6 n2 r, }. u& V: k' s8 d9 y3 P
showItem(item, 0, "100%", 0, "-25%");- r; Q5 U8 |+ c
hideItem(current, 0, "-100%", 0, "25%");- x3 |+ p8 D2 g% w0 u
}; ]1 y; r( l" ]* o1 y
return current = item;
8 F1 ]$ r! B$ }" ? l+ g8 N+ t7 h});( P" q/ H) p0 d b9 r& y
showItem = function(item, infoX, infoY, imageX, imageY) {( W; B0 X0 n# |
item.info.stop().css({% [4 L1 H7 [ B" l& U
x: infoX,
7 ~" E3 ^, V# s& \# G) zy: infoY,
& g3 a# O; E8 |8 N4 v7 }display: "block"! I! u; P M( Q( b5 b# V
}).transition({
( ^2 q# k) |: j4 y I+ u+ Cx: 0,, y& Y' L% ~" h% k
y: 0,3 V' ]* l- p6 n% _! N" _' w" f; e
duration: time," U8 _. y, E5 v! Y! o
easing: easing
1 m" T; R7 L2 ? K$ w});' z; M+ M1 [. T
return item.image.stop().transition({) |0 T" C! \7 G
x: imageX,
8 z- ~4 N6 ~7 j' x( Ky: imageY,& Z/ f& v- h3 |; J, q2 i! }
opacity: .5,2 Q- S) Y" @, [
duration: time,
* N* @+ n' s( [$ _* T$ e/ Oeasing: easing& O7 A9 }1 M" F" m
});
) j; k; e: w2 f% ]};
3 T) _- m" b; w0 b; |- F$ Lreturn hideItem = function(item, infoX, infoY, imageX, imageY) {0 D% c9 D+ Q/ a$ F, ~0 O. m0 R
if (!item.el) return;- d% g, ~ L6 G! l4 g E2 \
item.info.stop().transition({- |1 P% w. P8 \) V/ Q, g* W
x: infoX,) @2 {( D0 _6 n1 u3 R
y: infoY,5 l/ l& O; C A& P. _
duration: time,
/ w# |2 r2 {- y* S2 geasing: easing! ~0 `* n# \9 V0 _ T$ J
});9 x( G, \4 T9 d" ~( S
return item.image.stop().css({( f4 |; S* y) b; N% ~5 u b
x: imageX,- @) b2 Z1 h* ~. [2 x
y: imageY,) N) {' h) F; f# a, Q
opacity: .5
! U3 j( |6 m, \/ \ z: u2 m0 Q2 W}).transition({
2 ?: d2 n0 ~9 m9 |: ]x: 0,. _" F- y0 C( c+ B1 n2 H% b
y: 0,
1 K2 L5 Z6 g& H" b0 \$ f/ Xopacity: 1,
; R% i; s6 f( x9 dduration: time,
6 l: y8 R0 I, z* j4 leasing: easing2 k+ I: S# K' O! K2 k
});
8 o1 e d3 E: v) y! E};6 U S! _' Y- `& n9 [/ B1 F
});
5 z* u4 M8 L/ G' h1 r! V5 m0 c; G; q}).call(this);! u; z' O1 G; `/ |( }/ _% W
- 到这里,我们的示例基本上就完成了,但是按照上面几步来,最终是没效果的,那是因为我们还没引入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规则,所以它不能兼容旧版本的浏览器。: e; x( g: Y6 M1 c! }9 C0 Y' A3 G
6 m" Q3 k( @, `" D' s下载附件:http://www.webjx.com/files/soft/1_130711103319.rar
$ s: v, v- F1 B1 G今天的示例就到这里了,希望大家喜欢,如果有问题可以在下方留言,一起探讨研究。 |
|