Skip to content
Permalink
Browse files

accordion: use synced animations only when animating two elements; op…

…timize for only-one
  • Loading branch information
jzaefferer committed Feb 2, 2009
1 parent 7ed45e6 commit bf16dc1853dca7961947158a1d3be430362386eb
Showing with 13 additions and 16 deletions.
  1. +13 −16 ui/ui.accordion.js
@@ -410,36 +410,33 @@ $.extend($.ui.accordion, {
options.toShow.animate({height: "show"}, options);
return;
}
if ( !options.toShow.size() ) {
options.toHide.animate({height: "hide"}, options);
return;
}
var overflow = options.toShow.css('overflow'),
percentDone,
showProps = {},
hideProps = {},
fxAttrs = [ "height", "paddingTop", "paddingBottom" ],
originalWidth;
// fix width before calculating height of hidden element
if (options.toShow[0]) {
var s = options.toShow;
originalWidth = s[0].style.width;
s.width( parseInt(s.parent().width()) - parseInt(s.css("paddingLeft")) - parseInt(s.css("paddingRight")) - parseInt(s.css("borderLeftWidth")) - parseInt(s.css("borderRightWidth")) );
}
var s = options.toShow;
originalWidth = s[0].style.width;
s.width( parseInt(s.parent().width()) - parseInt(s.css("paddingLeft")) - parseInt(s.css("paddingRight")) - parseInt(s.css("borderLeftWidth")) - parseInt(s.css("borderRightWidth")) );

$.each(fxAttrs, function(i, prop) {
hideProps[prop] = 'hide';

if (options.toShow[0]) {
var parts = ('' + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/);
showProps[prop] = {
value: parts[1],
unit: parts[2] || 'px'
};
}
var parts = ('' + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/);
showProps[prop] = {
value: parts[1],
unit: parts[2] || 'px'
};
});
options.toShow.css({ height: 0, overflow: 'hidden' }).show();
options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{
step: function(now, settings) {
// if the collapsible option is set to true, we may not have
// a content pane to show
if (!options.toShow[0]) { return; }

// only calculate the percent when animating height
// IE gets very inconsistent results when animating elements
// with small values, which is common for padding

0 comments on commit bf16dc1

Please sign in to comment.
You can’t perform that action at this time.