mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-10-17 13:39:25 +00:00
LibWeb: Correctly resolve position-area
computed value
This commit is contained in:
parent
eb571a1a46
commit
fda5ea8277
Notes:
github-actions[bot]
2025-09-29 10:49:20 +00:00
Author: https://github.com/tcl3
Commit: fda5ea8277
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6340
Reviewed-by: https://github.com/gmta ✅
4 changed files with 937 additions and 0 deletions
|
@ -3225,6 +3225,8 @@ NonnullRefPtr<StyleValue const> StyleComputer::compute_value_of_property(Propert
|
||||||
case PropertyID::StopOpacity:
|
case PropertyID::StopOpacity:
|
||||||
case PropertyID::StrokeOpacity:
|
case PropertyID::StrokeOpacity:
|
||||||
return compute_opacity(specified_value, computation_context);
|
return compute_opacity(specified_value, computation_context);
|
||||||
|
case PropertyID::PositionArea:
|
||||||
|
return compute_position_area(specified_value);
|
||||||
case PropertyID::TextUnderlineOffset:
|
case PropertyID::TextUnderlineOffset:
|
||||||
return compute_text_underline_offset(specified_value, computation_context);
|
return compute_text_underline_offset(specified_value, computation_context);
|
||||||
default:
|
default:
|
||||||
|
@ -3567,6 +3569,105 @@ NonnullRefPtr<StyleValue const> StyleComputer::compute_opacity(NonnullRefPtr<Sty
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://drafts.csswg.org/css-anchor-position/#position-area-computed
|
||||||
|
NonnullRefPtr<StyleValue const> StyleComputer::compute_position_area(NonnullRefPtr<StyleValue const> const& specified_value)
|
||||||
|
{
|
||||||
|
// The computed value of a <position-area> value is the two keywords indicating the selected tracks in each axis,
|
||||||
|
// with the long (block-start) and short (start) logical keywords treated as equivalent. It serializes in the order
|
||||||
|
// given in the grammar (above), with the logical keywords serialized in their short forms (e.g. start start
|
||||||
|
// instead of block-start inline-start).
|
||||||
|
if (specified_value->is_keyword())
|
||||||
|
return specified_value;
|
||||||
|
|
||||||
|
auto to_short_keyword = [](NonnullRefPtr<KeywordStyleValue const> const& keyword_value) -> NonnullRefPtr<KeywordStyleValue const> {
|
||||||
|
switch (keyword_value->keyword()) {
|
||||||
|
case Keyword::BlockStart:
|
||||||
|
case Keyword::InlineStart:
|
||||||
|
return KeywordStyleValue::create(Keyword::Start);
|
||||||
|
case Keyword::BlockEnd:
|
||||||
|
case Keyword::InlineEnd:
|
||||||
|
return KeywordStyleValue::create(Keyword::End);
|
||||||
|
case Keyword::SelfBlockStart:
|
||||||
|
case Keyword::SelfInlineStart:
|
||||||
|
return KeywordStyleValue::create(Keyword::SelfStart);
|
||||||
|
case Keyword::SelfBlockEnd:
|
||||||
|
case Keyword::SelfInlineEnd:
|
||||||
|
return KeywordStyleValue::create(Keyword::SelfEnd);
|
||||||
|
case Keyword::SpanBlockStart:
|
||||||
|
case Keyword::SpanInlineStart:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanStart);
|
||||||
|
case Keyword::SpanBlockEnd:
|
||||||
|
case Keyword::SpanInlineEnd:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanEnd);
|
||||||
|
case Keyword::SpanSelfBlockStart:
|
||||||
|
case Keyword::SpanSelfInlineStart:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanSelfStart);
|
||||||
|
case Keyword::SpanSelfBlockEnd:
|
||||||
|
case Keyword::SpanSelfInlineEnd:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanSelfEnd);
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return keyword_value;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto const& value_list = specified_value->as_value_list();
|
||||||
|
VERIFY(value_list.size() == 2);
|
||||||
|
|
||||||
|
auto const& block_value = value_list.values().at(0);
|
||||||
|
auto const& inline_value = value_list.values().at(1);
|
||||||
|
if (block_value->as_keyword().keyword() == Keyword::SpanAll) {
|
||||||
|
switch (inline_value->as_keyword().keyword()) {
|
||||||
|
case Keyword::Start:
|
||||||
|
return KeywordStyleValue::create(Keyword::InlineStart);
|
||||||
|
case Keyword::End:
|
||||||
|
return KeywordStyleValue::create(Keyword::InlineEnd);
|
||||||
|
case Keyword::SelfStart:
|
||||||
|
return KeywordStyleValue::create(Keyword::SelfInlineStart);
|
||||||
|
case Keyword::SelfEnd:
|
||||||
|
return KeywordStyleValue::create(Keyword::SelfInlineEnd);
|
||||||
|
case Keyword::SpanStart:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanInlineStart);
|
||||||
|
case Keyword::SpanEnd:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanInlineEnd);
|
||||||
|
case Keyword::SpanSelfStart:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanSelfInlineStart);
|
||||||
|
case Keyword::SpanSelfEnd:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanSelfInlineEnd);
|
||||||
|
default:
|
||||||
|
return specified_value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (inline_value->as_keyword().keyword() == Keyword::SpanAll) {
|
||||||
|
switch (block_value->as_keyword().keyword()) {
|
||||||
|
case Keyword::Start:
|
||||||
|
return KeywordStyleValue::create(Keyword::BlockStart);
|
||||||
|
case Keyword::End:
|
||||||
|
return KeywordStyleValue::create(Keyword::BlockEnd);
|
||||||
|
case Keyword::SelfStart:
|
||||||
|
return KeywordStyleValue::create(Keyword::SelfBlockStart);
|
||||||
|
case Keyword::SelfEnd:
|
||||||
|
return KeywordStyleValue::create(Keyword::SelfBlockEnd);
|
||||||
|
case Keyword::SpanStart:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanBlockStart);
|
||||||
|
case Keyword::SpanEnd:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanBlockEnd);
|
||||||
|
case Keyword::SpanSelfStart:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanSelfBlockStart);
|
||||||
|
case Keyword::SpanSelfEnd:
|
||||||
|
return KeywordStyleValue::create(Keyword::SpanSelfBlockEnd);
|
||||||
|
default:
|
||||||
|
return specified_value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
auto short_block_value = to_short_keyword(block_value->as_keyword());
|
||||||
|
auto short_inline_value = to_short_keyword(inline_value->as_keyword());
|
||||||
|
if (*block_value != short_block_value || *inline_value != short_inline_value)
|
||||||
|
return StyleValueList::create({ short_block_value, short_inline_value }, StyleValueList::Separator::Space);
|
||||||
|
|
||||||
|
return specified_value;
|
||||||
|
}
|
||||||
|
|
||||||
NonnullRefPtr<StyleValue const> StyleComputer::compute_text_underline_offset(NonnullRefPtr<StyleValue const> const& specified_value, PropertyValueComputationContext const& computation_context)
|
NonnullRefPtr<StyleValue const> StyleComputer::compute_text_underline_offset(NonnullRefPtr<StyleValue const> const& specified_value, PropertyValueComputationContext const& computation_context)
|
||||||
{
|
{
|
||||||
// https://drafts.csswg.org/css-text-decor-4/#underline-offset
|
// https://drafts.csswg.org/css-text-decor-4/#underline-offset
|
||||||
|
|
|
@ -212,6 +212,7 @@ public:
|
||||||
static NonnullRefPtr<StyleValue const> compute_font_variation_settings(NonnullRefPtr<StyleValue const> const& specified_value);
|
static NonnullRefPtr<StyleValue const> compute_font_variation_settings(NonnullRefPtr<StyleValue const> const& specified_value);
|
||||||
static NonnullRefPtr<StyleValue const> compute_line_height(NonnullRefPtr<StyleValue const> const& specified_value, Length::ResolutionContext const&);
|
static NonnullRefPtr<StyleValue const> compute_line_height(NonnullRefPtr<StyleValue const> const& specified_value, Length::ResolutionContext const&);
|
||||||
static NonnullRefPtr<StyleValue const> compute_opacity(NonnullRefPtr<StyleValue const> const& specified_value, PropertyValueComputationContext const&);
|
static NonnullRefPtr<StyleValue const> compute_opacity(NonnullRefPtr<StyleValue const> const& specified_value, PropertyValueComputationContext const&);
|
||||||
|
static NonnullRefPtr<StyleValue const> compute_position_area(NonnullRefPtr<StyleValue const> const& specified_value);
|
||||||
static NonnullRefPtr<StyleValue const> compute_text_underline_offset(NonnullRefPtr<StyleValue const> const& specified_value, PropertyValueComputationContext const&);
|
static NonnullRefPtr<StyleValue const> compute_text_underline_offset(NonnullRefPtr<StyleValue const> const& specified_value, PropertyValueComputationContext const&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -0,0 +1,638 @@
|
||||||
|
Harness status: OK
|
||||||
|
|
||||||
|
Found 633 tests
|
||||||
|
|
||||||
|
633 Pass
|
||||||
|
Pass Property position-area value 'none'
|
||||||
|
Pass Property position-area value 'span-all'
|
||||||
|
Pass Property position-area value 'center'
|
||||||
|
Pass Property position-area value 'left'
|
||||||
|
Pass Property position-area value 'right'
|
||||||
|
Pass Property position-area value 'span-left'
|
||||||
|
Pass Property position-area value 'span-right'
|
||||||
|
Pass Property position-area value 'x-start'
|
||||||
|
Pass Property position-area value 'x-end'
|
||||||
|
Pass Property position-area value 'span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-end'
|
||||||
|
Pass Property position-area value 'x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-end'
|
||||||
|
Pass Property position-area value 'top'
|
||||||
|
Pass Property position-area value 'bottom'
|
||||||
|
Pass Property position-area value 'span-top'
|
||||||
|
Pass Property position-area value 'span-bottom'
|
||||||
|
Pass Property position-area value 'y-start'
|
||||||
|
Pass Property position-area value 'y-end'
|
||||||
|
Pass Property position-area value 'span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-end'
|
||||||
|
Pass Property position-area value 'y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-end'
|
||||||
|
Pass Property position-area value 'inline-start'
|
||||||
|
Pass Property position-area value 'inline-end'
|
||||||
|
Pass Property position-area value 'span-inline-start'
|
||||||
|
Pass Property position-area value 'span-inline-end'
|
||||||
|
Pass Property position-area value 'block-start'
|
||||||
|
Pass Property position-area value 'block-end'
|
||||||
|
Pass Property position-area value 'span-block-start'
|
||||||
|
Pass Property position-area value 'span-block-end'
|
||||||
|
Pass Property position-area value 'self-inline-start'
|
||||||
|
Pass Property position-area value 'self-inline-end'
|
||||||
|
Pass Property position-area value 'span-self-inline-start'
|
||||||
|
Pass Property position-area value 'span-self-inline-end'
|
||||||
|
Pass Property position-area value 'self-block-start'
|
||||||
|
Pass Property position-area value 'self-block-end'
|
||||||
|
Pass Property position-area value 'span-self-block-start'
|
||||||
|
Pass Property position-area value 'span-self-block-end'
|
||||||
|
Pass Property position-area value 'start'
|
||||||
|
Pass Property position-area value 'end'
|
||||||
|
Pass Property position-area value 'span-start'
|
||||||
|
Pass Property position-area value 'span-end'
|
||||||
|
Pass Property position-area value 'self-start'
|
||||||
|
Pass Property position-area value 'self-end'
|
||||||
|
Pass Property position-area value 'span-self-start'
|
||||||
|
Pass Property position-area value 'span-self-end'
|
||||||
|
Pass Property position-area value 'left top'
|
||||||
|
Pass Property position-area value 'top left'
|
||||||
|
Pass Property position-area value 'left bottom'
|
||||||
|
Pass Property position-area value 'bottom left'
|
||||||
|
Pass Property position-area value 'left span-top'
|
||||||
|
Pass Property position-area value 'span-top left'
|
||||||
|
Pass Property position-area value 'left span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom left'
|
||||||
|
Pass Property position-area value 'left y-start'
|
||||||
|
Pass Property position-area value 'y-start left'
|
||||||
|
Pass Property position-area value 'left y-end'
|
||||||
|
Pass Property position-area value 'y-end left'
|
||||||
|
Pass Property position-area value 'left span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start left'
|
||||||
|
Pass Property position-area value 'left span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end left'
|
||||||
|
Pass Property position-area value 'left y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start left'
|
||||||
|
Pass Property position-area value 'left y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end left'
|
||||||
|
Pass Property position-area value 'left span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start left'
|
||||||
|
Pass Property position-area value 'left span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end left'
|
||||||
|
Pass Property position-area value 'right top'
|
||||||
|
Pass Property position-area value 'top right'
|
||||||
|
Pass Property position-area value 'right bottom'
|
||||||
|
Pass Property position-area value 'bottom right'
|
||||||
|
Pass Property position-area value 'right span-top'
|
||||||
|
Pass Property position-area value 'span-top right'
|
||||||
|
Pass Property position-area value 'right span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom right'
|
||||||
|
Pass Property position-area value 'right y-start'
|
||||||
|
Pass Property position-area value 'y-start right'
|
||||||
|
Pass Property position-area value 'right y-end'
|
||||||
|
Pass Property position-area value 'y-end right'
|
||||||
|
Pass Property position-area value 'right span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start right'
|
||||||
|
Pass Property position-area value 'right span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end right'
|
||||||
|
Pass Property position-area value 'right y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start right'
|
||||||
|
Pass Property position-area value 'right y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end right'
|
||||||
|
Pass Property position-area value 'right span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start right'
|
||||||
|
Pass Property position-area value 'right span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end right'
|
||||||
|
Pass Property position-area value 'span-left top'
|
||||||
|
Pass Property position-area value 'top span-left'
|
||||||
|
Pass Property position-area value 'span-left bottom'
|
||||||
|
Pass Property position-area value 'bottom span-left'
|
||||||
|
Pass Property position-area value 'span-left span-top'
|
||||||
|
Pass Property position-area value 'span-top span-left'
|
||||||
|
Pass Property position-area value 'span-left span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom span-left'
|
||||||
|
Pass Property position-area value 'span-left y-start'
|
||||||
|
Pass Property position-area value 'y-start span-left'
|
||||||
|
Pass Property position-area value 'span-left y-end'
|
||||||
|
Pass Property position-area value 'y-end span-left'
|
||||||
|
Pass Property position-area value 'span-left span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start span-left'
|
||||||
|
Pass Property position-area value 'span-left span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end span-left'
|
||||||
|
Pass Property position-area value 'span-left y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start span-left'
|
||||||
|
Pass Property position-area value 'span-left y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end span-left'
|
||||||
|
Pass Property position-area value 'span-left span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start span-left'
|
||||||
|
Pass Property position-area value 'span-left span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end span-left'
|
||||||
|
Pass Property position-area value 'span-right top'
|
||||||
|
Pass Property position-area value 'top span-right'
|
||||||
|
Pass Property position-area value 'span-right bottom'
|
||||||
|
Pass Property position-area value 'bottom span-right'
|
||||||
|
Pass Property position-area value 'span-right span-top'
|
||||||
|
Pass Property position-area value 'span-top span-right'
|
||||||
|
Pass Property position-area value 'span-right span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom span-right'
|
||||||
|
Pass Property position-area value 'span-right y-start'
|
||||||
|
Pass Property position-area value 'y-start span-right'
|
||||||
|
Pass Property position-area value 'span-right y-end'
|
||||||
|
Pass Property position-area value 'y-end span-right'
|
||||||
|
Pass Property position-area value 'span-right span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start span-right'
|
||||||
|
Pass Property position-area value 'span-right span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end span-right'
|
||||||
|
Pass Property position-area value 'span-right y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start span-right'
|
||||||
|
Pass Property position-area value 'span-right y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end span-right'
|
||||||
|
Pass Property position-area value 'span-right span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start span-right'
|
||||||
|
Pass Property position-area value 'span-right span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end span-right'
|
||||||
|
Pass Property position-area value 'x-start top'
|
||||||
|
Pass Property position-area value 'top x-start'
|
||||||
|
Pass Property position-area value 'x-start bottom'
|
||||||
|
Pass Property position-area value 'bottom x-start'
|
||||||
|
Pass Property position-area value 'x-start span-top'
|
||||||
|
Pass Property position-area value 'span-top x-start'
|
||||||
|
Pass Property position-area value 'x-start span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom x-start'
|
||||||
|
Pass Property position-area value 'x-start y-start'
|
||||||
|
Pass Property position-area value 'y-start x-start'
|
||||||
|
Pass Property position-area value 'x-start y-end'
|
||||||
|
Pass Property position-area value 'y-end x-start'
|
||||||
|
Pass Property position-area value 'x-start span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start x-start'
|
||||||
|
Pass Property position-area value 'x-start span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end x-start'
|
||||||
|
Pass Property position-area value 'x-start y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start x-start'
|
||||||
|
Pass Property position-area value 'x-start y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end x-start'
|
||||||
|
Pass Property position-area value 'x-start span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start x-start'
|
||||||
|
Pass Property position-area value 'x-start span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end x-start'
|
||||||
|
Pass Property position-area value 'x-end top'
|
||||||
|
Pass Property position-area value 'top x-end'
|
||||||
|
Pass Property position-area value 'x-end bottom'
|
||||||
|
Pass Property position-area value 'bottom x-end'
|
||||||
|
Pass Property position-area value 'x-end span-top'
|
||||||
|
Pass Property position-area value 'span-top x-end'
|
||||||
|
Pass Property position-area value 'x-end span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom x-end'
|
||||||
|
Pass Property position-area value 'x-end y-start'
|
||||||
|
Pass Property position-area value 'y-start x-end'
|
||||||
|
Pass Property position-area value 'x-end y-end'
|
||||||
|
Pass Property position-area value 'y-end x-end'
|
||||||
|
Pass Property position-area value 'x-end span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start x-end'
|
||||||
|
Pass Property position-area value 'x-end span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end x-end'
|
||||||
|
Pass Property position-area value 'x-end y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start x-end'
|
||||||
|
Pass Property position-area value 'x-end y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end x-end'
|
||||||
|
Pass Property position-area value 'x-end span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start x-end'
|
||||||
|
Pass Property position-area value 'x-end span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end x-end'
|
||||||
|
Pass Property position-area value 'span-x-start top'
|
||||||
|
Pass Property position-area value 'top span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start bottom'
|
||||||
|
Pass Property position-area value 'bottom span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start span-top'
|
||||||
|
Pass Property position-area value 'span-top span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start y-start'
|
||||||
|
Pass Property position-area value 'y-start span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start y-end'
|
||||||
|
Pass Property position-area value 'y-end span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-end top'
|
||||||
|
Pass Property position-area value 'top span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end bottom'
|
||||||
|
Pass Property position-area value 'bottom span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end span-top'
|
||||||
|
Pass Property position-area value 'span-top span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end y-start'
|
||||||
|
Pass Property position-area value 'y-start span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end y-end'
|
||||||
|
Pass Property position-area value 'y-end span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end span-x-end'
|
||||||
|
Pass Property position-area value 'x-self-start top'
|
||||||
|
Pass Property position-area value 'top x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start bottom'
|
||||||
|
Pass Property position-area value 'bottom x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start span-top'
|
||||||
|
Pass Property position-area value 'span-top x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start y-start'
|
||||||
|
Pass Property position-area value 'y-start x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start y-end'
|
||||||
|
Pass Property position-area value 'y-end x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-end top'
|
||||||
|
Pass Property position-area value 'top x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end bottom'
|
||||||
|
Pass Property position-area value 'bottom x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end span-top'
|
||||||
|
Pass Property position-area value 'span-top x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end y-start'
|
||||||
|
Pass Property position-area value 'y-start x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end y-end'
|
||||||
|
Pass Property position-area value 'y-end x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-start top'
|
||||||
|
Pass Property position-area value 'top span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start bottom'
|
||||||
|
Pass Property position-area value 'bottom span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start span-top'
|
||||||
|
Pass Property position-area value 'span-top span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start y-start'
|
||||||
|
Pass Property position-area value 'y-start span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start y-end'
|
||||||
|
Pass Property position-area value 'y-end span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-end top'
|
||||||
|
Pass Property position-area value 'top span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end bottom'
|
||||||
|
Pass Property position-area value 'bottom span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end span-top'
|
||||||
|
Pass Property position-area value 'span-top span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end y-start'
|
||||||
|
Pass Property position-area value 'y-start span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end y-end'
|
||||||
|
Pass Property position-area value 'y-end span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end span-x-self-end'
|
||||||
|
Pass Property position-area value 'left span-all'
|
||||||
|
Pass Property position-area value 'span-all left'
|
||||||
|
Pass Property position-area value 'left center'
|
||||||
|
Pass Property position-area value 'center left'
|
||||||
|
Pass Property position-area value 'right span-all'
|
||||||
|
Pass Property position-area value 'span-all right'
|
||||||
|
Pass Property position-area value 'right center'
|
||||||
|
Pass Property position-area value 'center right'
|
||||||
|
Pass Property position-area value 'span-left span-all'
|
||||||
|
Pass Property position-area value 'span-all span-left'
|
||||||
|
Pass Property position-area value 'span-left center'
|
||||||
|
Pass Property position-area value 'center span-left'
|
||||||
|
Pass Property position-area value 'span-right span-all'
|
||||||
|
Pass Property position-area value 'span-all span-right'
|
||||||
|
Pass Property position-area value 'span-right center'
|
||||||
|
Pass Property position-area value 'center span-right'
|
||||||
|
Pass Property position-area value 'x-start span-all'
|
||||||
|
Pass Property position-area value 'span-all x-start'
|
||||||
|
Pass Property position-area value 'x-start center'
|
||||||
|
Pass Property position-area value 'center x-start'
|
||||||
|
Pass Property position-area value 'x-end span-all'
|
||||||
|
Pass Property position-area value 'span-all x-end'
|
||||||
|
Pass Property position-area value 'x-end center'
|
||||||
|
Pass Property position-area value 'center x-end'
|
||||||
|
Pass Property position-area value 'span-x-start span-all'
|
||||||
|
Pass Property position-area value 'span-all span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-start center'
|
||||||
|
Pass Property position-area value 'center span-x-start'
|
||||||
|
Pass Property position-area value 'span-x-end span-all'
|
||||||
|
Pass Property position-area value 'span-all span-x-end'
|
||||||
|
Pass Property position-area value 'span-x-end center'
|
||||||
|
Pass Property position-area value 'center span-x-end'
|
||||||
|
Pass Property position-area value 'x-self-start span-all'
|
||||||
|
Pass Property position-area value 'span-all x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-start center'
|
||||||
|
Pass Property position-area value 'center x-self-start'
|
||||||
|
Pass Property position-area value 'x-self-end span-all'
|
||||||
|
Pass Property position-area value 'span-all x-self-end'
|
||||||
|
Pass Property position-area value 'x-self-end center'
|
||||||
|
Pass Property position-area value 'center x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-start span-all'
|
||||||
|
Pass Property position-area value 'span-all span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-start center'
|
||||||
|
Pass Property position-area value 'center span-x-self-start'
|
||||||
|
Pass Property position-area value 'span-x-self-end span-all'
|
||||||
|
Pass Property position-area value 'span-all span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-x-self-end center'
|
||||||
|
Pass Property position-area value 'center span-x-self-end'
|
||||||
|
Pass Property position-area value 'span-all top'
|
||||||
|
Pass Property position-area value 'top span-all'
|
||||||
|
Pass Property position-area value 'center top'
|
||||||
|
Pass Property position-area value 'top center'
|
||||||
|
Pass Property position-area value 'span-all bottom'
|
||||||
|
Pass Property position-area value 'bottom span-all'
|
||||||
|
Pass Property position-area value 'center bottom'
|
||||||
|
Pass Property position-area value 'bottom center'
|
||||||
|
Pass Property position-area value 'span-all span-top'
|
||||||
|
Pass Property position-area value 'span-top span-all'
|
||||||
|
Pass Property position-area value 'center span-top'
|
||||||
|
Pass Property position-area value 'span-top center'
|
||||||
|
Pass Property position-area value 'span-all span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom span-all'
|
||||||
|
Pass Property position-area value 'center span-bottom'
|
||||||
|
Pass Property position-area value 'span-bottom center'
|
||||||
|
Pass Property position-area value 'span-all y-start'
|
||||||
|
Pass Property position-area value 'y-start span-all'
|
||||||
|
Pass Property position-area value 'center y-start'
|
||||||
|
Pass Property position-area value 'y-start center'
|
||||||
|
Pass Property position-area value 'span-all y-end'
|
||||||
|
Pass Property position-area value 'y-end span-all'
|
||||||
|
Pass Property position-area value 'center y-end'
|
||||||
|
Pass Property position-area value 'y-end center'
|
||||||
|
Pass Property position-area value 'span-all span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start span-all'
|
||||||
|
Pass Property position-area value 'center span-y-start'
|
||||||
|
Pass Property position-area value 'span-y-start center'
|
||||||
|
Pass Property position-area value 'span-all span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end span-all'
|
||||||
|
Pass Property position-area value 'center span-y-end'
|
||||||
|
Pass Property position-area value 'span-y-end center'
|
||||||
|
Pass Property position-area value 'span-all y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start span-all'
|
||||||
|
Pass Property position-area value 'center y-self-start'
|
||||||
|
Pass Property position-area value 'y-self-start center'
|
||||||
|
Pass Property position-area value 'span-all y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end span-all'
|
||||||
|
Pass Property position-area value 'center y-self-end'
|
||||||
|
Pass Property position-area value 'y-self-end center'
|
||||||
|
Pass Property position-area value 'span-all span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start span-all'
|
||||||
|
Pass Property position-area value 'center span-y-self-start'
|
||||||
|
Pass Property position-area value 'span-y-self-start center'
|
||||||
|
Pass Property position-area value 'span-all span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end span-all'
|
||||||
|
Pass Property position-area value 'center span-y-self-end'
|
||||||
|
Pass Property position-area value 'span-y-self-end center'
|
||||||
|
Pass Property position-area value 'block-start inline-start'
|
||||||
|
Pass Property position-area value 'inline-start block-start'
|
||||||
|
Pass Property position-area value 'block-start inline-end'
|
||||||
|
Pass Property position-area value 'inline-end block-start'
|
||||||
|
Pass Property position-area value 'block-start span-inline-start'
|
||||||
|
Pass Property position-area value 'span-inline-start block-start'
|
||||||
|
Pass Property position-area value 'block-start span-inline-end'
|
||||||
|
Pass Property position-area value 'span-inline-end block-start'
|
||||||
|
Pass Property position-area value 'block-end inline-start'
|
||||||
|
Pass Property position-area value 'inline-start block-end'
|
||||||
|
Pass Property position-area value 'block-end inline-end'
|
||||||
|
Pass Property position-area value 'inline-end block-end'
|
||||||
|
Pass Property position-area value 'block-end span-inline-start'
|
||||||
|
Pass Property position-area value 'span-inline-start block-end'
|
||||||
|
Pass Property position-area value 'block-end span-inline-end'
|
||||||
|
Pass Property position-area value 'span-inline-end block-end'
|
||||||
|
Pass Property position-area value 'span-block-start inline-start'
|
||||||
|
Pass Property position-area value 'inline-start span-block-start'
|
||||||
|
Pass Property position-area value 'span-block-start inline-end'
|
||||||
|
Pass Property position-area value 'inline-end span-block-start'
|
||||||
|
Pass Property position-area value 'span-block-start span-inline-start'
|
||||||
|
Pass Property position-area value 'span-inline-start span-block-start'
|
||||||
|
Pass Property position-area value 'span-block-start span-inline-end'
|
||||||
|
Pass Property position-area value 'span-inline-end span-block-start'
|
||||||
|
Pass Property position-area value 'span-block-end inline-start'
|
||||||
|
Pass Property position-area value 'inline-start span-block-end'
|
||||||
|
Pass Property position-area value 'span-block-end inline-end'
|
||||||
|
Pass Property position-area value 'inline-end span-block-end'
|
||||||
|
Pass Property position-area value 'span-block-end span-inline-start'
|
||||||
|
Pass Property position-area value 'span-inline-start span-block-end'
|
||||||
|
Pass Property position-area value 'span-block-end span-inline-end'
|
||||||
|
Pass Property position-area value 'span-inline-end span-block-end'
|
||||||
|
Pass Property position-area value 'block-start span-all'
|
||||||
|
Pass Property position-area value 'span-all block-start'
|
||||||
|
Pass Property position-area value 'block-start center'
|
||||||
|
Pass Property position-area value 'center block-start'
|
||||||
|
Pass Property position-area value 'block-end span-all'
|
||||||
|
Pass Property position-area value 'span-all block-end'
|
||||||
|
Pass Property position-area value 'block-end center'
|
||||||
|
Pass Property position-area value 'center block-end'
|
||||||
|
Pass Property position-area value 'span-block-start span-all'
|
||||||
|
Pass Property position-area value 'span-all span-block-start'
|
||||||
|
Pass Property position-area value 'span-block-start center'
|
||||||
|
Pass Property position-area value 'center span-block-start'
|
||||||
|
Pass Property position-area value 'span-block-end span-all'
|
||||||
|
Pass Property position-area value 'span-all span-block-end'
|
||||||
|
Pass Property position-area value 'span-block-end center'
|
||||||
|
Pass Property position-area value 'center span-block-end'
|
||||||
|
Pass Property position-area value 'inline-start span-all'
|
||||||
|
Pass Property position-area value 'span-all inline-start'
|
||||||
|
Pass Property position-area value 'inline-start center'
|
||||||
|
Pass Property position-area value 'center inline-start'
|
||||||
|
Pass Property position-area value 'inline-end span-all'
|
||||||
|
Pass Property position-area value 'span-all inline-end'
|
||||||
|
Pass Property position-area value 'inline-end center'
|
||||||
|
Pass Property position-area value 'center inline-end'
|
||||||
|
Pass Property position-area value 'span-inline-start span-all'
|
||||||
|
Pass Property position-area value 'span-all span-inline-start'
|
||||||
|
Pass Property position-area value 'span-inline-start center'
|
||||||
|
Pass Property position-area value 'center span-inline-start'
|
||||||
|
Pass Property position-area value 'span-inline-end span-all'
|
||||||
|
Pass Property position-area value 'span-all span-inline-end'
|
||||||
|
Pass Property position-area value 'span-inline-end center'
|
||||||
|
Pass Property position-area value 'center span-inline-end'
|
||||||
|
Pass Property position-area value 'self-block-start self-inline-start'
|
||||||
|
Pass Property position-area value 'self-inline-start self-block-start'
|
||||||
|
Pass Property position-area value 'self-block-start self-inline-end'
|
||||||
|
Pass Property position-area value 'self-inline-end self-block-start'
|
||||||
|
Pass Property position-area value 'self-block-start span-self-inline-start'
|
||||||
|
Pass Property position-area value 'span-self-inline-start self-block-start'
|
||||||
|
Pass Property position-area value 'self-block-start span-self-inline-end'
|
||||||
|
Pass Property position-area value 'span-self-inline-end self-block-start'
|
||||||
|
Pass Property position-area value 'self-block-end self-inline-start'
|
||||||
|
Pass Property position-area value 'self-inline-start self-block-end'
|
||||||
|
Pass Property position-area value 'self-block-end self-inline-end'
|
||||||
|
Pass Property position-area value 'self-inline-end self-block-end'
|
||||||
|
Pass Property position-area value 'self-block-end span-self-inline-start'
|
||||||
|
Pass Property position-area value 'span-self-inline-start self-block-end'
|
||||||
|
Pass Property position-area value 'self-block-end span-self-inline-end'
|
||||||
|
Pass Property position-area value 'span-self-inline-end self-block-end'
|
||||||
|
Pass Property position-area value 'span-self-block-start self-inline-start'
|
||||||
|
Pass Property position-area value 'self-inline-start span-self-block-start'
|
||||||
|
Pass Property position-area value 'span-self-block-start self-inline-end'
|
||||||
|
Pass Property position-area value 'self-inline-end span-self-block-start'
|
||||||
|
Pass Property position-area value 'span-self-block-start span-self-inline-start'
|
||||||
|
Pass Property position-area value 'span-self-inline-start span-self-block-start'
|
||||||
|
Pass Property position-area value 'span-self-block-start span-self-inline-end'
|
||||||
|
Pass Property position-area value 'span-self-inline-end span-self-block-start'
|
||||||
|
Pass Property position-area value 'span-self-block-end self-inline-start'
|
||||||
|
Pass Property position-area value 'self-inline-start span-self-block-end'
|
||||||
|
Pass Property position-area value 'span-self-block-end self-inline-end'
|
||||||
|
Pass Property position-area value 'self-inline-end span-self-block-end'
|
||||||
|
Pass Property position-area value 'span-self-block-end span-self-inline-start'
|
||||||
|
Pass Property position-area value 'span-self-inline-start span-self-block-end'
|
||||||
|
Pass Property position-area value 'span-self-block-end span-self-inline-end'
|
||||||
|
Pass Property position-area value 'span-self-inline-end span-self-block-end'
|
||||||
|
Pass Property position-area value 'self-block-start span-all'
|
||||||
|
Pass Property position-area value 'span-all self-block-start'
|
||||||
|
Pass Property position-area value 'self-block-start center'
|
||||||
|
Pass Property position-area value 'center self-block-start'
|
||||||
|
Pass Property position-area value 'self-block-end span-all'
|
||||||
|
Pass Property position-area value 'span-all self-block-end'
|
||||||
|
Pass Property position-area value 'self-block-end center'
|
||||||
|
Pass Property position-area value 'center self-block-end'
|
||||||
|
Pass Property position-area value 'span-self-block-start span-all'
|
||||||
|
Pass Property position-area value 'span-all span-self-block-start'
|
||||||
|
Pass Property position-area value 'span-self-block-start center'
|
||||||
|
Pass Property position-area value 'center span-self-block-start'
|
||||||
|
Pass Property position-area value 'span-self-block-end span-all'
|
||||||
|
Pass Property position-area value 'span-all span-self-block-end'
|
||||||
|
Pass Property position-area value 'span-self-block-end center'
|
||||||
|
Pass Property position-area value 'center span-self-block-end'
|
||||||
|
Pass Property position-area value 'self-inline-start span-all'
|
||||||
|
Pass Property position-area value 'span-all self-inline-start'
|
||||||
|
Pass Property position-area value 'self-inline-start center'
|
||||||
|
Pass Property position-area value 'center self-inline-start'
|
||||||
|
Pass Property position-area value 'self-inline-end span-all'
|
||||||
|
Pass Property position-area value 'span-all self-inline-end'
|
||||||
|
Pass Property position-area value 'self-inline-end center'
|
||||||
|
Pass Property position-area value 'center self-inline-end'
|
||||||
|
Pass Property position-area value 'span-self-inline-start span-all'
|
||||||
|
Pass Property position-area value 'span-all span-self-inline-start'
|
||||||
|
Pass Property position-area value 'span-self-inline-start center'
|
||||||
|
Pass Property position-area value 'center span-self-inline-start'
|
||||||
|
Pass Property position-area value 'span-self-inline-end span-all'
|
||||||
|
Pass Property position-area value 'span-all span-self-inline-end'
|
||||||
|
Pass Property position-area value 'span-self-inline-end center'
|
||||||
|
Pass Property position-area value 'center span-self-inline-end'
|
||||||
|
Pass Property position-area value 'start start'
|
||||||
|
Pass Property position-area value 'start end'
|
||||||
|
Pass Property position-area value 'start span-start'
|
||||||
|
Pass Property position-area value 'start span-end'
|
||||||
|
Pass Property position-area value 'end start'
|
||||||
|
Pass Property position-area value 'end end'
|
||||||
|
Pass Property position-area value 'end span-start'
|
||||||
|
Pass Property position-area value 'end span-end'
|
||||||
|
Pass Property position-area value 'span-start start'
|
||||||
|
Pass Property position-area value 'span-start end'
|
||||||
|
Pass Property position-area value 'span-start span-start'
|
||||||
|
Pass Property position-area value 'span-start span-end'
|
||||||
|
Pass Property position-area value 'span-end start'
|
||||||
|
Pass Property position-area value 'span-end end'
|
||||||
|
Pass Property position-area value 'span-end span-start'
|
||||||
|
Pass Property position-area value 'span-end span-end'
|
||||||
|
Pass Property position-area value 'start span-all'
|
||||||
|
Pass Property position-area value 'span-all start'
|
||||||
|
Pass Property position-area value 'start center'
|
||||||
|
Pass Property position-area value 'center start'
|
||||||
|
Pass Property position-area value 'end span-all'
|
||||||
|
Pass Property position-area value 'span-all end'
|
||||||
|
Pass Property position-area value 'end center'
|
||||||
|
Pass Property position-area value 'center end'
|
||||||
|
Pass Property position-area value 'span-start span-all'
|
||||||
|
Pass Property position-area value 'span-all span-start'
|
||||||
|
Pass Property position-area value 'span-start center'
|
||||||
|
Pass Property position-area value 'center span-start'
|
||||||
|
Pass Property position-area value 'span-end span-all'
|
||||||
|
Pass Property position-area value 'span-all span-end'
|
||||||
|
Pass Property position-area value 'span-end center'
|
||||||
|
Pass Property position-area value 'center span-end'
|
||||||
|
Pass Property position-area value 'self-start self-start'
|
||||||
|
Pass Property position-area value 'self-start self-end'
|
||||||
|
Pass Property position-area value 'self-start span-self-start'
|
||||||
|
Pass Property position-area value 'self-start span-self-end'
|
||||||
|
Pass Property position-area value 'self-end self-start'
|
||||||
|
Pass Property position-area value 'self-end self-end'
|
||||||
|
Pass Property position-area value 'self-end span-self-start'
|
||||||
|
Pass Property position-area value 'self-end span-self-end'
|
||||||
|
Pass Property position-area value 'span-self-start self-start'
|
||||||
|
Pass Property position-area value 'span-self-start self-end'
|
||||||
|
Pass Property position-area value 'span-self-start span-self-start'
|
||||||
|
Pass Property position-area value 'span-self-start span-self-end'
|
||||||
|
Pass Property position-area value 'span-self-end self-start'
|
||||||
|
Pass Property position-area value 'span-self-end self-end'
|
||||||
|
Pass Property position-area value 'span-self-end span-self-start'
|
||||||
|
Pass Property position-area value 'span-self-end span-self-end'
|
||||||
|
Pass Property position-area value 'self-start span-all'
|
||||||
|
Pass Property position-area value 'span-all self-start'
|
||||||
|
Pass Property position-area value 'self-start center'
|
||||||
|
Pass Property position-area value 'center self-start'
|
||||||
|
Pass Property position-area value 'self-end span-all'
|
||||||
|
Pass Property position-area value 'span-all self-end'
|
||||||
|
Pass Property position-area value 'self-end center'
|
||||||
|
Pass Property position-area value 'center self-end'
|
||||||
|
Pass Property position-area value 'span-self-start span-all'
|
||||||
|
Pass Property position-area value 'span-all span-self-start'
|
||||||
|
Pass Property position-area value 'span-self-start center'
|
||||||
|
Pass Property position-area value 'center span-self-start'
|
||||||
|
Pass Property position-area value 'span-self-end span-all'
|
||||||
|
Pass Property position-area value 'span-all span-self-end'
|
||||||
|
Pass Property position-area value 'span-self-end center'
|
||||||
|
Pass Property position-area value 'center span-self-end'
|
||||||
|
Pass Property position-area value 'span-all span-all'
|
||||||
|
Pass Property position-area value 'span-all center'
|
||||||
|
Pass Property position-area value 'center span-all'
|
||||||
|
Pass Property position-area value 'center center'
|
||||||
|
Pass Property position-area has initial value none
|
||||||
|
Pass Property position-area does not inherit
|
|
@ -0,0 +1,197 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSS Anchor Positioning: position-area getComputedStyle()</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#position-area-computed">
|
||||||
|
<script src="../../resources/testharness.js"></script>
|
||||||
|
<script src="../../resources/testharnessreport.js"></script>
|
||||||
|
<script src="../../css/support/computed-testcommon.js"></script>
|
||||||
|
<script src="../../css/support/inheritance-testcommon.js"></script>
|
||||||
|
<div id="container">
|
||||||
|
<div id="target"></div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
// Keywords that refer to the physical horizontal/vertical axes.
|
||||||
|
|
||||||
|
const horizontal = [
|
||||||
|
"left",
|
||||||
|
"right",
|
||||||
|
"span-left",
|
||||||
|
"span-right",
|
||||||
|
"x-start",
|
||||||
|
"x-end",
|
||||||
|
"span-x-start",
|
||||||
|
"span-x-end",
|
||||||
|
"x-self-start",
|
||||||
|
"x-self-end",
|
||||||
|
"span-x-self-start",
|
||||||
|
"span-x-self-end"
|
||||||
|
];
|
||||||
|
|
||||||
|
const vertical = [
|
||||||
|
"top",
|
||||||
|
"bottom",
|
||||||
|
"span-top",
|
||||||
|
"span-bottom",
|
||||||
|
"y-start",
|
||||||
|
"y-end",
|
||||||
|
"span-y-start",
|
||||||
|
"span-y-end",
|
||||||
|
"y-self-start",
|
||||||
|
"y-self-end",
|
||||||
|
"span-y-self-start",
|
||||||
|
"span-y-self-end"
|
||||||
|
];
|
||||||
|
|
||||||
|
// Keywords that refer to the logical block/inline axis.
|
||||||
|
// Key is the full form of the keyword, value is the equivalent reduced keyword.
|
||||||
|
|
||||||
|
const inline = {
|
||||||
|
"inline-start": "start",
|
||||||
|
"inline-end": "end",
|
||||||
|
"span-inline-start": "span-start",
|
||||||
|
"span-inline-end": "span-end",
|
||||||
|
}
|
||||||
|
|
||||||
|
const block = {
|
||||||
|
"block-start": "start",
|
||||||
|
"block-end": "end",
|
||||||
|
"span-block-start": "span-start",
|
||||||
|
"span-block-end": "span-end",
|
||||||
|
}
|
||||||
|
|
||||||
|
const self_inline = {
|
||||||
|
"self-inline-start": "self-start",
|
||||||
|
"self-inline-end": "self-end",
|
||||||
|
"span-self-inline-start": "span-self-start",
|
||||||
|
"span-self-inline-end": "span-self-end",
|
||||||
|
}
|
||||||
|
|
||||||
|
const self_block = {
|
||||||
|
"self-block-start": "self-start",
|
||||||
|
"self-block-end": "self-end",
|
||||||
|
"span-self-block-start": "span-self-start",
|
||||||
|
"span-self-block-end": "span-self-end",
|
||||||
|
}
|
||||||
|
|
||||||
|
// Keywords that refer to an ambiguous axis.
|
||||||
|
// Key is the keyword, value is the equivalent keyword if the original keyword refers
|
||||||
|
// to a block or inline axis.
|
||||||
|
|
||||||
|
const start_end = {
|
||||||
|
"start": { "block": "block-start", "inline": "inline-start" },
|
||||||
|
"end": { "block": "block-end", "inline": "inline-end" },
|
||||||
|
"span-start": { "block": "span-block-start", "inline": "span-inline-start" },
|
||||||
|
"span-end": { "block": "span-block-end", "inline": "span-inline-end" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const self_start_end = {
|
||||||
|
"self-start": { "block": "self-block-start", "inline": "self-inline-start" },
|
||||||
|
"self-end": { "block": "self-block-end", "inline": "self-inline-end" },
|
||||||
|
"span-self-start": { "block": "span-self-block-start", "inline": "span-self-inline-start" },
|
||||||
|
"span-self-end": { "block": "span-self-block-end", "inline": "span-self-inline-end" },
|
||||||
|
};
|
||||||
|
|
||||||
|
function test_single_keyword(keywords) {
|
||||||
|
for (const keyword of keywords)
|
||||||
|
test_computed_value("position-area", keyword);
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_physical_keywords(horizontal_keywords, vertical_keywords) {
|
||||||
|
for (const horizontal of horizontal_keywords) {
|
||||||
|
for (const vertical of vertical_keywords) {
|
||||||
|
test_computed_value("position-area", `${horizontal} ${vertical}`);
|
||||||
|
test_computed_value("position-area", `${vertical} ${horizontal}`, `${horizontal} ${vertical}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const keyword of horizontal_keywords) {
|
||||||
|
test_computed_value("position-area", `${keyword} span-all`, keyword);
|
||||||
|
test_computed_value("position-area", `span-all ${keyword}`, keyword);
|
||||||
|
|
||||||
|
test_computed_value("position-area", `${keyword} center`);
|
||||||
|
test_computed_value("position-area", `center ${keyword}`, `${keyword} center`);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const keyword of vertical_keywords) {
|
||||||
|
test_computed_value("position-area", `span-all ${keyword}`, keyword);
|
||||||
|
test_computed_value("position-area", `${keyword} span-all`, keyword);
|
||||||
|
|
||||||
|
test_computed_value("position-area", `center ${keyword}`);
|
||||||
|
test_computed_value("position-area", `${keyword} center`, `center ${keyword}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_unambiguous_logical_keywords(block_keywords, inline_keywords) {
|
||||||
|
for (const [block_long_keyword, block_short_keyword] of Object.entries(block_keywords)) {
|
||||||
|
for (const [inline_long_keyword, inline_short_keyword] of Object.entries(inline_keywords)) {
|
||||||
|
let expected_computed = `${block_short_keyword} ${inline_short_keyword}`;
|
||||||
|
if (block_short_keyword == inline_short_keyword)
|
||||||
|
expected_computed = block_short_keyword;
|
||||||
|
|
||||||
|
test_computed_value("position-area", `${block_long_keyword} ${inline_long_keyword}`, expected_computed);
|
||||||
|
test_computed_value("position-area", `${inline_long_keyword} ${block_long_keyword}`, expected_computed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [long_keyword, short_keyword] of Object.entries(block_keywords)) {
|
||||||
|
test_computed_value("position-area", `${long_keyword} span-all`, long_keyword);
|
||||||
|
test_computed_value("position-area", `span-all ${long_keyword}`, long_keyword);
|
||||||
|
|
||||||
|
test_computed_value("position-area", `${long_keyword} center`, `${short_keyword} center`);
|
||||||
|
test_computed_value("position-area", `center ${long_keyword}`, `${short_keyword} center`);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [long_keyword, short_keyword] of Object.entries(inline_keywords)) {
|
||||||
|
test_computed_value("position-area", `${long_keyword} span-all`, long_keyword);
|
||||||
|
test_computed_value("position-area", `span-all ${long_keyword}`, long_keyword);
|
||||||
|
|
||||||
|
test_computed_value("position-area", `${long_keyword} center`, `center ${short_keyword}`);
|
||||||
|
test_computed_value("position-area", `center ${long_keyword}`, `center ${short_keyword}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_ambiguous_logical_keywords(keywords) {
|
||||||
|
for (const keyword1 of Object.keys(keywords)) {
|
||||||
|
for (const keyword2 of Object.keys(keywords)) {
|
||||||
|
if (keyword1 == keyword2)
|
||||||
|
test_computed_value("position-area", `${keyword1} ${keyword2}`, `${keyword1}`);
|
||||||
|
else
|
||||||
|
test_computed_value("position-area", `${keyword1} ${keyword2}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [keyword, { block: block_keyword, inline: inline_keyword }] of Object.entries(keywords)) {
|
||||||
|
test_computed_value("position-area", `${keyword} span-all`, block_keyword);
|
||||||
|
test_computed_value("position-area", `span-all ${keyword}`, inline_keyword);
|
||||||
|
|
||||||
|
test_computed_value("position-area", `${keyword} center`);
|
||||||
|
test_computed_value("position-area", `center ${keyword}`);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test computed value when position-area is a single keyword.
|
||||||
|
test_computed_value("position-area", "none");
|
||||||
|
test_computed_value("position-area", "span-all");
|
||||||
|
test_computed_value("position-area", "center");
|
||||||
|
test_single_keyword(horizontal);
|
||||||
|
test_single_keyword(vertical);
|
||||||
|
test_single_keyword(Object.keys(inline));
|
||||||
|
test_single_keyword(Object.keys(block));
|
||||||
|
test_single_keyword(Object.keys(self_inline));
|
||||||
|
test_single_keyword(Object.keys(self_block));
|
||||||
|
test_single_keyword(Object.keys(start_end));
|
||||||
|
test_single_keyword(Object.keys(self_start_end));
|
||||||
|
|
||||||
|
// Test computed value when position-area are two keywords.
|
||||||
|
test_physical_keywords(horizontal, vertical);
|
||||||
|
test_unambiguous_logical_keywords(block, inline);
|
||||||
|
test_unambiguous_logical_keywords(self_block, self_inline);
|
||||||
|
test_ambiguous_logical_keywords(start_end);
|
||||||
|
test_ambiguous_logical_keywords(self_start_end);
|
||||||
|
|
||||||
|
test_computed_value("position-area", "span-all span-all", "span-all");
|
||||||
|
test_computed_value("position-area", "span-all center");
|
||||||
|
test_computed_value("position-area", "center span-all");
|
||||||
|
test_computed_value("position-area", "center center", "center");
|
||||||
|
|
||||||
|
assert_not_inherited("position-area", "none", "span-all");
|
||||||
|
</script>
|
Loading…
Add table
Add a link
Reference in a new issue