• Stars
    star
    620
  • Rank 72,387 (Top 2 %)
  • Language
    JavaScript
  • Created almost 14 years ago
  • Updated about 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

jQuery cssHooks adding a cross browser transform property to $.fn.css() and $.fn.animate()

jquery.transform2d.js adds 2d transform capabilities to jQuery css() and animate() functions.

Demo

Usage:

Set transform with a string

$(elem).css('transform', 'translate(50px, 30px) rotate(25deg) scale(2,.5) skewX(-35deg)');
$(elem).animate({transform: 'translateY(-100px) rotate(1rad) scaleX(2) skewY(42deg)'});

You can use the following list of transform functions:

  • translateX(<number>px)
  • translateY(<number>px)
  • combined: translate(<number>px, <number>px) the second number is optional and defaults to 0
  • scaleX(<number>)
  • scaleY(<number>)
  • combined: scale(<number>, <number>) the second number is optional and defaults to the value of the first one
  • rotate(<angle>) units for angles are rad (default), deg or grad.
  • skewX(<angle>)
  • skewY(<angle>)
  • matrix(<number>, <number>, <number>, <number>, <number>, <number>)*

*matrix gives you more control about the resulting transformation, using a matrix construction set.
When using it in animations however, it makes it impossible to predict how the current and target transformations are going to be interpolated; there is no way to tell whether elements are going to rotate clockwise or anti-clockwise for instance.

Get transform

returns a computed transform matrix.

$(elem).css('transform') == 'matrix(0,1,-1,0,100,50)';

Relative animations

Relative animations are possible by prepending "+=" to the transform string.

$(elem).css('transform', 'rotate(45deg)');
// using the following syntax, elem will always rotate 90deg anticlockwise
$(elem).animate({transform: '+=rotate(-90deg)'});

Limitations:

  • requires jQuery 1.4.3+,
  • Should you use the translate property, then your elements need to be absolutely positionned in a relatively positionned wrapper or it will fail in IE,
  • transformOrigin is not accessible.

Why such restrictions with 'translate'?

Since translate is unavailable in IE<9, we have to emulate it using top and left properties of the element style.
This can, of course, only work if the elements are absolutely positionned in a relatively positionned wrapper.

Other plugins position the elements and wrap them transparently.
I think that transparently messing with the DOM often introduces unpredictible behavior.
Unpredictible behavior leads developpers to fear plugins.
Fear leads to anger. Anger leads to hate. Hate leads to suffering.
I prefer leaving this up to you.

License

Dual licensed under GPL and MIT licenses.

Copyright (c) 2010 Louis-Rémi Babé.

More Repositories

1

background-size-polyfill

Adds support for background-size "cover" and "contain" to IE8
JavaScript
1,264
star
2

jquery-smartresize

Debounced and Throttled Resize Events for jQuery
JavaScript
787
star
3

jquery.transition.js

Upgrade jQuery's .animate() method to use CSS3 Transitions in modern browsers.
JavaScript
437
star
4

jquery.backgroundSize.js

DEPRECATED, please use its successor: background-size polyfill
JavaScript
263
star
5

Activable

declarative UI components | 2K, 0 dependency, IE8 compat.
JavaScript
82
star
6

menu-effects

CSS3 menu effects
JavaScript
45
star
7

rotor.js

rotate3d manipulation library - lightweight and extensible
JavaScript
43
star
8

jquery.persival.js

Persival can persist the values users entered in forms, to make them resilient to "inadvertent tab closing" and crashes
JavaScript
35
star
9

node-DJs

Restart a server after each change in main script and dependencies
JavaScript
30
star
10

gulp-shelter

A cozy place for your shell tasks
JavaScript
22
star
11

borderimage

cross-browser implementation of border-image CSS3 property
JavaScript
21
star
12

mediaCache

Put image, audio and video resources in a dynamic cache for offline use
PHP
17
star
13

touch-devtool

Simulate touch events with a mouse, for fun and profit.
JavaScript
16
star
14

node.s3.js

A high level, file oriented javascript API to Amazon S3
JavaScript
10
star
15

jquery.browser

Browser and mobile platform sniffing scripts (plugin & standalone)
JavaScript
9
star
16

WordPress-Post-Relations

Lightweight relations between WordPress post types
PHP
8
star
17

jquery.backgroundXY.js

A jQuery cssHooks implementing background-position-X and background-position-Y in browsers lacking it.
JavaScript
8
star
18

orientation-devtool

Simulate orientation events, for fun and profit
JavaScript
8
star
19

victor

Convert your SVG files to lightweight, Raphael-compatible JSON
JavaScript
7
star
20

WordPress-Sortable-Posts

Reorder posts by drag-and-drop
JavaScript
7
star
21

geolocation.js

a polyfill providing a normalized W3C geolocation API across browsers.
JavaScript
7
star
22

store.space.js

a store.js plugin bringing namespaces to localStorage, in half a Kb
JavaScript
6
star
23

jquery.cookie

The ultimate library to write cookies with jQuery
6
star
24

node.pdf.js

Pdf generation for node using wkhtmltopdf
JavaScript
6
star
25

Math.uuid.js

Minimalistic version of Robert Kieffer's Math.uuid.js, primarily aimed at interacting with couchDB
JavaScript
5
star
26

froglet.js

sandboxed-Widget boilerplate for bookmarklet and extension
JavaScript
4
star
27

slack-app-in-tab

A Chrome + Firefox extension to open the Slack app with its multi-workspace sidebar in a simple browser tab
JavaScript
4
star
28

fxngn.js

A minimalist effects/game engine built to evaluate the influence of != parameters on performances
JavaScript
4
star
29

node.csv.js

Every language need its CSV parser, JavaScript needs a JSON style API
JavaScript
4
star
30

todoso

ToDoSo is a presentation authoring, playing and sharing Web application
JavaScript
4
star
31

ti

nothing interesting
JavaScript
3
star
32

jquery-interval-bookmarklet

Experimenting with visual performances of jQuery animations
JavaScript
3
star
33

jquery.delegate.js

Backport the delegate function introduced in jQuery 1.4, for jQuery 1.3
JavaScript
3
star
34

jquery.updateInterval

update $.fx.interval property dynamically and don't wait to see the effect
JavaScript
3
star
35

designer-tools

cross-browser plugin that makes it easy to style your pages in a cross-browser way
JavaScript
3
star
36

EventSound

audible jQuery events
JavaScript
2
star
37

CV

Take a wild guess
1
star
38

xentity

Declarative UI Component Factory
JavaScript
1
star
39

Slasher

slasher game for the GDPJAM
JavaScript
1
star
40

todosOverlay

The overlay plugin for jQuery that is used on the ToDoSo introduction page
1
star