先看下html: * V2 _; Z; z# r# J9 E8 B
代码如下:- z) z- k2 u. p; g
<!doctype html public -//w3c//dtd html 4.01 transitional//en ) u4 Y7 `/ g/ h$ u# ^8 T7 p+ X: e
> 7 g' U- Q. P: ^# U" Y4 D
<html>
6 i. M# R/ s, B6 T N<head> " N, S% ~9 L9 |2 G9 V% f6 j. x
<title></title> $ a/ A; l7 N; B; h" v- F
<meta content=text/html;charset=utf-8 http-equiv=content-type>
9 B; u# U6 w9 y<link type=text/css href=reset.css rel=stylesheet> 8 W* v1 }' A' z$ P2 o
<link type=text/css href=main.css rel=stylesheet> 9 j$ ~ Q4 s9 `1 y
<script type=text/javascript src=../../jquery-1.8.3.js></script> # t* ?6 O& D4 V3 o, }
<script type=text/javascript src=vcd.js></script> & X* A! w* q$ ]. _) `6 q# |: D
<script type=text/javascript> 0 d- C$ ]! }0 c' n) I7 z- o' m
$(function ()
1 R" @4 x8 \8 s6 Z: [{
; p. E$ E! J% J* o8 }4 Q7 A- Dvcd.init(); * \; { |2 g- L3 z) Z
vcd.autoplay();
6 t, F s( |! m' _});
/ j4 @7 c% x4 ~, `1 b4 \</script>
, b) b/ P; d4 ]</head>
+ `# \) |7 h6 O+ M<body> * z/ y" [* y* |( r4 z
<div id=vcd>
% b( @7 j- f7 y<i id=cd></i> 3 c3 J% z1 p/ {9 I+ \( A
<ul>
* O/ i4 A7 H" U, B5 `7 }<li class=active><a><img alt=超人归来 src=ad/1.jpg/></a></li> ! S; y$ E( _% h' G7 }9 }
<li><a><img alt=超凡蜘蛛侠 src=ad/2.jpg/></a></li>
: a' Y/ K, C& v5 A( c<li><a><img alt=黑暗骑士:蝙蝠侠 src=ad/3.jpg/></a></li>
1 {( W* j+ L- Q* }, o+ _6 f/ H# J<li><a><img alt=美国队长 src=ad/4.jpg/></a></li> 9 j% y2 G' u. L# @
<li><a><img alt=雷神托儿 src=ad/5.jpg/></a></li> & k# P" S" m4 F R" x
<li><a><img alt=金刚狼 src=ad/6.jpg/></a></li>
' s+ l* y! _; V* r5 \4 u. X</ul> 6 p. Y1 Q/ \! X" P; N" ?
<a id=wrappager title=超人归来 target=_blank></a>
0 r8 |+ Z: w. R( G9 G' n; p( D- a<div id=indexbar> - t* n L; X. ?% F! ~8 w
<a class=active>0</a>
: m+ v' @. l1 U" Q" b, `1 f<a href=#>1</a>
$ ?/ n% y. N5 z* z3 ~<a href=#>2</a> 9 s1 P! `. `$ `* S5 C
<a href=#>3</a>
6 Z/ @8 A Z6 w" U9 i<a href=#>4</a>
( R' P3 \5 X4 p5 M; A5 q<a href=#>5</a> * V+ e6 n) j) n
</div>
3 m! \) O+ H6 O; ~4 {</div> 4 h- k$ N+ o/ B! h: u
</body>
4 b* j" g( s. J* g# D</html>
8 G0 L7 T: ~1 @9 ~可以看到div#vcd是最外层容器,给它设置了一个背景;ul li 分别设置图片元素;i#cd设置背景为光盘,然后设置显示位置;div#indexbar中显示图片的索引,供点击。 " l6 Y# k2 W/ s5 C9 e5 t& e( J
css:
. l4 n9 s3 [4 @5 K, N- Y9 n代码如下:
2 m8 V n$ w0 M( {: A8 u#vcd, #vcd ul, #vcd #wrappager
( F! d/ {9 k: T% W$ a* B& f{
1 n' R* c. j- n+ b* H% L2 Gwidth: 200px; 2 _5 ` ?- Z6 Z) Y0 ? b' w* }
height: 272px; 3 h* j' r5 r$ X; F- T; i5 ]
}
+ R1 {1 ?# Y+ M/ ?5 f" P7 J#vcd, #vcd ul, #vcd #wrappager, #cd 2 V) c$ J+ i6 F, `. i
{
- V6 X9 p6 p+ abackground: url(images/disk.png) no-repeat 0 0; 3 Y F' ^1 Z; P& R; G
}
, E1 N, O- K7 Q. o- ?3 V- W6 S#vcd
, Q" [( S- d8 }) g3 Y{ 9 E8 {- `) j* I+ T5 P# h
position: relative;
" `" F, i9 o2 Rmargin: 20px auto 0;
2 t% Q, o! Y, t3 v4 f} 4 t) f: G' A Q2 {- N. P
#vcd ul, #vcd #wrappager, #cd ; t( r3 n$ @: D% u. W
{
8 ]5 H; l$ c. [/ u6 Zposition: absolute; , X5 l3 }/ w( B) t3 H! r
}
0 \& m) R! ^3 n# _4 t/ k# i' u* D#vcd ul
% C6 \- N8 u. F1 F# t3 W' ^7 L/ ]- O{ - p7 C& M7 R# {. P: @ s; v3 h
background-position: -263px 3px;
# q3 k3 X% G' _% g s' a}
/ N5 E" U9 @& c& Y# Q; K#vcd ul li, #vcd ul li a, #vcd ul li a img
5 `6 J+ `6 L8 i8 S" Q{
$ D5 z" ^8 G* d% u: Zdisplay: block; - [% Q+ p0 p- O* A. Q- g0 \ V
width: 178px;
- D D7 \# P5 p" M# Bheight: 264px; 7 M. }- I: ~+ x
overflow: hidden; 3 J% x, d7 _# v! a! ^' _+ A
} ) L4 ~2 D L$ M) s4 x( p* [% @
#vcd ul li 8 z! c! X7 i( ~5 h
{ & I& w7 b4 N z, h' o
top: 5px; ) q$ [5 H/ T3 C3 j
left: 2px;
/ W! |+ Y2 R1 B7 u" Iopacity: 0;
8 T# g B! G' k, J# V( o& X# i/*visibility: hidden;*/
% E( m- V p# ?( A5 e4 q/ Y3 G-webkit-transition: opacity linear .6s; , b6 J5 \$ V# U! L% ?
/*-webkit-transition: visibility linear .6s;*/ / n4 ^3 v/ |& A
-moz-transition: opacity linear .6s; " N9 \) J2 ]: p4 z3 a* i
-ms-transition: opacity linear .6s; 8 N: z9 c+ x. b9 _* h
transition: opacity linear .6s;
1 r, ~- q; f" _9 S* a' Q$ `position: absolute;
/ w. K! G7 Y- V% ~; [5 V}
7 y( U ~9 j7 `) l- {4 M#vcd ul li.active # K- _( t" H; }4 N' j3 U
{
/ W5 w; s* t, n. p; N2 Bopacity: 1;
8 ~4 |& L5 D* D/*visibility: visible;*/
8 ^$ S% g% i5 Y& Y) h4 K* {3 j} 8 R# g- _( \7 h
#vcd #cd
: o, Y8 ]6 Z1 n" P, c{
) y" M+ O, c5 C4 p; |- e+ \top: 64px; + s s: |9 x! L" e; Y. s
left: 78px;
: L6 Z0 }# r1 P1 a1 zwidth: 146px; 9 \. A3 E# J4 A) m& j$ O( p& y
height: 146px;
' L& |1 R1 ^+ u3 I6 Bbackground-position: -510px 0; 7 C0 Q9 |# r' L8 z1 c, u' c
-webkit-transition: left ease .4s, -webkit-transform ease 1.2s .44s; 5 H' j; l7 E( r4 F: k
-moz-transition: left ease .4s, -moz-transform ease 1.2s .44s;
" R& t# Y1 f+ f4 `-ms-transition: left ease .4s, -ms-transform ease 1.2s .44s;
3 P" C5 x, h& _* X+ R, mtransition: left ease .4s, transform ease 1.2s .44s; + l% E* V7 R, {$ }) ^: C
}
( _. X- G$ I! H x! @1 ?#vcd #cd.switch * u3 w( s# h% [. D2 Z
{
4 f; _" f! T* ? v) o Aleft: 120px; 6 d Y S2 y9 ~( M& ]+ {" R( \
-webkit-transform: rotate(2520deg); v) A' J: C3 Z+ A3 |, D/ H) O
-moz-transform: rotate(2520deg); - f3 s: i9 b! I
-ms-transform: rotate(2520deg);
& t) V! B! t+ b' L0 {# W( u7 wtransform: rotate(2520deg); , Y1 i& m- q4 I2 G3 M; ~
}
# w& v7 v, P% w V#vcd #wrappager
0 e* G+ u" ^6 L2 k2 I{ , ]4 K5 }% y8 I5 ]
display: block; 7 S0 |$ S" a# h
left: 0; 6 r# n4 F* Y4 r
top: 2px; 1 }0 G8 F7 h( z" ~0 D6 O+ `
}
4 \5 P$ }' c) F$ i2 p( z#vcd #indexbar 2 i m8 x+ w4 Y, x6 C+ _
{
( R0 {: D& ~; ^& w* V8 o% _& Ttop: 235px; , D8 G0 ^$ {) D) [6 N: }
left: 25px;
" H7 d2 H6 L" y* R) U% ]0 ^text-align: center;
' b8 A6 a+ {0 l# I2 P6 noverflow: hidden;
- G; L$ r1 t! e+ ^opacity: 0;
6 e9 i1 c% o7 |6 m6 {visibility: hidden; 2 g/ C1 m8 B* J. T
-webkit-transition: opacity linear .6s;
* g1 B' n& f; J O% U-moz-transition: opacity linear .6s; 4 ~0 F9 m7 P# N% o
-ms-transition: opacity linear .6s;
% O4 ?- B4 w9 Y$ D3 N# }1 v5 E Stransition: opacity linear .6s; $ ~8 d2 i$ P" \! S$ e7 U$ I. M
position: absolute;
7 ? r8 I( b2 D8 e} + w( t9 Q2 J4 I- O" Z) _' l8 O
#vcd:hover #indexbar
& I2 z! C0 U) K3 d{ 3 q' P; U% T8 P T- Y0 @
opacity: 1; # v5 @/ _+ i7 ?6 b# Q6 k: b
visibility: visible;
8 O: i% _0 ]; }} . s0 p3 Z) l4 U
#vcd #indexbar a # j' A& H" X. H* [4 w5 t$ Y
{ + F: r- q5 X; U6 e, d
display: inline-block; : |# H9 r. e4 \4 B5 f
margin: 0 4px; ' N# u [( `& r4 N
height: 0;
! x8 Q5 ` L( mwidth: 0;
3 l4 g) x, D" Q5 O4 @border: 4px #9f9f9f solid; , |! e- J3 R( X% A8 x; D# s
border-radius: 100%;
0 v/ ?" z1 ?& q% v/ Itext-indent: -200px;
* s4 v @. E$ {6 E3 }9 Q3 Joverflow: hidden;
# f' N& |+ ?# S. {} $ s7 B2 z& p% c1 g
#vcd #indexbar a:hover, #vcd #indexbar a.active ( t, i" Y. {/ D# P
{ 7 ~& Z! X3 o; ~0 |/ V
width: 4px;
% i& B6 ]. T2 u/ @5 C8 S% }. }height: 4px; 8 N! s" M( L; N! S* C* }
border-color: #05c7fe;
4 U: B, B9 R+ H! s8 q0 r: z r2 jborder-width: 2px;
8 V' p0 j5 K& ]( |0 L}
! F- a5 b' s9 j) ~9 d对于css大家可以照着敲一下,对于位置的布局主要就是依赖position:relative和position:absolute;然后大家会发现使用css3的过渡和变形:transition和transform 我简单提一下: # T& v+ w% r5 o$ J8 E
1、transition : left 1s ease 0s ; 1 M. w, ~3 W1 R2 p! n& `
参数1:需要过渡效果的属性,可以为单个属性:width,left等,也可以设置为all。
" p0 i3 y5 X9 ^' H! t参数2:过渡的持续时间
. I) g3 L) ?) W3 R) f4 l% J4 N4 I- x参数3:过渡的速率动画,这个大家有兴趣可以查查,就是先慢后快,匀速之类的。 Z9 d" A* G, B! a5 H4 U1 k
参数4:过渡开始的延时时间
" ^- R! B8 t7 n+ L8 Z/ Ytransition也支持如下写法:
' d. @3 |7 p+ r: h+ G1 Ntransition-property:border, color , text-shadow ;
; s1 u& D* O7 Ktransition-duration:2s , 3s , 3s ;
0 I( N/ f( u7 T( K' ]5 a7 I7 Y2、transform支持几种变形
" A% i! o3 j. x$ U; ]4 Ftransform:scale(0.5) 缩放
1 @3 y1 m* p- R! F _$ K" I# xtransform:rotate(90deg)旋转90度 / f9 n t( P; @/ q( Z% q- Y) M
transform:skew(10deg 2deg)斜切,矩形转化为平行四边形
+ \* g1 @; l% ftransform:matrix() 这个矩阵变形 这个网站提供在线设计矩阵
8 [8 |( c; x' Z% R% p: s( O- g$ ctransform:translate(40px 20px)平移
8 j) d( T! D" I& U- W) J例外提供了:transform-origin:20% 20%;用于修改变形效果的起点,默认为重点
# A' h1 w, y, U5 Z3 h% g6 o当然我们这个例子用的是旋转,也就不用修改变形效果起点了。
) w2 C4 M/ n) [! ]; T! k: i6 H9 g' Y# p% G3 z
最后是js:
! {) l8 x2 C- @7 I代码如下:
7 M* t' L7 u% x/** 1 }3 `4 m) q: _
* created with jetbrains webstorm.
1 i3 K4 J; ]% l5 F/ r( b* user: zhy ; T- L% W5 j4 w0 b
* date: 14-6-15
* W% |0 c5 k% e! `, c2 c* time: 下午6:26
% f- z( W7 n/ e/ l- G; c$ U+ v* to change this template use file | settings | file templates. ; H% k: r" l# O7 O! {9 r; M
*/ * v& U/ D& ?0 J% b
var vcd = {
2 X% W! B& W' A: r0 B/**
& o; ^% a, W- w+ | N6 P* x* 常量
2 B3 B+ m5 l; x* c*/ 0 J8 d6 S) ?( Z7 f
id_vcd: vcd, 4 q9 b) a* v( M5 I4 O+ }( U6 T
id_indexbar: indexbar,
j8 c+ y# b9 X2 p8 ?id_cd: cd, & t5 [# _1 H% Q5 A" q( k6 H
class_active: active,
' S9 \% \ D- _& Iclass_cd_switch: switch,
" j5 C/ [4 m8 e `9 y6 Hcurrentindex: 0,
) \& A4 C% {8 ^3 O( O, b" Hisrunning: false,
1 d6 H. O4 A) F* Btimer: null, % u/ ]3 N. A* r1 s3 s7 E% `4 K3 \
init: function () 7 h) _! \* D9 r5 u7 _" ?
{
- K# Y, i H7 ? G/ B: h9 ^. m+ `/**
" B- G0 g& g4 k; q2 |* 初始化数据与事件
4 ]6 k" {7 `/ g3 H4 W*/ ' t' Z M/ P2 b2 c. @4 M8 k. {
vcd.vcd = $(# + vcd.id_vcd);
8 K8 G# g+ B7 S2 m+ I6 Ovcd.cd = $(# + vcd.id_cd);
% U: {7 E a5 ]$ S5 I" u! U: W8 l' C0 _vcd.imgs = $(li, vcd.vcd);
9 s" ~' G0 [& M* e7 `! i" mvcd.indexbar = $(# + vcd.id_indexbar); ! n6 |! }! K" r1 [% r
vcd.vcd.mouseover(function (event)
/ b4 c& Q8 V1 a/ U" p* M{ ! _9 x- B0 `; ?! n0 b, r
clearinterval(vcd.timer); 7 }) s$ ]) b2 F5 t4 y. o
});
+ ~3 i$ ?. z' H, _2 z/ Tvcd.vcd.mouseout(function () 8 x/ y0 E5 v6 m% p! B
{ : F& |- D. M9 \8 h7 C |6 Q
vcd.autoplay();
+ K& p. w( x2 k' C9 L! A: M}) ; o- F4 [+ b' Q! J h8 f( E
; 5 c( W7 ?3 T; k: n) A2 _
$(a, vcd.indexbar).click(vcd.dotclick); 8 C+ q+ H+ V$ d! ?
},
& f" f0 v) {& J0 J/ F1 R- W3 o/**
% ^( L5 L1 u1 h& U1 ~2 J* `+ r; T* 按钮点击切换 4 a: L; @1 f9 p0 p2 X
* @param event
$ ]7 b0 p9 w9 ]$ r9 l$ U$ Y*/
$ J8 s$ ?; R; B3 i2 J' h2 _dotclick: function (event) * L, s: |5 A( \( b4 n Y8 @6 v
{
$ ?0 U* B; h# L8 P//如果当前动画还在运行,则直接返回
% ~, L8 g; G# O- f/ w* j0 Eif (vcd.isrunning)return;
3 ^, n/ F* z1 l, h/ E0 O( @# h% Wvcd.isrunning = true; 8 |& Y0 f" ?5 R: K* g3 v
$(a, vcd.indexbar).removeclass(vcd.class_active);
" ?. Y# J5 f9 n- S, k1 E r$(this).addclass(vcd.class_active); * ]8 _$ h% C9 |
vcd.currentindex = $(this).text();
% n/ ~& P3 R" dvcd.cd.addclass(vcd.class_cd_switch); 8 f( a% m) L5 Z9 D R
settimeout(vcd.resetdotclick, 1500);
. Z) ]9 k7 @3 Q8 X# r( v1 Xevent.preventdefault();//阻止a的默认跳转页面
8 `3 P1 I: U2 O- v- M; u; Q}, , p; B" _! g6 d3 E o3 n
/** 1 n: j( K4 y3 R+ @
* 当cd动画结束后,更新图片 ! c& v# V& j+ }. u# s( ^
*/
5 v! N0 o% a+ G: P# i2 fresetdotclick: function ()
. c2 G3 @1 [( t1 y{ % I! ]8 o' `% a+ D2 {$ I* K
vcd.cd.removeclass(vcd.class_cd_switch); / A3 l* r- x# `% R) A
vcd.imgs.removeclass(vcd.class_active); ' @5 G9 L$ S& o3 w: O1 W0 h
vcd.imgs.eq(vcd.currentindex).addclass(vcd.class_active);
+ N$ `; p7 k u r" Gvcd.isrunning = false;
$ C- @8 ]! B( Q# \0 N3 o( t4 q},
% ~5 p* G; A5 g# ?autoclick: function ()
( D% M8 ], }1 N{ , N8 U' a9 j) ?* x' @3 x# x
var as = $(a, vcd.indexbar); V Z, U3 A& a" F
vcd.currentindex++;
" w7 \* ?4 p' l- F: m9 Cif (vcd.currentindex == as.length)
$ E4 R8 {2 V3 P" I {$ F5 H{ , ?+ W6 j+ K- ]: H" E
vcd.currentindex = 0;
6 W- G ]0 V# T9 i8 S9 ?. j} $ V. A+ N, E" T$ C
as.removeclass(vcd.class_active); ) j- ]8 M) g+ ^" y1 J
as.eq(vcd.currentindex).addclass(vcd.class_active); - ^! ?! F$ Z! B# s- q
vcd.cd.addclass(vcd.class_cd_switch); R) l) G' |3 a, \- g e7 P0 g5 e
settimeout(vcd.resetdotclick, 1500); 1 Q2 s1 \6 _2 G2 D# ^ U2 |! c
}, * U& D( n+ \1 r; k7 \
/**
1 C7 `5 Z, u+ C* I7 |2 t% w* 自动播放 3 J3 L* j- ]. v3 }+ q4 _
*/
: s$ S e. F- a6 _2 Fautoplay: function () : O. M0 {, P; o \
{
# R+ x/ J# f+ ~, X! F" s3 n _vcd.timer = setinterval(function ()
% b' E) \# N9 L) T4 W{ ! r) S! _% X! E$ C: \
vcd.autoclick();
% Y5 H3 I& \5 x8 O- T |}, 3000);
4 F4 a/ e; O; k% ^} 4 C4 a; W4 m; ^
}
1 D# e, [* P4 V N' w;
4 X$ A! U4 U9 |/ y0 d! _2 {& y单例的写法,定义了一个对象,然后用户通过vcd.init() ;vsd.autoplay()调用、
% N3 L( U2 J6 P# B% H2 D2 `代码如下:
7 N% |2 C# j2 p/ t4 t4 I# M<script type=text/javascript> $ @( i- X3 O. C& V
$(function () 9 {. T& l% y1 I4 W0 r& L& u
{ [5 Q3 w! N( w. {# {
vcd.init(); 1 \9 V) {3 C5 M9 o4 _+ P
vcd.autoplay(); 3 w$ i7 |0 Y2 j" Z5 B
});
, J% z, l: A8 b# ?# k</script> . T) L5 P/ E. }# q' G
重置的css我就不贴了,下面我把源码提供给大家下载。
! h: [; P& J% ]5 v% Z9 Q
1 o& c' O$ b' I+ S, l3 u1 F6 s更多网页制作信息请查看: 网页制作 |