Twitter
@peterlof, @ExMachinaGames
Ex Machina Games
http://www.exmachinagames.com
Github
https://github.com/peterned
Slides
zsm online!
n noor notes, p voor fullscreen
Twitter
@peterlof, @ExMachinaGames
Ex Machina Games
http://www.exmachinagames.com
Github
https://github.com/peterned
Slides
zsm online!
#derp {
-webkit-transform: translate(50px, 50px);
-moz-transform: translate(50px, 50px);
-ms-transform: translate(50px, 50px);
-o-transform: translate(50px, 50px);
transform: translate(50px, 50px);
}
Denk die erbij ...
translate(x, y), translateX(x), translateY(y)
#derp {
transform: translate(50px, 50px);
}
#derp {
transform: scale(2, 0.5);
}
#derp {
transform: rotate(30deg);
}
#derp {
transform: skew(30deg, 0);
}
#derp {
transform: translate(50px, 50px) scale(2, 0.5) rotate(30deg);
}
#derp {
transform: matrix(1.175,-0.429,-0.145,0.965,-75.202,53.250);
}
translate3d(x, y, z), en losse X, Y en Z, etc
#derp {
transform: translate3d(0, 20px, 100px) rotateY(20deg);
}
This function allows you to specify the raw 4x4 homogeneous transformation matrix of 16 values in column-major order. Have fun with that!
#derp {
transform: matrix3d(0.869295848659877, -0.03752066987527169,
-0.4928660333547193, 0, 0.09933466539753062, 0.9900332889206209,
0.09983341664682815, 0, 0.48420796333090704, -0.13574345715771877,
0.8643589312813316, 0, 116.20991119941769, 12.5784297178525,
112.55385649248043, 1);
}
Genereer dit aub (volgt)
#derp {
transition:
property duration easing delay,
property duration easing delay;
}
#derp {
transition:
transform 0.5s ease-out,
opacity 0.5s linear;
}
#derp {
transition: all 0.5s ease-out;
}
#derp {
transition: transform 0.5s ease-out;
}
#derp:hover {
transform: scale(1.25, 1.25);
}
#derp {
transition: transform 0.5s, opacity 0.5s;
opacity: 0;
}
#derp:hover {
transform: rotate(90deg);
opacity: 1;
}
#derp {
transition: transform 0.5s, opacity 0.5s 0.5s;
}
#derp:hover {
transition: transform 0.5s 0.5s, opacity 0.5s;
}
Bij een :hover worden onmiddelijk de nieuwe delays toegekend!
@keyframes derper {
0% { properties }
10% { properties }
/* ... */
100% { properties }
}
#derp { animation: derper 2s 3; }
.left #derp { ... }
.right #derp { ... }
Eindeloos scrollen?
// modulo, % index = ( index + 1 ) % amount;
.slideshow li {
transition: transform 0.5s ease-out, opacity 0.5s;
opacity: 0;
}
.slideshow li.current {
transition-delay: 0.25s;
opacity:1;
}
.slideshow li.next {
transform: translateX(75px) rotateY(20deg);
}
.slideshow li.prev {
transform: translateX(-70px) rotateY(-20deg);
}
Transitie op alles met class fx-*
*[class*=fx-] {
transition: transform 0.5s, opacity 0.5s;
}
Met specifieke classes voor effecten:
.fx-fadein {
opacity: 0;
}
.fx-slideup {
transform: translate(0, 20px);
}
Een trigger class,
.fx-run {
transform: translate(0, 0);
opacity: 1;
}
En trigger script:
document.addEventListener('DOMNodeInserted', function(e){
// inserted node
var node = e.target;
// check for the fx class
if(/fx-/.test(node.className)) {
// defer classname assignment
setTimeout(function(){
node.className += ' fx-run';
}, 0);
}
});
<p class="fx-fadein fx-slideup"> fadein </p>
via HTMLElement.style:
var node = document.querySelector('#derp');
var style = node.style;
style.setProperty('transform', 'rotateY(20deg)', '');
De identity matrix:
var identity = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ];
Van eerder:
#derp {
transform: matrix3d(0.869295848659877, -0.03752066987527169,
-0.4928660333547193, 0, 0.09933466539753062, 0.9900332889206209,
0.09983341664682815, 0, 0.48420796333090704, -0.13574345715771877,
0.8643589312813316, 0, 116.20991119941769, 12.5784297178525,
112.55385649248043, 1);
}
var Matrix = function(entities) {
this.entities = entities;
}
Matrix.prototype = {
translate: function(x, y, z) {
return this.multiply([
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
x, y, z, 1
]);
},
// ...
rotateY: function(a) {
var c = Math.cos(a);
var s = Math.sin(a);
return this.multiply([
c, 0, s, 0,
0, 1, 0, 0,
-s, 0, c, 0,
0, 0, 0, 1
]);
},
// ...
toString: function() {
return 'matrix3d(' + this.entities.join(',') + ')';
}
};
var derp = new Matrix(). translate(0, 100, -50). rotateX(0.4); //rad
var style = document.querySelector('#derp').style;
style.setProperty('transform', derp.toString(), '');
var r = Math.PI * 2; // full circle;
var l = items.length; // aantal items
for ( var i = 0; i < l; i++) {
// angle
var angle = (r / l) * i;
// coordinates
var x = Math.cos(angle) * 300;
var y = 50;
var z = Math.sin(angle) * 300;
// matrix
var m = new Matrix().rotateY(angle).translate(x, y, z);
// assign
items[i].style.setProperty('transform', m.toString(), '');
}
Wordt: