*/
X_Node_CSS_VENDER_PREFIX = {},
-X_Node_CSS__CLIP_SEPARATOR = X_UA.IE < 8 ? ' ' : ',',
+X_Node_CSS__CLIP_SEPARATOR = X_UA[ 'IE' ] < 8 ? ' ' : ',',
X_Node_CSS__UNIT_RATIO = {},
X_Node_CSS__FONT_SIZE_RATIO = {},
function X_Node_CSS_parseColor( x ){
var rgb, r, g, b;
- if( X.Type.isNumber( x ) ){
+ if( X_Type_isNumber( x ) ){
return ( 0x0 <= x && x <= 0xFFFFFF ) ? x : undefined;
} else
- if( !X.Type.isString( x ) ) return;
+ if( !X_Type_isString( x ) ) return;
- if( X.Type.isNumber( rgb = X_Node_CSS_COLOR[ x.toUpperCase() ] ) && 0x0 <= rgb && rgb <= 0xFFFFFF ){
+ if( X_Type_isNumber( rgb = X_Node_CSS_COLOR[ x.toUpperCase() ] ) && 0x0 <= rgb && rgb <= 0xFFFFFF ){
return rgb;
} else
if( x.charAt( 0 ) === '#' ){
return isFinite( r + b + g ) ? ( r << 16 ) + ( g << 8 ) + b : undefined;
};
-function X_Node_CSS_objToCssText( that ){
+function X_Node_CSS_objToCssText( that, skipFilter ){
var obj = that._css,
plain = X_EMPTY_OBJECT,
css = [],
};
};
- filterFix && ( css[ ++n ] = 'filter:' + X_Node_CSS_objToIEFilterText( that, filterFix ) );
+ if( filterFix ){
+ v = X_Node_CSS_objToIEFilterText( that, filterFix );
+ if( v ) css[ ++n ] = 'filter:' + v;
+ skipFilter = skipFilter && v;
+ } else {
+ skipFilter = false;
+ };
if( 0 <= n ){
- return that._cssText = css.join( ';' );
+ // cssText には完全なものを控えるが、戻すのは filter を抜いたもの
+ that._cssText = css.join( ';' );
+ if( skipFilter ){
+ --css.length;
+ return css.join( ';' );
+ };
+ return that._cssText;
};
delete that._cssText;
return '';
var
X_Node_CSS_FILTER_FIX_PROPS =
- X_UA.ActiveX && X_UA.IE < 9 && !X_UA.MacIE ?
+ X_UA[ 'ActiveX' ] && X_UA[ 'IE' ] < 9 && !X_UA[ 'MacIE' ] ?
{
opacity : 2,
boxShadow : 3,
- textShadow : 4
+ textShadow : 4,
+ transform : 5
} :
- X_UA.ActiveX && X_UA.IE9 ? // == 9
+ X_UA[ 'ActiveX' ] && X_UA[ 'IE9' ] ? // == 9
{
textShadow : 4
} :
//glow(Color=yellow,Strength=10);
//どうやらCSSのbackgroundプロパティと同時に使えないようです。 s
break;
- case 5 : //'backgroundImage' :
+ case 6 : //'backgroundImage' :
//
+
+ case 5 : // transform scale, matrix
+
};
};
return filters.join( ' ' );
*/
function X_Node_CSS__splitValueAndUnit( v ){
var num, _num, u;
- if( X.Type.isNumber( v ) ) return [ v || 0, '' ];
+ if( X_Type_isNumber( v ) ) return [ v || 0, '' ];
num = parseFloat( v );
if( num !== num ) return [ 0, '' ];
_num = '' + num;
Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */ ){
var args = arguments,
css = this._css,
- p, name, v, plain, camelize;
- if( !this._tag ) return this;
+ p, name, v, plain, camelize, flags;
+ if( !this._tag || X_Dom_DTD_MOVE_TO_HEAD[ this._tag ] || this._tag === 'SCRIPT' ) return this;
// setter:object
- if( X.Type.isObject( nameOrObj ) ){
+ if( X_Type_isObject( nameOrObj ) ){
if( !css ) css = this._css = {};
plain = X_EMPTY_OBJECT;
camelize = X_Node_CSS_camelize;
+ flags = this._flags;
for( p in nameOrObj ){
if( plain[ p ] ) continue;
name = camelize( p );
v = nameOrObj[ p ];
if( css[ name ] === v ) continue;
- this._flags = X_Node_CSS_setStyle( css, this._flags, name, v );
+ flags = X_Node_CSS_setStyle( css, flags, name, v );
};
this._flags |= X_Node_State.DIRTY_CSS | X_Node_State.OLD_CSSTEXT;
this._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();
case 'opacity' :
// すでに visibility:hidden で invisible
if( flags & X_Node_State.STYLE_IS_INVISIBLE && css[ 'visibility' ] === 'hidden' ) return flags;
- newValue == 0 ? ( flags |= X_Node_State.STYLE_IS_INVISIBLE ) : ( flags &= ~X_Node_State.STYLE_IS_INVISIBLE );
+ newValue == 0 ? // 0 or "0"
+ ( flags |= X_Node_State.STYLE_IS_INVISIBLE ) : ( flags &= ~X_Node_State.STYLE_IS_INVISIBLE );
return flags;
case 'overflow' :
if( v === '' ){
delete this._css;
delete this._cssText;
- this._flags |= X_Node_State.DIRTY_CSS;
- this._flags &= ~X_Node_State.OLD_CSSTEXT; // ~X_Node_State.DIRTY_IE_FILTER
- this._flags &= X_Node_BITMASK_RESET_STYLE;
+ this._flags |= X_Node_State.DIRTY_CSS | X_Node_State.DIRTY_IE_FILTER;
+ this._flags &= ~X_Node_State.OLD_CSSTEXT;
this._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();
return this;
} else
- if( X.Type.isString( v ) ){
+ if( X_Type_isString( v ) ){
delete this._css;
obj = {};
- v = v.split( ';' ); // TODO content ";" などにも対応
+ v = v.split( ';' ); // TODO content ";" などにも対応 <- 不要 :before :after 疑似要素には触らない
for( i = 0, l = v.length; i < l; ++i ){
attr = v[ i ].split( ':' );
( name = attr[ 0 ] ) && ( obj[ name ] = attr[ 1 ] || true );
return that._fontSize = parseFloat( X_node_CSS_getComputedStyle( that._rawObject, null ).fontSize );
}) :
- 5.5 <= X_UA.IE ?
+ 5 <= X_UA[ 'IE' ] ?
(function( that ){
var font, vu, v, u, _v;
X_Node_updateTimerID && X_Node_startUpdate();
};
} else {
// 要素を生成して測定!
- ( that._rawObject || X_Node__ie4getRawNode( that ) ).insertAdjacentHTML( 'BeforeEnd', '<div id="ie4charsize" style="position:absolute;top:0;left:0;">X</div>' );
+ ( that._rawObject || X_Node__ie4getRawNode( that ) ).insertAdjacentHTML( 'BeforeEnd', '<div id="ie4charsize" style="position:absolute;top:0;left:0;visivility:hidden;line-height:1;height:1em;">X</div>' );
elm = document.all[ 'ie4charsize' ];
v = elm.offsetHeight;
elm.removeAttribute( 'id' ); // ?
X_Node_CSS_SPECIAL_FIX_PROP = {
- transitionDuration : X_UA.Android && !X_UA.Chrome && function( v ){ // bad Android
+ transitionDuration : X_UA[ 'Android' ] && !X_UA[ 'Chrome' ] && function( v ){ // bad Android
return parseFloat( v ) === 0 ? '0.001s' : v;
}
*/
(function(){
- var testStyle = X_UA.IE4 ? {} : ( /*document.documentElement ||*/ document.createElement( 'div' ) ).style,
+ var testStyle = X_UA[ 'IE4' ] ? {} : ( /*document.documentElement ||*/ document.createElement( 'div' ) ).style,
temp = testStyle.cssText,
vendors = 'webkit,Webkit,Moz,moz,Ms,ms,O,o,khtml,Khtml'.split( ',' ),
searches = (