1 |
* 仕様書
|
2 |
|
3 |
[REFS[
|
4 |
- [18] '''[CITE@en[CSS Positioned Layout Module Level 3]] ([TIME[2013-09-10 13:12:54 +09:00]] 版) <http://dev.w3.org/csswg/css-position/#clip-property>'''
|
5 |
- [19] [CITE@en-US[Quirks Mode Standard]] ([TIME[2013-06-27 10:39:37 +09:00]] 版) <http://quirks.spec.whatwg.org/#the-unitless-length-quirk>
|
6 |
]REFS]
|
7 |
|
8 |
* 実装
|
9 |
|
10 |
[1]
|
11 |
[SAMP(CSS)[clip:rect(0%, 101%, 101%, 0%);]] [PP10]
|
12 |
|
13 |
[2] [CODE(DOMi)@en[Layer]].[CODE(DOMa)@en[[[clip]]]]
|
14 |
,[CODE(DOMa)@en[[[bottom]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]])
|
15 |
,[CODE(DOMa)@en[[[height]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]])
|
16 |
,[CODE(DOMa)@en[[[left]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]])
|
17 |
,[CODE(DOMa)@en[[[right]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]])
|
18 |
,[CODE(DOMa)@en[[[top]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]])
|
19 |
,[CODE(DOMa)@en[[[width]]]] ,[CODE(DOMi)@en[[[Layer]]]] ([[JavaScript 1.2]])
|
20 |
|
21 |
[3]
|
22 |
[[WinIE 6]] [[構文解析]]:
|
23 |
= 零文字以上の[[空白]]を読み飛ばす。
|
24 |
= 次の[[字句]]が [CODE(CSS)@en[[[IDENT]]]] [CODE(CSS)@en[[[rect]]]]
|
25 |
でなければ、[[宣言]]全体を[[無視]]し、終わり。
|
26 |
== 他の[[特性]]同様、[[大文字]]や[[escape]]や[[注釈]]を途中で使えます。
|
27 |
= 零個以上の[[空白]]を読み飛ばす。
|
28 |
= 次の[[字句]]が [CODE(CSS)[(]] でなければ、[[宣言]]全体を[[無視]]し、
|
29 |
終わり。
|
30 |
== 例によって [CODE(CSS)[(]] は [CODE(CSS)[\(]] でもおk。
|
31 |
== 前後に[[注釈]]があってもおk。
|
32 |
= 零個以上の[[空白]]を読み飛ばす。
|
33 |
= 次の[[字句]]を [CODE(CSS)@en[<[[length]]>]]、
|
34 |
[CODE(CSS)@en[<[[percentage]]>]]、または
|
35 |
[CODE(CSS)@en['[[auto]]']] として解釈を試みる。
|
36 |
== 例によって、 [[CSS 2.1]] の定義ではなく、 [[WinIE]]
|
37 |
の解釈による。
|
38 |
== [[奇癖モード]]や [CODE(CSS)[[[0]]] の場合には]]
|
39 |
[CODE(CSS)@en[<[[number]]>]] の単位は [CODE(CSS)[[[px]]]]
|
40 |
であったかのように扱われる。
|
41 |
== 解釈可能であれば、4辺にその値を設定する。
|
42 |
== 解釈可能でなければ、[[宣言]]全体を[[無視]]し、終わり。
|
43 |
= 1個以上の[[空白]]を読み飛ばすことができれば:
|
44 |
== 次の[[字句]]を先程同様に解釈を試みる。
|
45 |
=== 解釈可能であれば、左辺・右辺にその値を設定する。
|
46 |
== 1個以上の[[空白]]を読み飛ばすことができれば:
|
47 |
=== 次の[[字句]]を先程同様に解釈を試みる。
|
48 |
==== 解釈可能であれば、下辺にその値を設定する。
|
49 |
=== 零個以上の[[空白]]を読み飛ばす。1個以上の[[空白]]を読み飛ばした場合:
|
50 |
==== 次の[[字句]]を先程同様に解釈を試みる。
|
51 |
===== 解釈可能であれば、
|
52 |
====== 左辺にその値を設定する。
|
53 |
====== 零個以上の[[空白]]を読み飛ばす。
|
54 |
===== 解釈可能でなければ、
|
55 |
====== 次の[[字句]]が [CODE(CSS)[[[)]]]] なら
|
56 |
([CODE(CSS)[\)]] でもおk)、最後の段階へ。
|
57 |
====== そうでなければ、[[宣言]]全体を[[無視]]し、終わり。
|
58 |
= [CODE(CSS)[[[)]]]] ([CODE(CSS)[\)]] でもk) がなければ、
|
59 |
[[宣言]]全体を[[無視]]し、終わり。
|
60 |
= 零個以上の[[空白]]を読み飛ばす。[[特性値]]の末尾でなければ、
|
61 |
[[宣言]]全体を[[無視]]する。終わり。
|
62 |
|
63 |
([[名無しさん]])
|
64 |
|
65 |
[4]
|
66 |
[[WinIE 6]] [[構文解析]]:
|
67 |
= 零文字以上の[[空白]]を読み飛ばす。
|
68 |
= 次の[[字句]]が [CODE(CSS)@en[[[IDENT]]]] [CODE(CSS)@en[[[rect]]]]
|
69 |
でなければ、[[宣言]]全体を[[無視]]し、終わり。
|
70 |
== 他の[[特性]]同様、[[大文字]]や[[escape]]や[[注釈]]を途中で使えます。
|
71 |
= 零個以上の[[空白]]を読み飛ばす。
|
72 |
= 次の[[字句]]が [CODE(CSS)[(]] でなければ、[[宣言]]全体を[[無視]]し、
|
73 |
終わり。
|
74 |
== 例によって [CODE(CSS)[(]] は [CODE(CSS)[\(]] でもおk。
|
75 |
== 前後に[[注釈]]があってもおk。
|
76 |
= 零個以上の[[空白]]を読み飛ばす。
|
77 |
= 次の[[字句]]を [CODE(CSS)@en[<[[length]]>]]、
|
78 |
[CODE(CSS)@en[<[[percentage]]>]]、または
|
79 |
[CODE(CSS)@en['[[auto]]']] として解釈を試みる。
|
80 |
== 例によって、 [[CSS 2.1]] の定義ではなく、 [[WinIE]]
|
81 |
の解釈による。
|
82 |
== [[奇癖モード]]や [CODE(CSS)[[[0]]] の場合には]]
|
83 |
[CODE(CSS)@en[<[[number]]>]] の単位は [CODE(CSS)[[[px]]]]
|
84 |
であったかのように扱われる。
|
85 |
== 解釈可能であれば、4辺にその値を設定する。
|
86 |
== 解釈可能でなければ、[[宣言]]全体を[[無視]]し、終わり。
|
87 |
= 1個以上の[[空白]]を読み飛ばすことができれば:
|
88 |
== 次の[[字句]]を先程同様に解釈を試みる。
|
89 |
=== 解釈可能であれば、左辺・右辺にその値を設定する。
|
90 |
== 1個以上の[[空白]]を読み飛ばすことができれば:
|
91 |
=== 次の[[字句]]を先程同様に解釈を試みる。
|
92 |
==== 解釈可能であれば、下辺にその値を設定する。
|
93 |
=== 零個以上の[[空白]]を読み飛ばす。1個以上の[[空白]]を読み飛ばした場合:
|
94 |
==== 次の[[字句]]を先程同様に解釈を試みる。
|
95 |
===== 解釈可能であれば、
|
96 |
====== 左辺にその値を設定する。
|
97 |
====== 零個以上の[[空白]]を読み飛ばす。
|
98 |
===== 解釈可能でなければ、
|
99 |
====== 次の[[字句]]が [CODE(CSS)[[[)]]]] なら
|
100 |
([CODE(CSS)[\)]] でもおk)、最後の段階へ。
|
101 |
====== そうでなければ、[[宣言]]全体を[[無視]]し、終わり。
|
102 |
= [CODE(CSS)[[[)]]]] ([CODE(CSS)[\)]] でもk) がなければ、
|
103 |
[[宣言]]全体を[[無視]]し、終わり。
|
104 |
= 零個以上の[[空白]]を読み飛ばす。[[特性値]]の末尾でなければ、
|
105 |
[[宣言]]全体を[[無視]]する。終わり。
|
106 |
|
107 |
([[名無しさん]])
|
108 |
|
109 |
[5]
|
110 |
テスト用
|
111 |
<http://suika.fam.cx/gate/2007/cssom/viewer?c=p%20%7B%0D%0A%20%20clip%3A%20rect(1px%2C%20auto%2C%20-3em%206.77pc)%3B%0D%0A%7D;h=%3Cbutton%20type%3Dbutton%20onclick%3D%22%0D%0A%20%20var%20el%20%3D%20document.getElementsByTagName%20('p')%5B0%5D%3B%0D%0A%20%20d%20%3D%20getComputedStyle%20(el%2C%20null)%3B%0D%0A%20%20w%20(d.clip)%3B%0D%0A%22%3E%3Ccode%3EgetComputedStyle%3C%2Fcode%3E%3C%2Fbutton%3E%20%3Cbutton%20type%3Dbutton%20onclick%3D%22%0D%0A%20%20var%20el%20%3D%20document.getElementsByTagName%20('p')%5B0%5D%3B%0D%0A%20%20d%20%3D%20el.currentStyle%3B%0D%0A%20%20w%20(d.clip)%3B%0D%0A%22%3E%3Ccode%3EcurrentStyle%3C%2Fcode%3E%3C%2Fbutton%3E%0D%0A%3Cp%3Exxxxxxxxxxxxxxx;p=n;x=style-element;i=html-div>
|
112 |
([[名無しさん]])
|
113 |
|
114 |
[6]
|
115 |
[CODE(CSS)@en[[[rect]]()]] の[[引数]]に [CODE(CSS)@en[[[auto]]]] が指定されたときの[[算出値]]は
|
116 |
[[CSS 2.1]] の文面からは不明瞭です。
|
117 |
([[名無しさん]])
|
118 |
|
119 |
[7]
|
120 |
[CODE(CSS)@en[<[[shape]]>]] の説明には算出の方法が載っていますが、
|
121 |
幅や高さの[[算出値]]がどうとかいうよくわからない定義になっています。
|
122 |
[[CSS 2.1]] でいうところの[[特性]]の[[算出値]]は
|
123 |
[CODE(CSS)@en[[[auto]]]] のような計算できない値だったりするので、
|
124 |
[[使用値]]のつもりで書いているのでしょうか。
|
125 |
([[名無しさん]])
|
126 |
|
127 |
[8]
|
128 |
[[Firefox]] 2 [[構文解析]]:
|
129 |
- [[CSS 2.1]] 通り
|
130 |
- [CODE(CSS)@en[[[-moz-initial]]]] が使える
|
131 |
- [[引数]]の区切りには零個以上の[[空白]]、
|
132 |
高々1個の [CODE(CSS)@en[[[,]]]]、
|
133 |
零個以上の[[空白]]の列が使える
|
134 |
|
135 |
([[名無しさん]])
|
136 |
|
137 |
[9]
|
138 |
[[Opera]] 9 [[構文解析]]:
|
139 |
>>8 と同じ ([CODE(CSS)@en[[[-moz-initial]]]] 以外)
|
140 |
([[名無しさん]])
|
141 |
|
142 |
[10]
|
143 |
[[WinIE 6]] [[直列化]]:
|
144 |
他の[[特性]]と同じ感じで。
|
145 |
[[引数]]の[[区切り]]は1 [CODE(charname)@en[[[SPACE]]]]。
|
146 |
([[名無しさん]])
|
147 |
|
148 |
[11]
|
149 |
[[Firefox]] 2 [[直列化]]: 他の[[特性]]と同じ感じで。
|
150 |
[CODE(CSS)@en[[[auto]]]] は
|
151 |
[CODE(CSS)@en[[[rect]]([[auto]], [[auto]], [[auto]], [[auto]])]]
|
152 |
に。
|
153 |
([[名無しさん]])
|
154 |
|
155 |
[12]
|
156 |
[[Opera]] 9 [[直列化]]: 他の[[特性]]と同じ感じで。
|
157 |
([[名無しさん]])
|
158 |
|
159 |
[13]
|
160 |
[[Opera]] 9 [[直列化]]: 他の[[特性]]と同じ感じで。
|
161 |
([[名無しさん]])
|
162 |
|
163 |
[14]
|
164 |
[[Opera]] 9 [[直列化]]: 他の[[特性]]と同じ感じで。
|
165 |
([[名無しさん]])
|
166 |
|
167 |
[15]
|
168 |
[[WinIE 6]] [CODE(DOMa)@en[[[currentStyle]]]]:
|
169 |
[CODE(DOMa)@en[[[clip]]]] は存在しない。
|
170 |
([[名無しさん]])
|
171 |
|
172 |
[16]
|
173 |
[[Firefox]] 2 [CODE(DOMm)@en[[[getCurrentStyle]]]]:
|
174 |
元々 [CODE(CSS)@en[[[auto]]]] や
|
175 |
[CODE(CSS)@en[[[rect]]([[auto]], [[auto]], [[auto]], [[auto]])]]
|
176 |
だったものは [CODE(CSS)@en[[[auto]]]] に。
|
177 |
[CODE(CSS)@en[[[rect]]()]] の[[引数]]は、それぞれの[[算出値]]
|
178 |
([CODE(CSS)@en[[[px]]]]) に
|
179 |
(ここでの [CODE(CSS)@en[[[auto]]]] の[[算出値]]は
|
180 |
[CODE(CSS)@en[[[auto]]]] のまま)。
|
181 |
|
182 |
([[名無しさん]])
|
183 |
|
184 |
|
185 |
[17]
|
186 |
[[Opera]] 9 [CODE(DOMm)@en[[[getComputedStyle]]]]、
|
187 |
[CODE(DOMa)@en[[[currentStyle]]]]:
|
188 |
[CODE(CSS)@en[[[auto]]]] は
|
189 |
[CODE(CSS)@en[[[rect]]([[auto]], [[auto]], [[auto]], [[auto]])]]
|
190 |
と見なした上で、それぞれの[[引数]]について
|
191 |
- [CODE(DOMm)@en[[[getComputedStyle]]]] では[[算出値]]
|
192 |
([CODE(CSS)@en[[[px]]]])、
|
193 |
[CODE(DOMa)@en[[[currentStyle]]]] では[[指定値]]
|
194 |
- ただし、 [CODE(CSS)@en[[[auto]]]] の場合は
|
195 |
[CODE(DOMm)@en[[[getComputedStyle]]]] では
|
196 |
[CODE(CSS)@en[0[[px]]]]、
|
197 |
[CODE(DOMa)@en[[[currentStyle]]]] では
|
198 |
[CODE(CSS)[[[0]]]]。
|
199 |
|
200 |
[20] [CODE(CSS)@en[[[rect()]]]] の中の区切りは [CODE(CSS)[[[,]]]] のほか [[<whitespace>]]
|
201 |
でも良いようですが、 [[CSS3]] でも [[Firefox]] でも [[Chrome]] でも混在は認められていません。 [TIME[2013-09-11T14:25:52.100Z]]
|
202 |
|
203 |
[21] [[Chrome]] でも [[Firefox]] でも、区切りがまったくなしでもいいようです。 [TIME[2013-09-11T14:26:09.000Z]]
|
204 |
|
205 |
[22] [[直列化]]のときに [[Firefox]] は [CODE(CSS)@en[[[,]]]] を補いますが [[Chrome]]
|
206 |
は元のままです。 [TIME[2013-09-11T14:31:06.0Z]] |