|
10 | 10 |
|
11 | 11 | features:
|
12 | 12 | - cssfilters
|
| 13 | +- css3dtransforms |
13 | 14 |
|
14 | 15 | permalink: /blur-filter/
|
15 | 16 | original: blur-filter.php
|
16 | 17 | ---
|
17 | 18 |
|
18 | 19 | <style type="text/css">
|
19 | 20 | body {
|
20 |
| - padding: 0; |
21 | 21 | position: relative;
|
22 | 22 | overflow: hidden;
|
| 23 | + |
23 | 24 | -webkit-transform-style: preserve-3d;
|
24 |
| - -moz-transform-style: preserve-3d; |
25 | 25 | transform-style: preserve-3d;
|
26 | 26 | -webkit-perspective: 600px;
|
27 |
| - -moz-perspective: 600px; |
28 | 27 | perspective: 600px;
|
29 | 28 | }
|
30 | 29 |
|
|
40 | 39 | color: #f99;
|
41 | 40 | }
|
42 | 41 |
|
43 |
| - div.layer { |
| 42 | + .layer { |
44 | 43 | background: #fff;
|
45 | 44 | color: #000;
|
46 |
| - position: absolute; |
47 | 45 | border: 10px solid #333;
|
48 | 46 | border-radius: 20px;
|
49 |
| - |
50 |
| - /* |
51 |
| - * Transitioning the blur kicks this to the GPU, the .05s is a flood control |
52 |
| - * of sorts. Without a delay you're back in the same position as before with |
53 |
| - * too many paints. |
54 |
| - * |
55 |
| - * @see jankfree.org |
56 |
| - */ |
57 |
| - -webkit-transition: -webkit-filter .05s linear; |
58 |
| - -moz-transition: -moz-filter .05s linear; |
59 |
| - transition: filter .05s linear; |
| 47 | + position: absolute; |
60 | 48 | }
|
61 |
| - div.layer span { |
| 49 | + .layer span { |
62 | 50 | display: block;
|
63 | 51 | width: 100px;
|
64 | 52 | margin: 20px auto 0;
|
65 | 53 | font-size: 2em;
|
66 | 54 | }
|
67 | 55 |
|
68 |
| - div.back { |
| 56 | + .back.layer { |
69 | 57 | width: 400px;
|
70 | 58 | height: 200px;
|
71 | 59 | top: 180px;
|
| 60 | + z-index: 1; |
| 61 | + |
72 | 62 | -webkit-transform: translateX(300px);
|
73 |
| - -moz-transform: translateX(300px); |
74 | 63 | transform: translateX(300px);
|
75 |
| - z-index: 1; |
76 | 64 | }
|
77 |
| - div.middle { |
| 65 | + .middle.layer { |
78 | 66 | width: 580px;
|
79 | 67 | height: 240px;
|
80 | 68 | top: 280px;
|
| 69 | + z-index: 2; |
| 70 | + |
81 | 71 | -webkit-transform: translateX(200px);
|
82 |
| - -moz-transform: translateX(200px); |
83 | 72 | transform: translateX(200px);
|
84 |
| - z-index: 2; |
85 | 73 | }
|
86 |
| - div.front { |
| 74 | + .front.layer { |
87 | 75 | width: 720px;
|
88 | 76 | height: 280px;
|
89 | 77 | top: 420px;
|
| 78 | + z-index: 3; |
| 79 | + |
90 | 80 | -webkit-transform: translateX(100px);
|
91 |
| - -moz-transform: translateX(100px); |
92 | 81 | transform: translateX(100px);
|
93 |
| - z-index: 3; |
94 | 82 | }
|
95 | 83 | </style>
|
96 | 84 | <script>
|
|
102 | 90 | var front = 500;
|
103 | 91 | var YY,
|
104 | 92 | offset,
|
105 |
| - sizeBack, |
106 |
| - sizeMiddle, |
107 |
| - sizeFront; |
| 93 | + blurBack, |
| 94 | + blurMiddle, |
| 95 | + blurFront; |
108 | 96 |
|
109 | 97 | // For mouse users
|
110 | 98 | $('html').mousemove(function(e){
|
111 | 99 |
|
112 | 100 | offset = $('html').offset();
|
113 | 101 | YY = e.clientY - offset.top;
|
114 | 102 |
|
115 |
| - sizeBack = Math.abs(back-YY)/40; |
116 |
| - sizeMiddle = Math.abs(middle-YY)/40; |
117 |
| - sizeFront = Math.abs(front-YY)/40; |
| 103 | + blurBack = Math.abs(back-YY)/40; |
| 104 | + blurMiddle = Math.abs(middle-YY)/40; |
| 105 | + blurFront = Math.abs(front-YY)/40; |
118 | 106 |
|
119 | 107 | // apply blur
|
120 | 108 | $('.back').css({
|
121 |
| - '-webkit-filter': 'blur('+ (sizeBack) +'px)', |
122 |
| - '-webkit-transform': 'translate3d(300px,'+ -YY/20 +'px,'+ -YY/20 +'px)', |
123 |
| - '-moz-transform': 'translate3d(300px,'+ -YY/20 +'px,'+ -YY/20 +'px)', |
124 |
| - 'transform': 'translate3d(300px,'+ -YY/20 +'px,'+ -YY/20 +'px)' |
| 109 | + '-webkit-filter': 'blur('+ blurBack +'px)', |
| 110 | + 'filter': 'blur('+ blurBack +'px)', |
| 111 | + 'transform': 'translate3d(300px,'+ -YY/20 +'px,'+ -YY/10 +'px)' |
125 | 112 | });
|
126 | 113 | $('.middle').css({
|
127 |
| - '-webkit-filter': 'blur('+ (sizeMiddle) +'px)', |
128 |
| - '-webkit-transform': 'translate3d(200px,'+ -YY/15 +'px,'+ -YY/15 +'px)', |
129 |
| - '-moz-transform': 'translate3d(200px,'+ -YY/15 +'px,'+ -YY/15 +'px)', |
| 114 | + '-webkit-filter': 'blur('+ blurMiddle +'px)', |
| 115 | + 'filter': 'blur('+ blurMiddle +'px)', |
130 | 116 | 'transform': 'translate3d(200px,'+ -YY/15 +'px,'+ -YY/15 +'px)'
|
131 | 117 | });
|
132 | 118 | $('.front').css({
|
133 |
| - '-webkit-filter': 'blur('+ (sizeFront) +'px)', |
134 |
| - '-webkit-transform': 'translate3d(100px,'+ -YY/10 +'px,'+ -YY/10 +'px)', |
135 |
| - '-moz-transform': 'translate3d(100px,'+ -YY/10 +'px,'+ -YY/10 +'px)', |
136 |
| - 'transform': 'translate3d(100px,'+ -YY/10 +'px,'+ -YY/10 +'px)' |
| 119 | + '-webkit-filter': 'blur('+ blurFront +'px)', |
| 120 | + 'filter': 'blur('+ blurFront +'px)', |
| 121 | + 'transform': 'translate3d(100px,'+ -YY/10 +'px,'+ -YY/20 +'px)' |
137 | 122 | });
|
138 | 123 | });
|
139 | 124 | });
|
|
0 commit comments