Skip to content

Commit a23daf3

Browse files
committed
💅 significant cross-browser improvement for blur filter
1 parent 602b01d commit a23daf3

File tree

1 file changed

+28
-43
lines changed

1 file changed

+28
-43
lines changed

_posts/demos/0001-05-01-blur-filter.html

+28-43
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,20 @@
1010

1111
features:
1212
- cssfilters
13+
- css3dtransforms
1314

1415
permalink: /blur-filter/
1516
original: blur-filter.php
1617
---
1718

1819
<style type="text/css">
1920
body {
20-
padding: 0;
2121
position: relative;
2222
overflow: hidden;
23+
2324
-webkit-transform-style: preserve-3d;
24-
-moz-transform-style: preserve-3d;
2525
transform-style: preserve-3d;
2626
-webkit-perspective: 600px;
27-
-moz-perspective: 600px;
2827
perspective: 600px;
2928
}
3029

@@ -40,57 +39,46 @@
4039
color: #f99;
4140
}
4241

43-
div.layer {
42+
.layer {
4443
background: #fff;
4544
color: #000;
46-
position: absolute;
4745
border: 10px solid #333;
4846
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;
6048
}
61-
div.layer span {
49+
.layer span {
6250
display: block;
6351
width: 100px;
6452
margin: 20px auto 0;
6553
font-size: 2em;
6654
}
6755

68-
div.back {
56+
.back.layer {
6957
width: 400px;
7058
height: 200px;
7159
top: 180px;
60+
z-index: 1;
61+
7262
-webkit-transform: translateX(300px);
73-
-moz-transform: translateX(300px);
7463
transform: translateX(300px);
75-
z-index: 1;
7664
}
77-
div.middle {
65+
.middle.layer {
7866
width: 580px;
7967
height: 240px;
8068
top: 280px;
69+
z-index: 2;
70+
8171
-webkit-transform: translateX(200px);
82-
-moz-transform: translateX(200px);
8372
transform: translateX(200px);
84-
z-index: 2;
8573
}
86-
div.front {
74+
.front.layer {
8775
width: 720px;
8876
height: 280px;
8977
top: 420px;
78+
z-index: 3;
79+
9080
-webkit-transform: translateX(100px);
91-
-moz-transform: translateX(100px);
9281
transform: translateX(100px);
93-
z-index: 3;
9482
}
9583
</style>
9684
<script>
@@ -102,38 +90,35 @@
10290
var front = 500;
10391
var YY,
10492
offset,
105-
sizeBack,
106-
sizeMiddle,
107-
sizeFront;
93+
blurBack,
94+
blurMiddle,
95+
blurFront;
10896

10997
// For mouse users
11098
$('html').mousemove(function(e){
11199

112100
offset = $('html').offset();
113101
YY = e.clientY - offset.top;
114102

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;
118106

119107
// apply blur
120108
$('.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)'
125112
});
126113
$('.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)',
130116
'transform': 'translate3d(200px,'+ -YY/15 +'px,'+ -YY/15 +'px)'
131117
});
132118
$('.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)'
137122
});
138123
});
139124
});

0 commit comments

Comments
 (0)