Stellar.js supports the creation of position property plugins which allow you to write custom positioning logic.
I've written a sample plugin, called 'apple', which does something resembling what you want:
$.stellar.positionProperty.apple = {
setTop: function($el, newTop, originalTop) {
$el.css({
'top': newTop,
'left': $el.hasClass('apple') ? originalTop - newTop : 0
});
},
setLeft: function($el, newLeft, originalLeft) {
$el.css('left', newLeft);
}
};
You'll notice it includes a ternary which only applies the 'left' value if the element has the 'apple' class:
'left': $el.hasClass('apple') ? originalTop - newTop : 0
This is an example of how you might apply different positioning logic for each element.
So now, you can use the plugin like so:
$.stellar({
horizontalScrolling: false,
positionProperty: 'apple'
});
Obviously, you'll need to tweak this to suit your purposes, but this should be enough to get you started.
You can see a demo of this in action on JSFiddle.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…