点导航风格
2014-02-04 16:23:22
今天我将和你分享一下用点导航的巧妙设计风格。例如,这些风格可以用在滚动导航页面或者缩略预览页面,水平方向或者垂直方向。
当达到一种创新性的效果时,小的用户界面元素通常不太会引起人们太多注意,这些元素经常因为尺寸的原因被忽视。但是这些元素经常会展现出一种微妙但有趣的效果。最近,你可能会看到过某种点导航,他们通过水平或垂直滚动而将网页翻页。今天我将和你分享一组赏心悦目的点导航风格,当把鼠标划过时或者点击时,就会展现出这种效果。为了达到这种技巧,我们采用了几种技巧,包括transitions,perspective和SVG。
请注意,有些效果在有些浏览器中可能无法像预期的那样正常工作(例如SVG transition,3D transform-style)。对有些老版本的浏览器来说,你不得不在有些情况下增加一个后退功能。
下面是一个例子:
1
2
3
4
5
6
7
8
9
10
|
< div class = "dotstyle dotstyle-fillup" > < ul > < li class = "current" >< a href = "#" >Home</ a ></ li > < li >< a href = "#" >About</ a ></ li > < li >< a href = "#" >Products</ a ></ li > < li >< a href = "#" >Portfolio</ a ></ li > < li >< a href = "#" >Blog</ a ></ li > < li >< a href = "#" >Contact</ a ></ li > </ ul > </ div > |
在有些例子中,我们要增加一个附加的空列表元素,目的是把当前项目移动到点导航的状态。
我们定义了一些通用的风格:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
.dotstyle ul { position : relative ; display : inline-block ; margin : 0 ; padding : 0 ; list-style : none ; cursor : default ; } .dotstyle li { position : relative ; display : block ; float : left ; margin : 0 16px ; width : 16px ; height : 16px ; cursor : pointer ; } .dotstyle li a { top : 0 ; left : 0 ; width : 100% ; height : 100% ; outline : none ; border-radius : 50% ; background-color : #fff ; background-color : rgba( 255 , 255 , 255 , 0.3 ); text-indent : -999em ; cursor : pointer ; /* make the text accessible to screen readers */ position : absolute ; } |
关于实现这种风格的一个例子,我们放在了下面,在这个例子中,我们填充一个圆。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
/* Fill up */ .dotstyle-fillup li a { overflow : hidden ; background-color : rgba( 0 , 0 , 0 , 0 ); box-shadow : inset 0 0 0 2px rgba( 255 , 255 , 255 , 1 ); transition : background 0.3 s; } .dotstyle-fillup li a::after { content : '' ; position : absolute ; bottom : 0 ; height : 0 ; left : 0 ; width : 100% ; background-color : #fff ; box-shadow : 0 0 1px #fff ; transition : height 0.3 s; } .dotstyle-fillup li a:hover, .dotstyle-fillup li a:focus { background-color : rgba( 0 , 0 , 0 , 0.2 ); } .dotstyle-fillup li.current a::after { height : 100% ; } |
下面是另一个有趣的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
/* SVG draw circle stroke */ .dotstyle-drawcircle li { width : 18px ; height : 18px ; } .dotstyle-drawcircle li a { top : 3px ; left : 3px ; width : 12px ; height : 12px ; background-color : #c44d48 ; -webkit- transition : opacity 0.3 s; transition : opacity 0.3 s; } .dotstyle-drawcircle li svg { z-index : 10 ; } .dotstyle-drawcircle li svg circle { opacity : 0 ; fill: none ; stroke: #fff ; stroke- width : 3 ; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 39 39 ; stroke-dashoffset: 39 ; /* ~ length of circle path (pi*2r) */ transition : stroke-dashoffset 0.3 s, opacity 0.3 s; } .dotstyle-drawcircle li.current a, .dotstyle-drawcircle li a:hover, .dotstyle-drawcircle li a:focus { opacity : 0.5 ; } .dotstyle-drawcircle li.current svg circle { opacity : 1 ; stroke-dashoffset: 0 ; transition : stroke-dashoffset 0.3 s, opacity 0.15 s; } |