Skip to content

tbranyen/jquery-scrolltie

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ScrollTie

###a jQuery plugin that ties a CSS property to scroll###

Supports modern browsers and IE9+ (could be modified to support IE8 but need seems too small)

This plugin is useful for creating parallax motion or similar effects in which a CSS property needs to be incremented on user scroll. Here are a handful sites currently using ScrollTie (some are using previous (unreleased) versions):

If you're using ScrollTie on a project, please email megan@expandtheroom.com when it's live so that we can include it here (with permission)!

Get ScrollTie

####Via npm:####

npm install jquery-scrolltie

####Via bower: ####

bower install jquery-scrolltie

####DIY#### Download or clone repo and include js/dist/scrollTie.min.js (unminified version available as well)

ScrollTie depends on jQuery - be sure to include a stable version before the plugin script. Tested with latest stable version 1 and 2.

Usage

Call scrollTie on any valid jQuery object and pass it options. The only required option is property, which can point to any increment-able CSS property. There are supported shorthands for 2D transforms, backgroundPositionX, and backgroundPositionY.

Example:

$('.scroll-tied-element').scrollTie({
    property: 'translateX'
})

Options

property

string (required) CSS property or one of the following supported shorthands:

  • 'translateX'
  • 'translateY'
  • 'scale'
  • 'rotate'
  • 'backgroundPositionX'
  • 'backgroundPositionY'
  • 'opacity'

speed

number (default: 1) Relative to speed of scroll, where 1 moves at speed of scroll, and 2 moves twice as fast as speed of scroll

stopAtValue

number When the property is incremented to this value, stop moving element

reverseDirection

boolean (default: false) Decrease property value on scroll.

delay

number or function Distance past the bottom of the viewport to wait before beginning to increment property. Functions are passed a reference to the dom element and must return a number.

Example:

function(el) {
    return $(el).height() * 2;
}

propertyValueFormat

function Provide your own formatting for special properties that are don't have built-in support, such as 3D transforms, or override the format for custom behavior. This function is called on update and should be used with care. This function must return a string which will be used as the value of the specified property. The example below is the built-in propertyValueFormat for transform: translateX().

function(moveValue, element) {
    return 'translateX(' + moveValue + 'px)';
}

context

selector (default: window) Specify a scrolling context

manualInit

boolean (default:false) Wait for manual call to initialize scrollTie

Callbacks

All callback functions are passed the dom element as an argument.

Format:


function(element) {
    // your callback
}

afterStop

function Called every time element reaches its stopAtValue

onPause

function Called when element is manually paused

onStart

function Called when element is restarted after it has been paused

onDestroy

function Called when scrollTie instance is destroyed

Public Methods


// To affect single instance:
$('.scroll-tied-element').scrollTie('method');

// To affect all instances:
$.scrollTie('method');

init

Call once if option manualInit is set to true to begin incrementing property value on scroll.

pause

Call pause to temporarily stop incrementing property value. You must call $('.scroll-tied-element').scrollTie('restart') to continue incrementing.

restart

Call restart after pause to begin incrementing again.

** NOTE: Pause and Restart will take elements out of the flow so that they will not necessarily end back where they began. Use with care! **

destroy

Destroys and removes all plugin data.

refresh

Recalculate offsets, delays, and element positions - useful for when the dom changes asynchronously. This is called internally on window resize.

Testing

To test, you will need to run npm install to get test library packages. Current test suite is located in the tests directory.

Contribution guidelines

Log an issue, fork the repo, and create a pull request. Include Issue # and change details in the commit.

Changelog

v1.0.0

  • Initial release.

About

a jQuery plugin that ties a CSS property to scroll.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 52.0%
  • CSS 48.0%