@ -110,7 +110,7 @@
wrapper . style . overflow = "hidden" ;
html . style . backgroundColor = "#ffffff" ;
scrollContainer . style . overflowX = "auto";
scrollContainer . style . overflowX = globalScaleRatio === null ? "hidden" : "auto";
scrollContainer . style . overflowY = "auto" ;
fixedWrapper . style . overflow = "hidden" ;
fixedWrapper . style . width = bounds . width * scale + "px" ;
@ -284,37 +284,37 @@
if ( BI . isIE ( ) ) {
BI . Combo . prototype . adjustHeight = function ( e ) {
adjustHeight . call ( this , e ) ;
var transformX = 0 , transformY = 0 ;
var transformX = scrollContainer . scrollLeft ;
var transformY = scrollContainer . scrollTop ;
if ( this . popupView ) {
if ( ! checkInPopupView ( this . popupView . element [ 0 ] ) ) {
transformX = scrollContainer . scrollLeft ;
transformY = scrollContainer . scrollTop ;
this . popupView . element [ 0 ] . style . left = parseInt ( this . popupView . element [ 0 ] . style . left ) * scale - transformX + "px" ;
this . popupView . element [ 0 ] . style . top = parseInt ( this . popupView . element [ 0 ] . style . top ) * scale - transformY + "px" ;
} else {
var cBounds = BI . extend ( { } , this . popupView . element [ 0 ] . getBoundingClientRect ( ) ) ;
var pBounds = BI . extend ( { } , this . popupView . element [ 0 ] . parentElement . getBoundingClientRect ( ) ) ;
var hasScale = this . popupView . element [ 0 ] . style . transform && this . popupView . element [ 0 ] . style . transform . includes ( "scale" ) ;
var minWidth = parseInt ( this . popupView . element [ 0 ] . style . minWidth ) ;
var minHeight = parseInt ( this . popupView . element [ 0 ] . style . minHeight ) ;
cBounds . width = Math . max ( cBounds . width , minWidth * scale ) ;
cBounds . height = Math . max ( cBounds . height , minHeight * scale ) ;
if ( cBounds . left + cBounds . width - scrollContainer . scrollLeft > body . clientWidth * scale ) {
this . popupView . element [ 0 ] . style . top = parseInt ( pBounds . bottom ) - transformY + "px" ;
if ( ( cBounds . left * scale + cBounds . width * ( hasScale ? 1 : scale ) ) - transformX > body . clientWidth ) {
this . popupView . element [ 0 ] . style . top = parseInt ( pBounds . bottom ) + "px" ;
this . popupView . element [ 0 ] . style . left = parseInt ( this . popupView . element [ 0 ] . style . left ) * scale - transformX + "px" ;
} else if ( this . options . direction === "right" ) {
this . popupView . element [ 0 ] . style . top = parseInt ( pBounds . top ) - transformY + "px" ;
this . popupView . element [ 0 ] . style . left = parseInt ( pBounds . right ) - transformX + "px" ;
this . popupView . element [ 0 ] . style . top = parseInt ( pBounds . top ) + "px" ;
this . popupView . element [ 0 ] . style . left = parseInt ( pBounds . right ) + "px" ;
} else if ( parseInt ( cBounds . top ) >= parseInt ( pBounds . top ) && parseInt ( cBounds . left ) >= parseInt ( pBounds . left ) ) {
this . popupView . element [ 0 ] . style . top = parseInt ( pBounds . bottom ) - transformY + "px" ;
this . popupView . element [ 0 ] . style . left = parseInt ( pBounds . left ) - transformX + "px" ;
this . popupView . element [ 0 ] . style . top = parseInt ( pBounds . bottom ) + "px" ;
this . popupView . element [ 0 ] . style . left = parseInt ( pBounds . left ) + "px" ;
} else if ( parseInt ( cBounds . top ) >= parseInt ( pBounds . top ) && parseInt ( cBounds . left ) < parseInt ( pBounds . left ) ) {
this . popupView . element [ 0 ] . style . top = parseInt ( pBounds . bottom ) - transformY + "px" ;
this . popupView . element [ 0 ] . style . top = parseInt ( pBounds . bottom ) + "px" ;
this . popupView . element [ 0 ] . style . left = parseInt ( Math . min ( pBounds . left , body . clientWidth - cBounds . width ) ) - transformX + "px" ;
} else {
this . popupView . element [ 0 ] . style . top = parseInt ( pBounds . bottom ) - transformY + "px" ;
this . popupView . element [ 0 ] . style . left = parseInt ( cBounds . left ) * scale - transformX + "px" ;
this . popupView . element [ 0 ] . style . top = parseInt ( pBounds . bottom ) + "px" ;
this . popupView . element [ 0 ] . style . left = parseInt ( cBounds . left ) * scale + "px" ;
}
}
this . popupView . element [ 0 ] . style . transform = "scale(" + scale + ")" ;