先看下html: 5 y* n# K) {+ S" ^
代码如下:
D. J; `+ _$ N% e<!doctype html public -//w3c//dtd html 4.01 transitional//en , S( s4 {5 b, U2 R
>
# k. \" E. F- l<html> - l& V, _, L$ E- a s# B, R+ a1 `
<head> ' V2 m! G! u% q$ ^' ^
<title></title>
0 w1 ?! r% ^4 f<meta content=text/html;charset=utf-8 http-equiv=content-type>
8 ?/ u7 {) `+ b3 x<link type=text/css href=reset.css rel=stylesheet> 2 o6 Z. t3 Z- D! W* o; Z6 _, |
<link type=text/css href=main.css rel=stylesheet> 0 |9 m$ W g4 ]" }& Y$ G+ e* F* |& P
<script type=text/javascript src=../../jquery-1.8.3.js></script>
3 i# E, ]! M. Y* j<script type=text/javascript src=vcd.js></script>
[/ E3 l4 ^+ G5 s; l7 K$ V& K<script type=text/javascript> + W( e/ c" j7 f0 l% K$ J
$(function ()
2 S4 n0 _6 z7 z# E' r, w/ V{ k, N9 R- e: p- W4 ~) T' ~
vcd.init();
s8 p$ {. ^5 W3 e( H: ]+ Wvcd.autoplay(); % N; N8 V* }: t: `- H
}); 9 s# g9 @" _7 v& B+ n# ^/ `( f( m
</script>
" g, U8 e8 c( X9 ~4 x. ]</head>
, H. I4 w9 U% U; ~2 ?<body> : m7 {6 }: ~- U
<div id=vcd> : x" S9 n' Z; h$ w
<i id=cd></i> 0 ^. R$ P Z1 \) O: S
<ul> ( ]6 K) |+ i$ s: @5 K$ n* B
<li class=active><a><img alt=超人归来 src=ad/1.jpg/></a></li> ! M) L. d4 a2 S1 r& ?
<li><a><img alt=超凡蜘蛛侠 src=ad/2.jpg/></a></li> 4 P P6 m9 k3 H N6 { R
<li><a><img alt=黑暗骑士:蝙蝠侠 src=ad/3.jpg/></a></li>
6 B' n/ [$ _/ `4 ~" O<li><a><img alt=美国队长 src=ad/4.jpg/></a></li> 4 Y0 ^' ^0 K/ |! C& O- s
<li><a><img alt=雷神托儿 src=ad/5.jpg/></a></li> 3 L+ r: q. _; f0 j k2 V5 F$ D- L
<li><a><img alt=金刚狼 src=ad/6.jpg/></a></li> 7 ?: J" Y4 }1 N# G* Q
</ul>
$ |. Q$ C+ Y' C0 H5 [<a id=wrappager title=超人归来 target=_blank></a>
, _ _( X7 ]7 ^! Z2 |5 V! ~2 d0 T1 S<div id=indexbar>
! j5 @9 H- Q0 Y* L+ y, G<a class=active>0</a>
) h$ ^7 q. f: V! A- A8 _( e<a href=#>1</a>
& [8 p; @6 S% o, a<a href=#>2</a>
# _- j! U7 t$ v8 `) N$ z<a href=#>3</a>
, g! Q/ U/ }' ?; Q6 N' I3 {7 I( p8 ~<a href=#>4</a> 8 u1 C, s+ C2 n. K
<a href=#>5</a>
2 J1 P6 W' k# d) v/ H* G6 o" J+ n: O</div>
8 |$ Y( A9 v$ m P: ~6 V</div>
) L) H& k# J& ~ j" B. K</body> ; F& W- i% ]' {" i; M" M
</html> ( J) l. {2 T/ l& ^2 |8 ?6 L
可以看到div#vcd是最外层容器,给它设置了一个背景;ul li 分别设置图片元素;i#cd设置背景为光盘,然后设置显示位置;div#indexbar中显示图片的索引,供点击。 , @, {* m+ h+ l4 R
css: , \' E) \0 r, g# G5 `. [/ W0 W
代码如下:
; B% J: s5 N* e3 }#vcd, #vcd ul, #vcd #wrappager - y1 ^; ?& c: Y; ~5 D
{ + e% Z- J* Z9 @! w
width: 200px; 5 L S1 b! ?! Z8 }8 ~& p8 n
height: 272px; 2 f- j1 C& r& ^# r; u2 }
} ; `, Q$ M- F2 y' y4 o: h# I9 C
#vcd, #vcd ul, #vcd #wrappager, #cd
% J& Z+ W2 D- W# ^/ C* I{ 3 z' a' j- _, i
background: url(images/disk.png) no-repeat 0 0;
* J( Z) u2 \2 e+ ~. ~' R" w7 P}
' z5 m: J' ]" a( T& Y#vcd $ Q7 d# D2 z- Y# |
{
j* J$ u; y/ jposition: relative; 6 G9 B6 `" ?8 b8 T0 g
margin: 20px auto 0; 2 g5 s+ K/ @( t; u+ J( _: \
} 9 L- I9 _; { o# Y
#vcd ul, #vcd #wrappager, #cd * R: W {1 ?; J# f9 ~
{
3 g( G! D7 `2 W# e4 }. _position: absolute;
/ R) p# Q# R5 Q+ {} 2 R5 C- g, V T+ _
#vcd ul
8 ?3 N# A9 Z& P' K6 U( n* c{
5 A8 y% d! x9 a* a2 f, ?2 P0 M- lbackground-position: -263px 3px;
) @8 i; V/ O6 i* p}
z( m! A$ s' Q' ~: k2 ^' D#vcd ul li, #vcd ul li a, #vcd ul li a img
7 D& `" p# T) J! `{
& P3 `% p! |, v/ C; ddisplay: block; 6 k: y: }/ q! p% i4 }" V7 |4 H; C
width: 178px;
. ?0 h/ f. D5 rheight: 264px;
L' c. A0 d) V- Xoverflow: hidden; / R# y3 H! |' F! f5 E U' |
}
3 \" j' r) |6 c0 h8 B& M#vcd ul li
4 Z2 e$ V# W. \{
, o6 {5 }0 T k, C7 S+ y) [top: 5px;
z" G) Q, l yleft: 2px;
, e: q1 B; r: f+ \opacity: 0;
0 L: I% W, e2 v/*visibility: hidden;*/ / p) g7 z' T; j7 ^9 |4 O& c3 P
-webkit-transition: opacity linear .6s;
+ T7 c2 b; U5 E* p( l' [) E/*-webkit-transition: visibility linear .6s;*/
) _( d1 C3 B! M-moz-transition: opacity linear .6s;
6 w% F/ P! G' c' H# c& l' @-ms-transition: opacity linear .6s;
- |) ~' _9 Y& `, ]/ w M# Ftransition: opacity linear .6s; $ m" M7 n; r. F
position: absolute; 3 [0 C5 I- v {$ c" E) x
} ) B1 B [- C% D: p) _- D
#vcd ul li.active : G* V2 v! U. M+ H& e$ `
{
& w M+ ?- D6 E4 w: S; J6 G) wopacity: 1; ' G" A* c! X) b/ f8 f
/*visibility: visible;*/
* W* T1 U7 I2 }3 L# ?. t$ M} ' h5 y0 I9 g @2 X$ f9 y
#vcd #cd
. Y! F3 n1 l0 c7 a. L% y3 g{
# ^4 v( Y6 z/ L, ? \2 G' t( w+ itop: 64px;
) ~! D" [2 a: f+ e7 I& K: }# G/ b3 bleft: 78px; ( ~4 N, b4 B7 c' c
width: 146px;
$ b: ?4 l9 r. t# Pheight: 146px; 7 ^. y4 M( L: G! z4 V# B
background-position: -510px 0;
2 t; [8 A5 O- d' H& j: J8 B2 o-webkit-transition: left ease .4s, -webkit-transform ease 1.2s .44s; ! ~: I4 w; g) J! U
-moz-transition: left ease .4s, -moz-transform ease 1.2s .44s; 0 |. g6 K4 S8 p
-ms-transition: left ease .4s, -ms-transform ease 1.2s .44s; ' q1 d$ U: B# E% W0 z
transition: left ease .4s, transform ease 1.2s .44s;
9 |; e b! ]5 @8 U} - Y, R1 {( w+ @% n
#vcd #cd.switch
+ y" H5 V, F; z, @, `8 s6 l; b$ C{
1 a& B r4 a9 w; ileft: 120px;
6 c) g% n+ F. B$ H+ [2 M+ f6 ? X-webkit-transform: rotate(2520deg);
- l* G3 U4 N" }+ s2 y7 `" h% |-moz-transform: rotate(2520deg);
& }4 u j* r4 |" R-ms-transform: rotate(2520deg); 8 \9 u/ }1 u3 O" h
transform: rotate(2520deg);
: @" Q( {) }2 S3 a X* {9 ^* w. ~! C} * \; k0 X! ~; D Z; C
#vcd #wrappager ( W0 e% T0 A; K1 p' W
{ 4 A2 T3 v* Z0 }1 a
display: block;
: m5 c; g' R* Fleft: 0;
2 v) E/ }) s5 q$ dtop: 2px; - f! U L# v' Z8 C0 m ]5 i( d. Z
} % c; c& d5 ^: y! }8 e& g
#vcd #indexbar 3 e- `8 I3 t- F8 a) f- W
{ " i/ c% w0 f, ]
top: 235px;
; C9 \2 z9 [9 w, ?% N4 lleft: 25px;
9 p+ B5 j% _ K4 |3 Itext-align: center; 2 H1 E$ ?( T) [. \5 E
overflow: hidden;
}2 C- Y) ?" hopacity: 0; , v1 S0 R. J5 _- K
visibility: hidden; # G4 f' [3 [# K: ] I( q
-webkit-transition: opacity linear .6s; % N; Q* `' x5 R7 Q. D0 ~5 I% k
-moz-transition: opacity linear .6s;
3 S ]8 `- f! m-ms-transition: opacity linear .6s;
9 U: f+ ?5 [* ~% q5 [/ _* ]transition: opacity linear .6s; % S0 Z# t7 [# p D, o- {8 [2 C. k
position: absolute;
& y% W6 B* A6 {' Y9 j) H6 }: f% H} % P$ \3 v! ~2 J) k$ S
#vcd:hover #indexbar
, t7 U8 a8 j7 n. ?6 v{
6 q+ F$ z1 y7 [8 I+ e4 Copacity: 1; + k( G2 E" l/ G; v1 Q: {. d0 K
visibility: visible;
7 Z6 H% I$ _; _# h2 c ]# r}
% S3 x( D6 ]% x- z#vcd #indexbar a
* `8 H( Y9 A; l: n, {% j{
' L1 n* E3 A+ R6 Y5 |) ndisplay: inline-block;
5 N0 A7 G ^2 L2 cmargin: 0 4px; # k; l( K2 \$ Z8 A' j: g; t6 N
height: 0; $ \; |; ~3 t& m9 g
width: 0;
8 ?) K, r/ N+ Fborder: 4px #9f9f9f solid;
# h. U1 V, Q& d4 p/ R* q+ vborder-radius: 100%;
* }" V3 J3 \7 o* D1 {text-indent: -200px; r2 O# L# Z1 A, y) H3 h
overflow: hidden;
# h/ x0 T4 ~( d& R2 ?}
]2 p9 S; t' ^' ^' e* a- D1 n#vcd #indexbar a:hover, #vcd #indexbar a.active 4 k" y! Q. X m
{
6 N# B$ m% ^+ |2 i( I/ F; ^4 Ywidth: 4px;
; x& [$ b J& aheight: 4px;
, Q4 W' U ]/ V9 Dborder-color: #05c7fe; 6 ~; c# V, d; E7 N! @* v, c/ H3 `
border-width: 2px; 6 f" A& N1 W& `8 F
}
( M" F" q4 y' q' q6 l6 b$ H8 _% N对于css大家可以照着敲一下,对于位置的布局主要就是依赖position:relative和position:absolute;然后大家会发现使用css3的过渡和变形:transition和transform 我简单提一下: , m# ~0 I Y# l
1、transition : left 1s ease 0s ;
, L. }! P/ { y, {4 w参数1:需要过渡效果的属性,可以为单个属性:width,left等,也可以设置为all。 C, f& o B8 A5 U* W/ F4 ^' |
参数2:过渡的持续时间
1 A$ a" _- s) M! ?参数3:过渡的速率动画,这个大家有兴趣可以查查,就是先慢后快,匀速之类的。
. b1 g ~. x R e+ g( G& k参数4:过渡开始的延时时间
0 }( a# a5 F2 @& O5 u( N. Q& Utransition也支持如下写法: 5 K# i% y+ E% P5 O8 K. J8 D2 O2 Z
transition-property:border, color , text-shadow ; ( g1 T( { a2 f4 {1 I
transition-duration:2s , 3s , 3s ;
# l. s6 ?' L( G7 ?) ?2、transform支持几种变形
) y5 A. b! G1 M3 Q5 jtransform:scale(0.5) 缩放
4 | _ G& Q+ ]( z/ i( {. utransform:rotate(90deg)旋转90度
; b1 ~7 U, z, w- d: rtransform:skew(10deg 2deg)斜切,矩形转化为平行四边形
* t% i6 i. l" T3 t1 Atransform:matrix() 这个矩阵变形 这个网站提供在线设计矩阵
. C% {8 h4 B( O2 c8 E1 Otransform:translate(40px 20px)平移 # e* a9 y: f) [# _% _. n- |0 d: P
例外提供了:transform-origin:20% 20%;用于修改变形效果的起点,默认为重点 # a! }2 h8 e! j9 J. Y' h
当然我们这个例子用的是旋转,也就不用修改变形效果起点了。 8 K; d1 d" d6 b: c# S8 \1 B
R3 k# S# V/ a V4 _* g; M最后是js: # P }" l- w# u9 d' a W' A8 j+ I
代码如下:
; f- i0 c( o' V- n9 {/**
( y% Y6 q* M$ l; L% o1 c6 Y* created with jetbrains webstorm. 3 K; x0 T# k' B, J- ^
* user: zhy " G r* ?& m# V9 e
* date: 14-6-15 # Y2 |1 p7 N( ?1 {3 Y
* time: 下午6:26 # N# E1 {/ K1 G
* to change this template use file | settings | file templates. ) R) o. L+ Y4 D$ P2 p% f6 Q$ ^
*/
( w6 g& H/ Z3 g: O7 Z V, K# { t% Uvar vcd = { 4 a7 [, H$ b. }4 K: I2 g' h- C; Y
/** / m; A2 R! u1 S2 _
* 常量
' }& D% U. Y6 s2 C9 K*/
& {% s ?0 {$ ]2 g/ qid_vcd: vcd,
" o6 N" b& O `1 e- V( J$ j6 P- l. m/ ~id_indexbar: indexbar, + K" |5 x1 r* `' w
id_cd: cd, % g) w t8 T2 `
class_active: active,
& K5 w' H! W7 C; cclass_cd_switch: switch,
! L5 @' [- I( scurrentindex: 0, ( K4 ^# Q' l, p0 n( g' ]4 b$ o, K
isrunning: false, 3 }! P. z6 L' Z3 R
timer: null, ' D; u$ D/ M9 g) U
init: function ()
7 Z) \7 `6 ] R* Q- d2 k9 w; @{
) h5 i) N6 Y9 m9 L# G9 Z" K2 p/**
+ A1 J6 f0 I7 b; l- {* 初始化数据与事件
, B- L# \) y8 C5 ^% M*/
# z N+ y8 h8 H. s5 R+ jvcd.vcd = $(# + vcd.id_vcd);
8 y& i# m+ L: Y7 d [vcd.cd = $(# + vcd.id_cd);
2 P% G3 |/ p5 y2 V. e3 vvcd.imgs = $(li, vcd.vcd); ' O# z0 f- I! t. q9 G) b
vcd.indexbar = $(# + vcd.id_indexbar);
: I& c- j9 g0 G: G- F, ^' m3 qvcd.vcd.mouseover(function (event)
4 B$ d* j" b4 f, _5 W6 }{
: W+ D7 t( }& k+ c, [! b8 eclearinterval(vcd.timer);
5 A$ y% ~$ T6 b! O});
! M) n F2 B4 H: ?1 ~+ y2 L' svcd.vcd.mouseout(function ()
+ ?# s' F' S0 S& ?, h/ q{ , p k% {: |: B5 P9 i! N! d
vcd.autoplay();
2 E9 T$ T v* c3 w( n" Q6 E})
2 ~8 T+ `& X) `: U;
& j# d& C ?5 w7 u; B6 R7 ]7 y$(a, vcd.indexbar).click(vcd.dotclick);
* i- F$ X( z; a( M" ~}, $ Q5 m( G d( x8 ?7 i
/**
+ _4 @4 x+ ^0 `8 J4 a$ x) P1 b% {* 按钮点击切换 2 S' Q* N& X/ d% w9 p: ?
* @param event + }+ G# T7 |. S+ f! q& U; K
*/
6 }) `7 K9 r$ S/ B" B/ |dotclick: function (event) ' l8 W! F; |8 ^5 r# c
{ : r% d4 S3 X/ d$ ^* F
//如果当前动画还在运行,则直接返回 ) `* z+ r' s P, s; ?7 ~4 C
if (vcd.isrunning)return;
. _" A/ v5 ? @vcd.isrunning = true;
" `0 T. A- f( |2 O0 t$(a, vcd.indexbar).removeclass(vcd.class_active); 3 ~( J& w! d( M$ Y
$(this).addclass(vcd.class_active); 4 c$ Y h8 z. [4 P" F+ I2 w. Q
vcd.currentindex = $(this).text();
: p/ F- v5 Z% c3 E( l7 F$ @vcd.cd.addclass(vcd.class_cd_switch); / ~/ E/ u( D. j$ k
settimeout(vcd.resetdotclick, 1500);
/ t; h. Y0 z1 m9 W* F, X r; Gevent.preventdefault();//阻止a的默认跳转页面 + Z5 e& R" Y( ?* o4 p u' G( g+ Y4 p
},
# U7 J1 c' F2 ?* Q8 j9 o2 G) o/**
A) L( t3 B, l8 ^6 J* 当cd动画结束后,更新图片
* X1 |/ r/ K' Z: ]% Q* P$ Y*/
6 F. g* m( |6 K [resetdotclick: function () / W" F6 j, J% t! S+ u
{
+ l4 X: U' ], v7 g3 ]1 h1 _vcd.cd.removeclass(vcd.class_cd_switch); 6 U7 h `, E- D1 H$ L
vcd.imgs.removeclass(vcd.class_active);
1 e# Z- r& |2 I% Vvcd.imgs.eq(vcd.currentindex).addclass(vcd.class_active); + S/ k0 b7 \# u
vcd.isrunning = false; # t7 I- A! O5 k, R8 \$ i- z5 T( B6 \, M
}, 0 k5 x* [; ]0 x. q3 ?2 Z z0 Z
autoclick: function ()
Z# }( y% M' j: N{ & I% |5 @$ U @' E
var as = $(a, vcd.indexbar); & C0 d% Z' D. D. S2 u: D
vcd.currentindex++;
6 i8 o& V/ ?! ^# i! S8 _9 o/ t% lif (vcd.currentindex == as.length)
3 S" S7 n" ? E( A3 A{ : ?3 U! J+ Q: R m: k
vcd.currentindex = 0; ' H0 _( {; {+ |/ Z, ?7 ]" L! l6 b# y
} 3 f$ W2 i, |' F) R
as.removeclass(vcd.class_active); $ n) G( ?$ ~$ K
as.eq(vcd.currentindex).addclass(vcd.class_active); # i" x. v8 v2 l( R" z
vcd.cd.addclass(vcd.class_cd_switch);
/ D% ]" J% r* q" q/ zsettimeout(vcd.resetdotclick, 1500);
: A# i9 P: K X" i: d+ n}, ) G" |0 g' X0 j" P
/** 4 B' O7 t$ t9 W0 m% i
* 自动播放 4 v0 `2 Z% L: ~2 S2 m" s! P
*/ ; ?. i, O9 s4 V% y
autoplay: function () ' i H! L; N% x$ @# D
{
* i- c! C1 x: Z: Qvcd.timer = setinterval(function () - }0 }) c: w% E
{ : v: M! k1 i/ T9 R
vcd.autoclick(); 7 q+ _ f; ?2 y* @
}, 3000);
. N7 Z; G1 {8 b} , t5 Z- r1 \* l: a
} 7 Y, ]7 _( w4 t* g% I7 Q4 \
;
, p: D: g- p3 G, M单例的写法,定义了一个对象,然后用户通过vcd.init() ;vsd.autoplay()调用、
, l- Q1 t2 x( s( Y9 N4 Q代码如下:
! I1 X- g( k) n+ ?7 W. {<script type=text/javascript>
# `! u7 N o: P1 H& S# B$ K$(function ()
: I5 ^0 s/ h8 l& |0 d6 ^1 Q4 K{
1 x( M3 P4 l' u9 Qvcd.init(); ! M+ T& _& e, q3 k5 F" w
vcd.autoplay(); 4 e+ l& f+ E9 y. s- b% F t3 O1 @
});
! k& b% S1 x7 z) w* p' d7 ^</script> 5 L: O# U0 g+ l( H
重置的css我就不贴了,下面我把源码提供给大家下载。 & S- X# t1 b5 ?" ~9 g- `" R
: W+ a8 r4 X P7 P/ w# X( O更多网页制作信息请查看: 网页制作 |