jQuery
中有一个允许创建自定义css属性的东西:
https://api.jquery.com/jQuery.cssHooks/
例如,我想向jQuery.transit
添加一些功能:https://github.com/rstacruz/jquery.transit
我想让jQuery.transit(left
和top
中的x
和y
属性与x
和y
相同成为transform: translate(x, y)
)
因此,根据jQuery.cssHooks
手动和内部jQuery.transit
API,我添加了left
和top
:
registerCssHook('left', true);
/* some code */
setter {
/* some code */
left: function(x) {
this.set('translate', x, null);
},
/* some code */
}
/* some code */
getter {
/* some code */
left: function() {
return this._translateX || 0;
},
/* some code */
}
/* some code */
function registerCssHook(prop, isPixels) {
// For certain properties, the 'px' should not be implied.
if (!isPixels) { $.cssNumber[prop] = true; }
$.transit.propertyMap[prop] = support.transform;
$.cssHooks[prop] = {
get: function(elem) {
var t = $(elem).css('transit:transform');
return t.get(prop);
},
set: function(elem, value) {
var t = $(elem).css('transit:transform');
t.setFromString(prop, value);
$(elem).css({ 'transit:transform': t });
}
};
}
一切都很好。现在当我输入
$('.class').css('left', '40px');
所有.class
元素获得:
transform: translate(x, y)
style left: x
style