jquery.smoove.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /*! jQuery Smoove v0.2 | (c) 2014 Adam Bouqdib | abemedia.co.uk/license */
  2. (function ($){
  3. $.fn.smoove = function (options){
  4. var settings = $.extend({}, $.fn.smoove.defaults, options);
  5. settings.items = $(this);
  6. if($('body').width() == $(window).width()) $('body').css('overflow-x','hidden');
  7. $(window).on('scroll resize', function() { $.fn.smoove.init(settings) });
  8. $.fn.smoove.init(settings);
  9. };
  10. $.fn.smoove.defaults = {
  11. offset: 50,
  12. move: false,
  13. moveX: false,
  14. moveY: false,
  15. moveZ: false,
  16. rotate: false,
  17. rotateX: false,
  18. rotateY: false,
  19. scale: false,
  20. opacity: 0,
  21. transition: "all 1s ease, opacity 1.5s ease",
  22. transformStyle: 'preserve-3d',
  23. transformOrigin: false,
  24. perspective: 1000
  25. };
  26. $.fn.smoove.init = function (settings){
  27. settings.items.each(function() {
  28. $item = $(this);
  29. params = $.extend({}, settings, $item.data());
  30. $item.css({
  31. WebkitTransition : params.transition.replace('transform','-webkit-transform'),
  32. MozTransition : params.transition.replace('transform','-moz-transform'),
  33. OTransition : params.transition.replace('transform','-o-transform'),
  34. transition : params.transition
  35. });
  36. if(!$item.data('offsettop')) $item.data('offsettop', $item.offset().top);
  37. itemtop = $(window).scrollTop() + $(window).height() - $item.data('offsettop');
  38. if(itemtop < params.offset) {
  39. if(params.opacity !== false) $item.css({opacity: params.opacity});
  40. var transforms = [];
  41. if(params.move) transforms['translate'] = params.move;
  42. if(params.moveX) transforms['translateX'] = params.moveX;
  43. if(params.moveY) transforms['translateY'] = params.moveY;
  44. if(params.moveZ) transforms['translateZ'] = params.moveZ;
  45. if(params.rotate) transforms['rotate'] = params.rotate + 'deg';
  46. if(params.rotateX) transforms['rotateX'] = params.rotateX + 'deg';
  47. if(params.rotateY) transforms['rotateY'] = params.rotateY + 'deg';
  48. if(params.scale !== false) transforms['scale'] = params.scale;
  49. transform = '';
  50. for(i in transforms) {
  51. transform += i + '(' + transforms[i] + ') ';
  52. }
  53. if(params.moveZ || params.rotateX || params.rotateY){
  54. $item.parent().css({
  55. WebkitPerspective : params.perspective,
  56. MozTransformPerspective : params.perspective,
  57. MsTransformPerspective : params.perspective,
  58. OTransformPerspective : params.perspective,
  59. transformPerspective : params.perspective
  60. /*,
  61. WebkitTransformStyle : params.transformstyle,
  62. MozTransformStyle : params.transformstyle,
  63. MsTransformStyle : params.transformstyle,
  64. OTransformStyle : params.transformstyle,
  65. transformStyle : params.transformstyle
  66. */
  67. });
  68. }
  69. if(transform) {
  70. $item.css({
  71. WebkitTransform : transform,
  72. MozTransform : transform,
  73. MsTransform : transform,
  74. OTransform : transform,
  75. transform : transform
  76. });
  77. }
  78. if(params.transformOrigin) {
  79. $item.css({
  80. WebkitTransformOrigin : params.transformOrigin,
  81. MozTransformOrigin : params.transformOrigin,
  82. MsTransformOrigin : params.transformOrigin,
  83. OTransformOrigin : params.transformOrigin,
  84. transformOrigin : params.transformOrigin
  85. });
  86. }
  87. }
  88. else {
  89. $item.css({
  90. opacity : 1,
  91. WebkitTransform : '',
  92. MozTransform : '',
  93. MsTransform : '',
  94. OTransform : '',
  95. transform : '',
  96. });
  97. }
  98. });
  99. };
  100. }( jQuery ));