* 仕様書 [REFS[ - [18] '''[CITE@en[CSS Positioned Layout Module Level 3]] ([TIME[2013-09-10 13:12:54 +09:00]] 版) ''' - [19] [CITE@en-US[Quirks Mode Standard]] ([TIME[2013-06-27 10:39:37 +09:00]] 版) ]REFS] * 実装 [1] [SAMP(CSS)[clip:rect(0%, 101%, 101%, 0%);]] [PP10] [2] [CODE(DOMi)@en[Layer]].[CODE(DOMa)@en[[[clip]]]] ,[CODE(DOMa)@en[[[bottom]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]]) ,[CODE(DOMa)@en[[[height]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]]) ,[CODE(DOMa)@en[[[left]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]]) ,[CODE(DOMa)@en[[[right]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]]) ,[CODE(DOMa)@en[[[top]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]]) ,[CODE(DOMa)@en[[[width]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]]) [3] [[WinIE 6]] [[構文解析]]: = 零文字以上の[[空白]]を読み飛ばす。 = 次の[[字句]]が [CODE(CSS)@en[[[IDENT]]]] [CODE(CSS)@en[[[rect]]]] でなければ、[[宣言]]全体を[[無視]]し、終わり。 == 他の[[特性]]同様、[[大文字]]や[[escape]]や[[注釈]]を途中で使えます。 = 零個以上の[[空白]]を読み飛ばす。 = 次の[[字句]]が [CODE(CSS)[(]] でなければ、[[宣言]]全体を[[無視]]し、 終わり。 == 例によって [CODE(CSS)[(]] は [CODE(CSS)[\(]] でもおk。 == 前後に[[注釈]]があってもおk。 = 零個以上の[[空白]]を読み飛ばす。 = 次の[[字句]]を [CODE(CSS)@en[<[[length]]>]]、 [CODE(CSS)@en[<[[percentage]]>]]、または [CODE(CSS)@en['[[auto]]']] として解釈を試みる。 == 例によって、 [[CSS 2.1]] の定義ではなく、 [[WinIE]] の解釈による。 == [[奇癖モード]]や [CODE(CSS)[[[0]]] の場合には]] [CODE(CSS)@en[<[[number]]>]] の単位は [CODE(CSS)[[[px]]]] であったかのように扱われる。 == 解釈可能であれば、4辺にその値を設定する。 == 解釈可能でなければ、[[宣言]]全体を[[無視]]し、終わり。 = 1個以上の[[空白]]を読み飛ばすことができれば: == 次の[[字句]]を先程同様に解釈を試みる。 === 解釈可能であれば、左辺・右辺にその値を設定する。 == 1個以上の[[空白]]を読み飛ばすことができれば: === 次の[[字句]]を先程同様に解釈を試みる。 ==== 解釈可能であれば、下辺にその値を設定する。 === 零個以上の[[空白]]を読み飛ばす。1個以上の[[空白]]を読み飛ばした場合: ==== 次の[[字句]]を先程同様に解釈を試みる。 ===== 解釈可能であれば、 ====== 左辺にその値を設定する。 ====== 零個以上の[[空白]]を読み飛ばす。 ===== 解釈可能でなければ、 ====== 次の[[字句]]が [CODE(CSS)[[[)]]]] なら ([CODE(CSS)[\)]] でもおk)、最後の段階へ。 ====== そうでなければ、[[宣言]]全体を[[無視]]し、終わり。 = [CODE(CSS)[[[)]]]] ([CODE(CSS)[\)]] でもk) がなければ、 [[宣言]]全体を[[無視]]し、終わり。 = 零個以上の[[空白]]を読み飛ばす。[[特性値]]の末尾でなければ、 [[宣言]]全体を[[無視]]する。終わり。 ([[名無しさん]]) [4] [[WinIE 6]] [[構文解析]]: = 零文字以上の[[空白]]を読み飛ばす。 = 次の[[字句]]が [CODE(CSS)@en[[[IDENT]]]] [CODE(CSS)@en[[[rect]]]] でなければ、[[宣言]]全体を[[無視]]し、終わり。 == 他の[[特性]]同様、[[大文字]]や[[escape]]や[[注釈]]を途中で使えます。 = 零個以上の[[空白]]を読み飛ばす。 = 次の[[字句]]が [CODE(CSS)[(]] でなければ、[[宣言]]全体を[[無視]]し、 終わり。 == 例によって [CODE(CSS)[(]] は [CODE(CSS)[\(]] でもおk。 == 前後に[[注釈]]があってもおk。 = 零個以上の[[空白]]を読み飛ばす。 = 次の[[字句]]を [CODE(CSS)@en[<[[length]]>]]、 [CODE(CSS)@en[<[[percentage]]>]]、または [CODE(CSS)@en['[[auto]]']] として解釈を試みる。 == 例によって、 [[CSS 2.1]] の定義ではなく、 [[WinIE]] の解釈による。 == [[奇癖モード]]や [CODE(CSS)[[[0]]] の場合には]] [CODE(CSS)@en[<[[number]]>]] の単位は [CODE(CSS)[[[px]]]] であったかのように扱われる。 == 解釈可能であれば、4辺にその値を設定する。 == 解釈可能でなければ、[[宣言]]全体を[[無視]]し、終わり。 = 1個以上の[[空白]]を読み飛ばすことができれば: == 次の[[字句]]を先程同様に解釈を試みる。 === 解釈可能であれば、左辺・右辺にその値を設定する。 == 1個以上の[[空白]]を読み飛ばすことができれば: === 次の[[字句]]を先程同様に解釈を試みる。 ==== 解釈可能であれば、下辺にその値を設定する。 === 零個以上の[[空白]]を読み飛ばす。1個以上の[[空白]]を読み飛ばした場合: ==== 次の[[字句]]を先程同様に解釈を試みる。 ===== 解釈可能であれば、 ====== 左辺にその値を設定する。 ====== 零個以上の[[空白]]を読み飛ばす。 ===== 解釈可能でなければ、 ====== 次の[[字句]]が [CODE(CSS)[[[)]]]] なら ([CODE(CSS)[\)]] でもおk)、最後の段階へ。 ====== そうでなければ、[[宣言]]全体を[[無視]]し、終わり。 = [CODE(CSS)[[[)]]]] ([CODE(CSS)[\)]] でもk) がなければ、 [[宣言]]全体を[[無視]]し、終わり。 = 零個以上の[[空白]]を読み飛ばす。[[特性値]]の末尾でなければ、 [[宣言]]全体を[[無視]]する。終わり。 ([[名無しさん]]) [5] テスト用 ([[名無しさん]]) [6] [CODE(CSS)@en[[[rect]]()]] の[[引数]]に [CODE(CSS)@en[[[auto]]]] が指定されたときの[[算出値]]は [[CSS 2.1]] の文面からは不明瞭です。 ([[名無しさん]]) [7] [CODE(CSS)@en[<[[shape]]>]] の説明には算出の方法が載っていますが、 幅や高さの[[算出値]]がどうとかいうよくわからない定義になっています。 [[CSS 2.1]] でいうところの[[特性]]の[[算出値]]は [CODE(CSS)@en[[[auto]]]] のような計算できない値だったりするので、 [[使用値]]のつもりで書いているのでしょうか。 ([[名無しさん]]) [8] [[Firefox]] 2 [[構文解析]]: - [[CSS 2.1]] 通り - [CODE(CSS)@en[[[-moz-initial]]]] が使える - [[引数]]の区切りには零個以上の[[空白]]、 高々1個の [CODE(CSS)@en[[[,]]]]、 零個以上の[[空白]]の列が使える ([[名無しさん]]) [9] [[Opera]] 9 [[構文解析]]: >>8 と同じ ([CODE(CSS)@en[[[-moz-initial]]]] 以外) ([[名無しさん]]) [10] [[WinIE 6]] [[直列化]]: 他の[[特性]]と同じ感じで。 [[引数]]の[[区切り]]は1 [CODE(charname)@en[[[SPACE]]]]。 ([[名無しさん]]) [11] [[Firefox]] 2 [[直列化]]: 他の[[特性]]と同じ感じで。 [CODE(CSS)@en[[[auto]]]] は [CODE(CSS)@en[[[rect]]([[auto]], [[auto]], [[auto]], [[auto]])]] に。 ([[名無しさん]]) [12] [[Opera]] 9 [[直列化]]: 他の[[特性]]と同じ感じで。 ([[名無しさん]]) [13] [[Opera]] 9 [[直列化]]: 他の[[特性]]と同じ感じで。 ([[名無しさん]]) [14] [[Opera]] 9 [[直列化]]: 他の[[特性]]と同じ感じで。 ([[名無しさん]]) [15] [[WinIE 6]] [CODE(DOMa)@en[[[currentStyle]]]]: [CODE(DOMa)@en[[[clip]]]] は存在しない。 ([[名無しさん]]) [16] [[Firefox]] 2 [CODE(DOMm)@en[[[getCurrentStyle]]]]: 元々 [CODE(CSS)@en[[[auto]]]] や [CODE(CSS)@en[[[rect]]([[auto]], [[auto]], [[auto]], [[auto]])]] だったものは [CODE(CSS)@en[[[auto]]]] に。 [CODE(CSS)@en[[[rect]]()]] の[[引数]]は、それぞれの[[算出値]] ([CODE(CSS)@en[[[px]]]]) に (ここでの [CODE(CSS)@en[[[auto]]]] の[[算出値]]は [CODE(CSS)@en[[[auto]]]] のまま)。 ([[名無しさん]]) [17] [[Opera]] 9 [CODE(DOMm)@en[[[getComputedStyle]]]]、 [CODE(DOMa)@en[[[currentStyle]]]]: [CODE(CSS)@en[[[auto]]]] は [CODE(CSS)@en[[[rect]]([[auto]], [[auto]], [[auto]], [[auto]])]] と見なした上で、それぞれの[[引数]]について - [CODE(DOMm)@en[[[getComputedStyle]]]] では[[算出値]] ([CODE(CSS)@en[[[px]]]])、 [CODE(DOMa)@en[[[currentStyle]]]] では[[指定値]] - ただし、 [CODE(CSS)@en[[[auto]]]] の場合は [CODE(DOMm)@en[[[getComputedStyle]]]] では [CODE(CSS)@en[0[[px]]]]、 [CODE(DOMa)@en[[[currentStyle]]]] では [CODE(CSS)[[[0]]]]。 [20] [CODE(CSS)@en[[[rect()]]]] の中の区切りは [CODE(CSS)[[[,]]]] のほか [[]] でも良いようですが、 [[CSS3]] でも [[Firefox]] でも [[Chrome]] でも混在は認められていません。 [TIME[2013-09-11T14:25:52.100Z]] [21] [[Chrome]] でも [[Firefox]] でも、区切りがまったくなしでもいいようです。 [TIME[2013-09-11T14:26:09.000Z]] [22] [[直列化]]のときに [[Firefox]] は [CODE(CSS)@en[[[,]]]] を補いますが [[Chrome]] は元のままです。 [TIME[2013-09-11T14:31:06.0Z]]