grid programme
This commit is contained in:
+102
@@ -0,0 +1,102 @@
|
||||
// Flickity.Cell
|
||||
( function( window, factory ) {
|
||||
// universal module definition
|
||||
/* jshint strict: false */
|
||||
if ( typeof define == 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( [
|
||||
'get-size/get-size'
|
||||
], function( getSize ) {
|
||||
return factory( window, getSize );
|
||||
});
|
||||
} else if ( typeof module == 'object' && module.exports ) {
|
||||
// CommonJS
|
||||
module.exports = factory(
|
||||
window,
|
||||
require('get-size')
|
||||
);
|
||||
} else {
|
||||
// browser global
|
||||
window.Flickity = window.Flickity || {};
|
||||
window.Flickity.Cell = factory(
|
||||
window,
|
||||
window.getSize
|
||||
);
|
||||
}
|
||||
|
||||
}( window, function factory( window, getSize ) {
|
||||
|
||||
'use strict';
|
||||
|
||||
function Cell( elem, parent ) {
|
||||
this.element = elem;
|
||||
this.parent = parent;
|
||||
|
||||
this.create();
|
||||
}
|
||||
|
||||
var proto = Cell.prototype;
|
||||
|
||||
proto.create = function() {
|
||||
this.element.style.position = 'absolute';
|
||||
this.element.setAttribute( 'aria-hidden', 'true' );
|
||||
this.x = 0;
|
||||
this.shift = 0;
|
||||
};
|
||||
|
||||
proto.destroy = function() {
|
||||
// reset style
|
||||
this.unselect();
|
||||
this.element.style.position = '';
|
||||
var side = this.parent.originSide;
|
||||
this.element.style[ side ] = '';
|
||||
};
|
||||
|
||||
proto.getSize = function() {
|
||||
this.size = getSize( this.element );
|
||||
};
|
||||
|
||||
proto.setPosition = function( x ) {
|
||||
this.x = x;
|
||||
this.updateTarget();
|
||||
this.renderPosition( x );
|
||||
};
|
||||
|
||||
// setDefaultTarget v1 method, backwards compatibility, remove in v3
|
||||
proto.updateTarget = proto.setDefaultTarget = function() {
|
||||
var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';
|
||||
this.target = this.x + this.size[ marginProperty ] +
|
||||
this.size.width * this.parent.cellAlign;
|
||||
};
|
||||
|
||||
proto.renderPosition = function( x ) {
|
||||
// render position of cell with in slider
|
||||
var side = this.parent.originSide;
|
||||
this.element.style[ side ] = this.parent.getPositionValue( x );
|
||||
};
|
||||
|
||||
proto.select = function() {
|
||||
this.element.classList.add('is-selected');
|
||||
this.element.removeAttribute('aria-hidden');
|
||||
};
|
||||
|
||||
proto.unselect = function() {
|
||||
this.element.classList.remove('is-selected');
|
||||
this.element.setAttribute( 'aria-hidden', 'true' );
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Integer} factor - 0, 1, or -1
|
||||
**/
|
||||
proto.wrapShift = function( shift ) {
|
||||
this.shift = shift;
|
||||
this.renderPosition( this.x + this.parent.slideableWidth * shift );
|
||||
};
|
||||
|
||||
proto.remove = function() {
|
||||
this.element.parentNode.removeChild( this.element );
|
||||
};
|
||||
|
||||
return Cell;
|
||||
|
||||
}));
|
||||
Reference in New Issue
Block a user