Source code

Revision control

Copy as Markdown

Other Tools

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# CSS Longhand Properties defined via predefined_type
#
# This file contains property definitions that are processed by the build system
# to generate the property module code.
#
# Each section `[property-name]` defines a longhand property with the following fields:
#
# Required fields:
# type - The Rust type name (e.g., "Display", "Color")
# struct - Which style struct this belongs to ("box", "font", "position", etc.)
# engine - If this property is specific to one engine, the engine that it applies to
# spec - URL to the specification
# affects - What does this property affect? ("layout", "overflow", "paint", "")
#
# Optional fields:
# initial - The computed initial value expression
# keyword - Description of the keyword.
# initial_specified_value - Initial specified value (if different from initial)
# animation_type - "none", "normal", or "discrete" (default: "normal")
# parse_method - Parse method name (default: "parse")
# allow_quirks - true/false (default: false)
# boxed - true/false - whether to box the value
# vector - A dictionary with:
# animation_type - repeatable_list / with_zero / none
# simple_bindings - true/false
# need_index - true/false
# separator - "Comma" or "Space" (for vector properties, default comma)
# keyword - A dictionary with:
# values - Space separated list of valid values
# extra_gecko_values
# gecko_enum_prefix
# gecko_constant_prefix
# custom_consts - map with name -> enum mapping
# gecko_inexhaustive - Whether the gecko enum doesn't cover all keywords
# gecko_pref - Gecko preference name
# servo_pref - Servo preference name
# gecko_ffi_name - Gecko FFI name (defaults to "m" + CamelCase)
# enabled_in - "content", "chrome", "ua", or ""
# logical - true/false - whether this is a logical property
# logical_group - Logical property group name
# flags - Space-separated flags (e.g., "CAN_ANIMATE_ON_COMPOSITOR")
# aliases - Property aliases
# extra_prefixes - Vendor prefixes
# ignored_when_colors_disabled - true/false
# has_effect_on_gecko_scrollbars - true/false
# rule_types_allowed - Which rule types allow this property
# servo_restyle_damage - Valid values are "repaint", "rebuild_stacking_context", "recalculate_overflow", "rebuild_box".
[-moz-box-flex]
type = "NonNegativeNumber"
initial = "From::from(0.)"
struct = "xul"
engine = "gecko"
gecko_ffi_name = "mBoxFlex"
aliases = ["-webkit-box-flex"]
affects = "layout"
# NOTE(heycam): Odd that the initial value is 1 yet 0 is a valid value.
[-moz-box-ordinal-group]
type = "Integer"
initial = "1"
struct = "xul"
engine = "gecko"
parse_method = "parse_non_negative"
aliases = ["-webkit-box-ordinal-group"]
gecko_ffi_name = "mBoxOrdinal"
animation_type = "discrete"
affects = "layout"
[-moz-default-appearance]
type = "Appearance"
initial = "computed::Appearance::None"
struct = "box"
engine = "gecko"
animation_type = "none"
spec = "Internal (not web-exposed)"
enabled_in = "chrome"
gecko_ffi_name = "mDefaultAppearance"
affects = "paint"
[-moz-min-font-size-ratio]
type = "Percentage"
initial = "computed::Percentage::hundred()"
struct = "font"
engine = "gecko"
animation_type = "none"
gecko_ffi_name = "mMinFontSizeRatio"
enabled_in = "ua"
spec = "Nonstandard (Internal-only)"
affects = "layout"
[-webkit-line-clamp]
type = "LineClamp"
initial = "computed::LineClamp::none()"
struct = "box"
engine = "gecko"
affects = "layout"
[-x-lang]
type = "XLang"
initial = "computed::XLang::get_initial_value()"
struct = "font"
animation_type = "none"
enabled_in = ""
has_effect_on_gecko_scrollbars = false
spec = "Internal (not web-exposed)"
affects = "layout"
[-x-text-scale]
type = "XTextScale"
initial = "computed::XTextScale::All"
struct = "font"
engine = "gecko"
animation_type = "none"
enabled_in = ""
has_effect_on_gecko_scrollbars = false
spec = "Internal (not web-exposed)"
affects = "layout"
[accent-color]
type = "ColorOrAuto"
initial = "generics::color::ColorOrAuto::Auto"
struct = "inherited_ui"
engine = "gecko"
ignored_when_colors_disabled = true
affects = "paint"
[align-content]
type = "ContentDistribution"
initial = "specified::ContentDistribution::normal()"
struct = "position"
parse_method = "parse_block"
extra_prefixes = ["webkit"]
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[align-items]
type = "ItemPlacement"
initial = "specified::ItemPlacement::normal()"
struct = "position"
parse_method = "parse_block"
extra_prefixes = ["webkit"]
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[align-self]
type = "SelfAlignment"
initial = "specified::SelfAlignment::auto()"
struct = "position"
parse_method = "parse_block"
extra_prefixes = ["webkit"]
animation_type = "discrete"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
affects = "layout"
[alignment-baseline]
type = "AlignmentBaseline"
initial = "computed::AlignmentBaseline::Baseline"
struct = "box"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[anchor-name]
type = "AnchorName"
initial = "computed::AnchorName::none()"
struct = "box"
engine = "gecko"
animation_type = "discrete"
gecko_pref = "layout.css.anchor-positioning.enabled"
affects = ""
[anchor-scope]
type = "AnchorScope"
initial = "computed::AnchorScope::none()"
struct = "box"
engine = "gecko"
animation_type = "discrete"
gecko_pref = "layout.css.anchor-positioning.enabled"
affects = ""
[animation-delay]
type = "Time"
initial = "computed::Time::zero()"
struct = "ui"
initial_specified_value = "specified::Time::zero()"
vector = { need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.animations", "webkit"]
rule_types_allowed = ["style", "scope"]
affects = ""
[animation-direction]
type = "AnimationDirection"
initial = "computed::AnimationDirection::Normal"
struct = "ui"
initial_specified_value = "specified::AnimationDirection::Normal"
vector = { need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.animations", "webkit"]
rule_types_allowed = ["style", "scope"]
affects = ""
[animation-duration]
type = "AnimationDuration"
initial = "computed::AnimationDuration::auto()"
struct = "ui"
initial_specified_value = "specified::AnimationDuration::auto()"
vector = { need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.animations", "webkit"]
affects = ""
[animation-fill-mode]
type = "AnimationFillMode"
initial = "computed::AnimationFillMode::None"
struct = "ui"
initial_specified_value = "computed::AnimationFillMode::None"
vector = { need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.animations", "webkit"]
rule_types_allowed = ["style", "scope"]
affects = ""
[animation-iteration-count]
type = "AnimationIterationCount"
initial = "computed::AnimationIterationCount::one()"
struct = "ui"
initial_specified_value = "specified::AnimationIterationCount::one()"
vector = { need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.animations", "webkit"]
rule_types_allowed = ["style", "scope"]
affects = ""
[animation-name]
type = "AnimationName"
initial = "computed::AnimationName::none()"
struct = "ui"
initial_specified_value = "specified::AnimationName::none()"
vector = { need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.animations", "webkit"]
rule_types_allowed = ["style", "scope"]
affects = ""
[animation-play-state]
type = "AnimationPlayState"
initial = "computed::AnimationPlayState::Running"
struct = "ui"
initial_specified_value = "computed::AnimationPlayState::Running"
vector = { need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.animations", "webkit"]
rule_types_allowed = ["style", "scope"]
affects = ""
[animation-timeline]
type = "AnimationTimeline"
initial = "computed::AnimationTimeline::auto()"
struct = "ui"
servo_pref = "layout.unimplemented"
initial_specified_value = "specified::AnimationTimeline::auto()"
vector = { need_index = true }
animation_type = "none"
gecko_pref = "layout.css.scroll-driven-animations.enabled"
rule_types_allowed = ["style", "scope"]
affects = ""
[animation-timing-function]
type = "TimingFunction"
initial = "computed::TimingFunction::ease()"
struct = "ui"
initial_specified_value = "specified::TimingFunction::ease()"
vector = { need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.animations", "webkit"]
affects = ""
[appearance]
type = "Appearance"
initial = "computed::Appearance::None"
struct = "box"
engine = "gecko"
extra_prefixes = ["moz:layout.css.moz-appearance.enabled", "webkit"]
animation_type = "discrete"
gecko_ffi_name = "mAppearance"
affects = "paint"
[aspect-ratio]
type = "AspectRatio"
initial = "computed::AspectRatio::auto()"
struct = "position"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[backdrop-filter]
type = "Filter"
struct = "effects"
vector = { simple_bindings = true, separator = "Space", animation_type = "with_zero" }
gecko_ffi_name = "mBackdropFilters"
gecko_pref = "layout.css.backdrop-filter.enabled"
servo_pref = "layout.unimplemented"
affects = "overflow"
[background-color]
type = "Color"
initial = "computed::Color::TRANSPARENT_BLACK"
struct = "background"
initial_specified_value = "SpecifiedValue::transparent()"
ignored_when_colors_disabled = true
allow_quirks = true
flags = "CAN_ANIMATE_ON_COMPOSITOR"
servo_restyle_damage = "repaint"
affects = "paint"
[background-image]
type = "Image"
initial = "computed::Image::None"
struct = "background"
initial_specified_value = "specified::Image::None"
vector = {}
animation_type = "discrete"
ignored_when_colors_disabled = true
servo_restyle_damage = "repaint"
affects = "paint"
[background-position-x]
type = "position::HorizontalPosition"
initial = "computed::LengthPercentage::zero_percent()"
struct = "background"
initial_specified_value = "SpecifiedValue::initial_specified_value()"
vector = { animation_type = "repeatable_list" }
servo_restyle_damage = "repaint"
affects = "paint"
[background-position-y]
type = "position::VerticalPosition"
initial = "computed::LengthPercentage::zero_percent()"
struct = "background"
initial_specified_value = "SpecifiedValue::initial_specified_value()"
vector = { animation_type = "repeatable_list" }
servo_restyle_damage = "repaint"
affects = "paint"
[background-repeat]
type = "BackgroundRepeat"
initial = "computed::BackgroundRepeat::repeat()"
struct = "background"
initial_specified_value = "specified::BackgroundRepeat::repeat()"
animation_type = "discrete"
vector = {}
servo_restyle_damage = "repaint"
affects = "paint"
[background-size]
type = "BackgroundSize"
initial = "computed::BackgroundSize::auto()"
struct = "background"
initial_specified_value = "specified::BackgroundSize::auto()"
vector = { animation_type = "repeatable_list" }
extra_prefixes = ["webkit"]
servo_restyle_damage = "repaint"
affects = "paint"
[baseline-shift]
type = "BaselineShift"
initial = "computed::BaselineShift::zero()"
struct = "box"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[baseline-source]
type = "BaselineSource"
initial = "computed::BaselineSource::Auto"
struct = "box"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[block-size]
type = "Size"
initial = "computed::Size::auto()"
struct = "position"
logical = true
logical_group = "size"
parse_method = "parse_size_for_width_or_height"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[border-spacing]
type = "BorderSpacing"
initial = "computed::BorderSpacing::zero()"
struct = "inherited_table"
boxed = true
servo_restyle_damage = "rebuild_box"
affects = "layout"
[bottom]
type = "Inset"
initial = "computed::Inset::auto()"
struct = "position"
allow_quirks = true
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
gecko_ffi_name = "mOffset.2"
servo_restyle_damage = "rebuild_box"
logical_group = "inset"
affects = "layout"
[box-shadow]
type = "BoxShadow"
struct = "effects"
vector = { simple_bindings = true, animation_type = "with_zero" }
extra_prefixes = ["webkit"]
ignored_when_colors_disabled = true
affects = "overflow"
[break-after]
type = "BreakBetween"
initial = "computed::BreakBetween::Auto"
struct = "box"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[break-before]
type = "BreakBetween"
initial = "computed::BreakBetween::Auto"
struct = "box"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[break-inside]
type = "BreakWithin"
initial = "computed::BreakWithin::Auto"
struct = "box"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[caption-side]
type = "table::CaptionSide"
initial = "computed::table::CaptionSide::Top"
struct = "inherited_table"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[caret-color]
type = "color::CaretColor"
initial = "generics::color::CaretColor::auto()"
struct = "inherited_ui"
engine = "gecko"
ignored_when_colors_disabled = true
affects = "paint"
[clear]
type = "Clear"
initial = "computed::Clear::None"
struct = "box"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[clip]
type = "ClipRectOrAuto"
initial = "computed::ClipRectOrAuto::auto()"
struct = "effects"
boxed = true
allow_quirks = true
affects = "overflow"
[clip-path]
type = "basic_shape::ClipPath"
initial = "generics::basic_shape::ClipPath::None"
struct = "svg"
extra_prefixes = ["webkit"]
affects = "paint"
servo_restyle_damage = "repaint"
[clip-rule]
type = "FillRule"
initial = "Default::default()"
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
[color]
type = "ColorPropertyValue"
initial = "crate::color::AbsoluteColor::BLACK"
struct = "inherited_text"
ignored_when_colors_disabled = true
servo_restyle_damage = "repaint"
affects = "paint"
[color-scheme]
type = "ColorScheme"
initial = "specified::color::ColorScheme::normal()"
struct = "inherited_ui"
servo_pref = "layout.unimplemented"
animation_type = "discrete"
ignored_when_colors_disabled = true
affects = "paint"
[column-count]
type = "ColumnCount"
initial = "computed::ColumnCount::Auto"
struct = "column"
initial_specified_value = "specified::ColumnCount::Auto"
servo_pref = "layout.columns.enabled"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[column-gap]
type = "length::NonNegativeLengthPercentageOrNormal"
initial = "computed::length::NonNegativeLengthPercentageOrNormal::normal()"
struct = "position"
aliases = ["grid-column-gap"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[column-rule-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "column"
engine = "gecko"
initial_specified_value = "specified::Color::currentcolor()"
ignored_when_colors_disabled = true
affects = "paint"
[column-rule-style]
type = "BorderStyle"
initial = "computed::BorderStyle::None"
struct = "column"
engine = "gecko"
initial_specified_value = "specified::BorderStyle::None"
animation_type = "discrete"
affects = "paint"
[column-rule-width]
type = "BorderSideWidth"
initial = "computed::BorderSideWidth::medium()"
struct = "column"
engine = "gecko"
initial_specified_value = "specified::BorderSideWidth::medium()"
affects = "layout"
[column-width]
type = "length::NonNegativeLengthOrAuto"
initial = "computed::length::NonNegativeLengthOrAuto::auto()"
struct = "column"
initial_specified_value = "specified::length::NonNegativeLengthOrAuto::auto()"
servo_pref = "layout.columns.enabled"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[contain]
type = "Contain"
initial = "specified::Contain::empty()"
struct = "box"
servo_pref = "layout.unimplemented"
animation_type = "none"
affects = "layout"
[contain-intrinsic-block-size]
type = "ContainIntrinsicSize"
initial = "computed::ContainIntrinsicSize::None"
struct = "position"
engine = "gecko"
logical_group = "contain-intrinsic-size"
logical = true
affects = "layout"
[contain-intrinsic-height]
type = "ContainIntrinsicSize"
initial = "computed::ContainIntrinsicSize::None"
struct = "position"
engine = "gecko"
logical_group = "contain-intrinsic-size"
affects = "layout"
[contain-intrinsic-inline-size]
type = "ContainIntrinsicSize"
initial = "computed::ContainIntrinsicSize::None"
struct = "position"
engine = "gecko"
logical_group = "contain-intrinsic-size"
logical = true
affects = "layout"
[contain-intrinsic-width]
type = "ContainIntrinsicSize"
initial = "computed::ContainIntrinsicSize::None"
struct = "position"
engine = "gecko"
logical_group = "contain-intrinsic-size"
affects = "layout"
[container-name]
type = "ContainerName"
initial = "computed::ContainerName::none()"
struct = "box"
animation_type = "none"
servo_pref = "layout.container-queries.enabled"
affects = ""
[container-type]
type = "ContainerType"
initial = "computed::ContainerType::NORMAL"
struct = "box"
animation_type = "none"
servo_pref = "layout.container-queries.enabled"
affects = "layout"
[content]
type = "Content"
initial = "computed::Content::normal()"
struct = "counters"
initial_specified_value = "specified::Content::normal()"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[content-visibility]
type = "ContentVisibility"
initial = "computed::ContentVisibility::Visible"
struct = "box"
engine = "gecko"
affects = "layout"
[counter-increment]
type = "CounterIncrement"
initial = "Default::default()"
struct = "counters"
servo_pref = "layout.unimplemented"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[counter-reset]
type = "CounterReset"
initial = "Default::default()"
struct = "counters"
servo_pref = "layout.unimplemented"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[counter-set]
type = "CounterSet"
initial = "Default::default()"
struct = "counters"
engine = "gecko"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[cursor]
type = "Cursor"
initial = "computed::Cursor::auto()"
struct = "inherited_ui"
initial_specified_value = "specified::Cursor::auto()"
animation_type = "discrete"
servo_restyle_damage = "repaint"
affects = "paint"
[d]
type = "DProperty"
initial = "specified::DProperty::none()"
struct = "svg"
engine = "gecko"
affects = "layout"
[display]
type = "Display"
initial = "computed::Display::inline()"
struct = "box"
initial_specified_value = "specified::Display::inline()"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[fill]
type = "SVGPaint"
initial = "crate::values::computed::SVGPaint::BLACK"
struct = "inherited_svg"
engine = "gecko"
boxed = true
affects = "paint"
[fill-opacity]
type = "SVGOpacity"
initial = "Default::default()"
struct = "inherited_svg"
engine = "gecko"
affects = "paint"
[fill-rule]
type = "FillRule"
initial = "Default::default()"
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
[filter]
type = "Filter"
struct = "effects"
vector = { simple_bindings = true, separator = "Space", animation_type = "with_zero" }
gecko_ffi_name = "mFilters"
extra_prefixes = ["webkit"]
affects = "overflow"
servo_restyle_damage = "repaint"
[flex-basis]
type = "FlexBasis"
initial = "computed::FlexBasis::auto()"
struct = "position"
extra_prefixes = ["webkit"]
servo_restyle_damage = "rebuild_box"
boxed = true
affects = "layout"
[flex-grow]
type = "NonNegativeNumber"
initial = "From::from(0.0)"
struct = "position"
extra_prefixes = ["webkit"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[flex-shrink]
type = "NonNegativeNumber"
initial = "From::from(1.0)"
struct = "position"
extra_prefixes = ["webkit"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[float]
type = "Float"
initial = "computed::Float::None"
struct = "box"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[flood-color]
type = "Color"
initial = "computed::Color::BLACK"
struct = "svg"
engine = "gecko"
affects = "paint"
[flood-opacity]
type = "Opacity"
initial = "1.0"
struct = "svg"
engine = "gecko"
affects = "paint"
[font-family]
type = "FontFamily"
initial = "computed::FontFamily::serif()"
struct = "font"
animation_type = "discrete"
gecko_ffi_name = "mFont.family"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[font-feature-settings]
type = "FontFeatureSettings"
initial = "computed::FontFeatureSettings::normal()"
struct = "font"
engine = "gecko"
initial_specified_value = "specified::FontFeatureSettings::normal()"
extra_prefixes = ["moz:layout.css.prefixes.font-features", "webkit"]
animation_type = "discrete"
affects = "layout"
[font-language-override]
type = "FontLanguageOverride"
initial = "computed::FontLanguageOverride::normal()"
struct = "font"
initial_specified_value = "specified::FontLanguageOverride::normal()"
animation_type = "discrete"
gecko_ffi_name = "mFont.languageOverride"
extra_prefixes = ["moz:layout.css.prefixes.font-features"]
affects = "layout"
[font-palette]
type = "FontPalette"
initial = "computed::FontPalette::normal()"
struct = "font"
engine = "gecko"
initial_specified_value = "specified::FontPalette::normal()"
animation_type = "discrete"
gecko_pref = "layout.css.font-palette.enabled"
has_effect_on_gecko_scrollbars = false
affects = "layout"
[font-size]
type = "FontSize"
initial = "computed::FontSize::medium()"
struct = "font"
initial_specified_value = "specified::FontSize::medium()"
allow_quirks = true
servo_restyle_damage = "rebuild_box"
affects = "layout"
[font-size-adjust]
type = "FontSizeAdjust"
initial = "computed::FontSizeAdjust::None"
struct = "font"
engine = "gecko"
initial_specified_value = "specified::FontSizeAdjust::None"
gecko_ffi_name = "mFont.sizeAdjust"
affects = "layout"
[font-stretch]
type = "FontStretch"
initial = "computed::FontStretch::hundred()"
struct = "font"
initial_specified_value = "specified::FontStretch::normal()"
gecko_ffi_name = "mFont.stretch"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[font-style]
type = "FontStyle"
initial = "computed::FontStyle::normal()"
struct = "font"
initial_specified_value = "specified::FontStyle::normal()"
gecko_ffi_name = "mFont.style"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[font-synthesis-position]
type = "FontSynthesis"
initial = "computed::FontSynthesis::Auto"
struct = "font"
engine = "gecko"
initial_specified_value = "specified::FontSynthesis::Auto"
gecko_ffi_name = "mFont.synthesisPosition"
animation_type = "discrete"
affects = "layout"
[font-synthesis-small-caps]
type = "FontSynthesis"
initial = "computed::FontSynthesis::Auto"
struct = "font"
engine = "gecko"
initial_specified_value = "specified::FontSynthesis::Auto"
gecko_ffi_name = "mFont.synthesisSmallCaps"
animation_type = "discrete"
affects = "layout"
[font-synthesis-style]
type = "FontSynthesisStyle"
initial = "computed::FontSynthesisStyle::Auto"
struct = "font"
engine = "gecko"
initial_specified_value = "specified::FontSynthesisStyle::Auto"
gecko_ffi_name = "mFont.synthesisStyle"
animation_type = "discrete"
affects = "layout"
[font-synthesis-weight]
type = "FontSynthesis"
initial = "computed::FontSynthesis::Auto"
struct = "font"
initial_specified_value = "specified::FontSynthesis::Auto"
gecko_ffi_name = "mFont.synthesisWeight"
animation_type = "discrete"
affects = "layout"
[font-variant-alternates]
type = "FontVariantAlternates"
initial = "computed::FontVariantAlternates::default()"
struct = "font"
engine = "gecko"
initial_specified_value = "specified::FontVariantAlternates::default()"
animation_type = "discrete"
gecko_ffi_name = "mFont.variantAlternates"
affects = "layout"
[font-variant-east-asian]
type = "FontVariantEastAsian"
initial = "computed::FontVariantEastAsian::empty()"
struct = "font"
engine = "gecko"
initial_specified_value = "specified::FontVariantEastAsian::empty()"
animation_type = "discrete"
gecko_ffi_name = "mFont.variantEastAsian"
affects = "layout"
[font-variant-ligatures]
type = "FontVariantLigatures"
initial = "computed::FontVariantLigatures::empty()"
struct = "font"
engine = "gecko"
initial_specified_value = "specified::FontVariantLigatures::empty()"
animation_type = "discrete"
gecko_ffi_name = "mFont.variantLigatures"
affects = "layout"
[font-variant-numeric]
type = "FontVariantNumeric"
initial = "computed::FontVariantNumeric::empty()"
struct = "font"
engine = "gecko"
initial_specified_value = "specified::FontVariantNumeric::empty()"
animation_type = "discrete"
gecko_ffi_name = "mFont.variantNumeric"
affects = "layout"
[font-variation-settings]
type = "FontVariationSettings"
initial = "computed::FontVariationSettings::normal()"
struct = "font"
servo_pref = "layout.variable_fonts.enabled"
gecko_pref = "layout.css.font-variations.enabled"
has_effect_on_gecko_scrollbars = false
initial_specified_value = "specified::FontVariationSettings::normal()"
affects = "layout"
[font-weight]
type = "FontWeight"
initial = "computed::FontWeight::normal()"
struct = "font"
initial_specified_value = "specified::FontWeight::normal()"
gecko_ffi_name = "mFont.weight"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[grid-auto-columns]
type = "ImplicitGridTracks"
initial = "Default::default()"
struct = "position"
servo_pref = "layout.grid.enabled"
animation_type = "discrete"
affects = "layout"
[grid-auto-flow]
type = "GridAutoFlow"
initial = "computed::GridAutoFlow::ROW"
struct = "position"
servo_pref = "layout.grid.enabled"
animation_type = "discrete"
affects = "layout"
[grid-auto-rows]
type = "ImplicitGridTracks"
initial = "Default::default()"
struct = "position"
servo_pref = "layout.grid.enabled"
animation_type = "discrete"
affects = "layout"
[grid-column-end]
type = "GridLine"
initial = "Default::default()"
struct = "position"
servo_pref = "layout.grid.enabled"
animation_type = "discrete"
affects = "layout"
[grid-column-start]
type = "GridLine"
initial = "Default::default()"
struct = "position"
servo_pref = "layout.grid.enabled"
animation_type = "discrete"
affects = "layout"
[grid-row-end]
type = "GridLine"
initial = "Default::default()"
struct = "position"
servo_pref = "layout.grid.enabled"
animation_type = "discrete"
affects = "layout"
[grid-row-start]
type = "GridLine"
initial = "Default::default()"
struct = "position"
servo_pref = "layout.grid.enabled"
animation_type = "discrete"
affects = "layout"
[grid-template-areas]
type = "GridTemplateAreas"
initial = "computed::GridTemplateAreas::none()"
struct = "position"
servo_pref = "layout.grid.enabled"
animation_type = "discrete"
affects = "layout"
[grid-template-columns]
type = "GridTemplateComponent"
initial = "specified::GenericGridTemplateComponent::None"
struct = "position"
servo_pref = "layout.grid.enabled"
affects = "layout"
[grid-template-rows]
type = "GridTemplateComponent"
initial = "specified::GenericGridTemplateComponent::None"
struct = "position"
servo_pref = "layout.grid.enabled"
affects = "layout"
[height]
type = "Size"
initial = "computed::Size::auto()"
struct = "position"
logical_group = "size"
allow_quirks = true
parse_method = "parse_size_for_width_or_height"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[image-rendering]
type = "ImageRendering"
initial = "computed::ImageRendering::Auto"
struct = "inherited_box"
animation_type = "discrete"
affects = "paint"
[inline-size]
type = "Size"
initial = "computed::Size::auto()"
struct = "position"
logical = true
logical_group = "size"
parse_method = "parse_size_for_width_or_height"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[inset-block-end]
type = "Inset"
initial = "computed::Inset::auto()"
struct = "position"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
logical = true
logical_group = "inset"
affects = "layout"
[inset-block-start]
type = "Inset"
initial = "computed::Inset::auto()"
struct = "position"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
logical = true
logical_group = "inset"
affects = "layout"
[inset-inline-end]
type = "Inset"
initial = "computed::Inset::auto()"
struct = "position"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
logical = true
logical_group = "inset"
affects = "layout"
[inset-inline-start]
type = "Inset"
initial = "computed::Inset::auto()"
struct = "position"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
logical = true
logical_group = "inset"
affects = "layout"
[justify-content]
type = "ContentDistribution"
initial = "specified::ContentDistribution::normal()"
struct = "position"
parse_method = "parse_inline"
extra_prefixes = ["webkit"]
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[justify-items]
type = "JustifyItems"
initial = "computed::JustifyItems::legacy()"
struct = "position"
animation_type = "discrete"
affects = "layout"
[justify-self]
type = "SelfAlignment"
initial = "specified::SelfAlignment::auto()"
struct = "position"
parse_method = "parse_inline"
animation_type = "discrete"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
affects = "layout"
[left]
type = "Inset"
initial = "computed::Inset::auto()"
struct = "position"
allow_quirks = true
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
gecko_ffi_name = "mOffset.3"
servo_restyle_damage = "rebuild_box"
logical_group = "inset"
affects = "layout"
[letter-spacing]
type = "LetterSpacing"
initial = "computed::LetterSpacing::normal()"
struct = "inherited_text"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[lighting-color]
type = "Color"
initial = "computed::Color::WHITE"
struct = "svg"
engine = "gecko"
affects = "paint"
[line-height]
type = "LineHeight"
initial = "computed::LineHeight::normal()"
struct = "font"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[list-style-image]
type = "Image"
initial = "computed::Image::None"
struct = "list"
initial_specified_value = "specified::Image::None"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[list-style-type]
type = "ListStyleType"
initial = "computed::ListStyleType::disc()"
struct = "list"
engine = "gecko"
initial_specified_value = "specified::ListStyleType::disc()"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[marker-end]
type = "url::UrlOrNone"
initial = "computed::url::UrlOrNone::none()"
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[marker-mid]
type = "url::UrlOrNone"
initial = "computed::url::UrlOrNone::none()"
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[marker-start]
type = "url::UrlOrNone"
initial = "computed::url::UrlOrNone::none()"
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[masonry-auto-flow]
type = "MasonryAutoFlow"
initial = "computed::MasonryAutoFlow::initial()"
struct = "position"
engine = "gecko"
gecko_pref = "layout.css.grid-template-masonry-value.enabled"
animation_type = "discrete"
affects = "layout"
[math-depth]
type = "MathDepth"
initial = "0"
struct = "font"
engine = "gecko"
affects = ""
[max-block-size]
type = "MaxSize"
initial = "computed::MaxSize::none()"
struct = "position"
logical = true
logical_group = "max-size"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[max-height]
type = "MaxSize"
initial = "computed::MaxSize::none()"
struct = "position"
logical_group = "max-size"
allow_quirks = true
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[max-inline-size]
type = "MaxSize"
initial = "computed::MaxSize::none()"
struct = "position"
logical = true
logical_group = "max-size"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[max-width]
type = "MaxSize"
initial = "computed::MaxSize::none()"
struct = "position"
logical_group = "max-size"
allow_quirks = true
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[min-block-size]
type = "Size"
initial = "computed::Size::auto()"
struct = "position"
logical = true
logical_group = "min-size"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[min-height]
type = "Size"
initial = "computed::Size::auto()"
struct = "position"
logical_group = "min-size"
allow_quirks = true
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[min-inline-size]
type = "Size"
initial = "computed::Size::auto()"
struct = "position"
logical = true
logical_group = "min-size"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[min-width]
type = "Size"
initial = "computed::Size::auto()"
struct = "position"
logical_group = "min-size"
allow_quirks = true
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[object-position]
type = "Position"
initial = "computed::Position::center()"
struct = "position"
boxed = true
affects = "layout"
[offset-anchor]
type = "PositionOrAuto"
initial = "computed::PositionOrAuto::auto()"
struct = "box"
engine = "gecko"
flags = "CAN_ANIMATE_ON_COMPOSITOR"
servo_restyle_damage = "rebuild_box"
boxed = true
affects = "overflow"
[offset-distance]
type = "LengthPercentage"
initial = "computed::LengthPercentage::zero()"
struct = "box"
engine = "gecko"
flags = "CAN_ANIMATE_ON_COMPOSITOR"
servo_restyle_damage = "rebuild_box"
affects = "overflow"
[offset-path]
type = "OffsetPath"
initial = "computed::OffsetPath::none()"
struct = "box"
servo_pref = "layout.unimplemented"
flags = "CAN_ANIMATE_ON_COMPOSITOR"
servo_restyle_damage = "rebuild_box"
affects = "overflow"
[offset-position]
type = "OffsetPosition"
initial = "computed::OffsetPosition::normal()"
struct = "box"
engine = "gecko"
flags = "CAN_ANIMATE_ON_COMPOSITOR"
servo_restyle_damage = "rebuild_box"
boxed = true
affects = "overflow"
[offset-rotate]
type = "OffsetRotate"
initial = "computed::OffsetRotate::auto()"
struct = "box"
engine = "gecko"
flags = "CAN_ANIMATE_ON_COMPOSITOR"
servo_restyle_damage = "rebuild_box"
affects = "overflow"
[opacity]
type = "Opacity"
initial = "1.0"
struct = "effects"
flags = "CAN_ANIMATE_ON_COMPOSITOR"
servo_restyle_damage = "repaint"
affects = "paint"
[order]
type = "Integer"
initial = "0"
struct = "position"
extra_prefixes = ["webkit"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[outline-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "outline"
initial_specified_value = "specified::Color::currentcolor()"
ignored_when_colors_disabled = true
servo_restyle_damage = "repaint"
affects = "paint"
[outline-offset]
type = "BorderSideOffset"
initial = "app_units::Au(0)"
struct = "outline"
servo_restyle_damage = "repaint"
affects = "overflow"
[outline-style]
type = "OutlineStyle"
initial = "computed::OutlineStyle::none()"
struct = "outline"
initial_specified_value = "specified::OutlineStyle::none()"
animation_type = "discrete"
servo_restyle_damage = "repaint"
affects = "overflow"
[outline-width]
type = "BorderSideWidth"
initial = "computed::BorderSideWidth::medium()"
struct = "outline"
initial_specified_value = "specified::BorderSideWidth::medium()"
servo_restyle_damage = "repaint"
affects = "overflow"
[overflow-anchor]
type = "OverflowAnchor"
initial = "computed::OverflowAnchor::Auto"
struct = "box"
engine = "gecko"
initial_specified_value = "specified::OverflowAnchor::Auto"
gecko_pref = "layout.css.scroll-anchoring.enabled"
animation_type = "discrete"
affects = ""
[overflow-block]
type = "Overflow"
initial = "computed::Overflow::Visible"
struct = "box"
logical_group = "overflow"
logical = true
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[overflow-clip-margin]
type = "OverflowClipMargin"
initial = "computed::OverflowClipMargin::zero()"
struct = "margin"
affects = "overflow"
[overflow-inline]
type = "Overflow"
initial = "computed::Overflow::Visible"
struct = "box"
logical_group = "overflow"
logical = true
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[overflow-wrap]
type = "OverflowWrap"
initial = "computed::OverflowWrap::Normal"
struct = "inherited_text"
animation_type = "discrete"
aliases = ["word-wrap"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[overflow-x]
type = "Overflow"
initial = "computed::Overflow::Visible"
struct = "box"
logical_group = "overflow"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[overflow-y]
type = "Overflow"
initial = "computed::Overflow::Visible"
struct = "box"
logical_group = "overflow"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[overscroll-behavior-block]
type = "OverscrollBehavior"
initial = "computed::OverscrollBehavior::Auto"
struct = "box"
engine = "gecko"
logical_group = "overscroll-behavior"
logical = true
animation_type = "discrete"
affects = "paint"
[overscroll-behavior-inline]
type = "OverscrollBehavior"
initial = "computed::OverscrollBehavior::Auto"
struct = "box"
engine = "gecko"
logical_group = "overscroll-behavior"
logical = true
animation_type = "discrete"
affects = "paint"
[overscroll-behavior-x]
type = "OverscrollBehavior"
initial = "computed::OverscrollBehavior::Auto"
struct = "box"
engine = "gecko"
logical_group = "overscroll-behavior"
animation_type = "discrete"
affects = "paint"
[overscroll-behavior-y]
type = "OverscrollBehavior"
initial = "computed::OverscrollBehavior::Auto"
struct = "box"
engine = "gecko"
logical_group = "overscroll-behavior"
animation_type = "discrete"
affects = "paint"
[page]
type = "PageName"
initial = "computed::PageName::auto()"
struct = "page"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[page-orientation]
type = "PageOrientation"
initial = "computed::PageOrientation::Upright"
struct = "page"
engine = "gecko"
initial_specified_value = "specified::PageOrientation::Upright"
animation_type = "none"
rule_types_allowed = ["page"]
affects = "layout"
[paint-order]
type = "SVGPaintOrder"
initial = "computed::SVGPaintOrder::normal()"
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
[-moz-context-properties]
type = "MozContextProperties"
initial = "computed::MozContextProperties::default()"
struct = "inherited_svg"
engine = "gecko"
enabled_in = "chrome"
gecko_pref = "svg.context-properties.content.enabled"
has_effect_on_gecko_scrollbars = false
animation_type = "none"
affects = "paint"
[perspective]
type = "Perspective"
initial = "computed::Perspective::none()"
struct = "box"
gecko_ffi_name = "mChildPerspective"
extra_prefixes = ["moz:layout.css.prefixes.transforms"]
servo_restyle_damage = "recalculate_overflow"
affects = "overflow"
[perspective-origin]
type = "Position"
initial = "computed::position::Position::center()"
struct = "box"
boxed = true
extra_prefixes = ["moz:layout.css.prefixes.transforms", "webkit"]
servo_restyle_damage = "recalculate_overflow"
affects = "overflow"
[pointer-events]
type = "PointerEvents"
initial = "specified::PointerEvents::Auto"
struct = "inherited_ui"
animation_type = "discrete"
servo_restyle_damage = "repaint"
affects = "paint"
[position]
type = "PositionProperty"
initial = "computed::PositionProperty::Static"
struct = "box"
initial_specified_value = "specified::PositionProperty::Static"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[position-anchor]
type = "PositionAnchor"
initial = "computed::PositionAnchor::none()"
struct = "position"
engine = "gecko"
animation_type = "discrete"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
gecko_pref = "layout.css.anchor-positioning.enabled"
affects = "layout"
[position-area]
type = "PositionArea"
initial = "computed::PositionArea::none()"
struct = "position"
initial_specified_value = "specified::PositionArea::none()"
animation_type = "discrete"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
gecko_pref = "layout.css.anchor-positioning.enabled"
servo_pref = "layout.unimplemented"
affects = "layout"
[position-try-fallbacks]
type = "PositionTryFallbacks"
initial = "computed::PositionTryFallbacks::none()"
struct = "position"
engine = "gecko"
initial_specified_value = "specified::PositionTryFallbacks::none()"
animation_type = "discrete"
gecko_pref = "layout.css.anchor-positioning.enabled"
affects = "layout"
[position-try-order]
type = "PositionTryOrder"
initial = "computed::PositionTryOrder::normal()"
struct = "position"
engine = "gecko"
initial_specified_value = "specified::PositionTryOrder::normal()"
animation_type = "discrete"
gecko_pref = "layout.css.anchor-positioning.position-try-order.enabled"
affects = "layout"
[position-visibility]
type = "PositionVisibility"
initial = "computed::PositionVisibility::ANCHORS_VISIBLE"
struct = "position"
engine = "gecko"
initial_specified_value = "specified::PositionVisibility::ANCHORS_VISIBLE"
animation_type = "discrete"
gecko_pref = "layout.css.anchor-positioning.enabled"
affects = "layout"
[print-color-adjust]
type = "PrintColorAdjust"
initial = "computed::PrintColorAdjust::Economy"
struct = "inherited_box"
engine = "gecko"
aliases = ["color-adjust"]
animation_type = "discrete"
affects = "paint"
[quotes]
type = "Quotes"
initial = "computed::Quotes::get_initial_value()"
struct = "list"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[resize]
type = "Resize"
initial = "computed::Resize::None"
struct = "box"
engine = "gecko"
animation_type = "discrete"
gecko_ffi_name = "mResize"
affects = "layout"
[right]
type = "Inset"
initial = "computed::Inset::auto()"
struct = "position"
allow_quirks = true
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
gecko_ffi_name = "mOffset.1"
servo_restyle_damage = "rebuild_box"
logical_group = "inset"
affects = "layout"
[rotate]
type = "Rotate"
initial = "generics::transform::Rotate::None"
struct = "box"
boxed = true
flags = "CAN_ANIMATE_ON_COMPOSITOR"
servo_restyle_damage = "recalculate_overflow"
affects = "overflow"
[row-gap]
type = "length::NonNegativeLengthPercentageOrNormal"
initial = "computed::length::NonNegativeLengthPercentageOrNormal::normal()"
struct = "position"
aliases = ["grid-row-gap"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[scale]
type = "Scale"
initial = "generics::transform::Scale::None"
struct = "box"
boxed = true
flags = "CAN_ANIMATE_ON_COMPOSITOR"
servo_restyle_damage = "recalculate_overflow"
affects = "overflow"
[scroll-snap-align]
type = "ScrollSnapAlign"
initial = "computed::ScrollSnapAlign::none()"
struct = "box"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
[scroll-snap-stop]
type = "ScrollSnapStop"
initial = "computed::ScrollSnapStop::Normal"
struct = "box"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
[scroll-snap-type]
type = "ScrollSnapType"
initial = "computed::ScrollSnapType::none()"
struct = "box"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
[scrollbar-color]
type = "ScrollbarColor"
initial = "Default::default()"
struct = "inherited_ui"
engine = "gecko"
boxed = true
ignored_when_colors_disabled = true
affects = "paint"
[-moz-inert]
type = "Inert"
initial = "specified::Inert::None"
struct = "inherited_ui"
engine = "gecko"
gecko_ffi_name = "mInert"
animation_type = "discrete"
enabled_in = "ua"
affects = "paint"
[-moz-user-focus]
type = "UserFocus"
initial = "specified::UserFocus::Normal"
struct = "inherited_ui"
engine = "gecko"
gecko_ffi_name = "mUserFocus"
animation_type = "discrete"
enabled_in = "chrome"
affects = ""
[-moz-theme]
type = "MozTheme"
initial = "specified::MozTheme::Auto"
struct = "inherited_ui"
engine = "gecko"
enabled_in = "chrome"
animation_type = "discrete"
spec = "Internal"
affects = "paint"
[scrollbar-gutter]
type = "ScrollbarGutter"
initial = "computed::ScrollbarGutter::AUTO"
struct = "box"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[shape-image-threshold]
type = "Opacity"
initial = "0.0"
struct = "box"
engine = "gecko"
affects = "layout"
[shape-margin]
type = "NonNegativeLengthPercentage"
initial = "computed::NonNegativeLengthPercentage::zero()"
struct = "box"
engine = "gecko"
affects = "layout"
[shape-outside]
type = "basic_shape::ShapeOutside"
initial = "generics::basic_shape::ShapeOutside::None"
struct = "box"
engine = "gecko"
affects = "layout"
[size]
type = "PageSize"
initial = "computed::PageSize::auto()"
struct = "page"
engine = "gecko"
initial_specified_value = "specified::PageSize::auto()"
boxed = true
animation_type = "none"
rule_types_allowed = ["page"]
affects = "layout"
[stop-color]
type = "Color"
initial = "computed::Color::BLACK"
struct = "svg"
engine = "gecko"
affects = "paint"
[stop-opacity]
type = "Opacity"
initial = "1.0"
struct = "svg"
engine = "gecko"
affects = "paint"
[stroke]
type = "SVGPaint"
initial = "Default::default()"
struct = "inherited_svg"
engine = "gecko"
boxed = true
affects = "paint"
[stroke-dasharray]
type = "SVGStrokeDashArray"
initial = "Default::default()"
struct = "inherited_svg"
engine = "gecko"
affects = "paint"
[stroke-dashoffset]
type = "SVGLength"
initial = "computed::SVGLength::zero()"
struct = "inherited_svg"
engine = "gecko"
affects = "paint"
[stroke-miterlimit]
type = "NonNegativeNumber"
initial = "From::from(4.0)"
struct = "inherited_svg"
engine = "gecko"
affects = "layout"
[stroke-opacity]
type = "SVGOpacity"
initial = "Default::default()"
struct = "inherited_svg"
engine = "gecko"
affects = "paint"
[stroke-width]
type = "SVGWidth"
initial = "computed::SVGWidth::one()"
struct = "inherited_svg"
engine = "gecko"
affects = "layout"
[text-align]
type = "TextAlign"
initial = "computed::TextAlign::Start"
struct = "inherited_text"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[text-align-last]
type = "TextAlignLast"
initial = "computed::text::TextAlignLast::Auto"
struct = "inherited_text"
animation_type = "discrete"
affects = "layout"
[text-indent]
type = "TextIndent"
initial = "computed::TextIndent::zero()"
struct = "inherited_text"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[text-justify]
type = "TextJustify"
initial = "computed::TextJustify::Auto"
struct = "inherited_text"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[text-shadow]
type = "SimpleShadow"
struct = "inherited_text"
vector = { simple_bindings = true, animation_type = "with_zero" }
ignored_when_colors_disabled = true
servo_restyle_damage = "repaint"
affects = "overflow"
[text-transform]
type = "TextTransform"
initial = "computed::TextTransform::none()"
struct = "inherited_text"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[top]
type = "Inset"
initial = "computed::Inset::auto()"
struct = "position"
allow_quirks = true
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
gecko_ffi_name = "mOffset.0"
servo_restyle_damage = "rebuild_box"
logical_group = "inset"
affects = "layout"
[touch-action]
type = "TouchAction"
initial = "computed::TouchAction::auto()"
struct = "box"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
[transform]
type = "Transform"
initial = "generics::transform::Transform::none()"
struct = "box"
extra_prefixes = ["moz:layout.css.prefixes.transforms"]
flags = "CAN_ANIMATE_ON_COMPOSITOR"
servo_restyle_damage = "recalculate_overflow"
affects = "overflow"
[transform-box]
type = "TransformBox"
initial = "computed::TransformBox::ViewBox"
struct = "box"
engine = "gecko"
animation_type = "discrete"
affects = "overflow"
[transform-origin]
type = "TransformOrigin"
initial = "computed::TransformOrigin::initial_value()"
struct = "box"
extra_prefixes = ["moz:layout.css.prefixes.transforms", "webkit"]
gecko_ffi_name = "mTransformOrigin"
boxed = true
servo_restyle_damage = "recalculate_overflow"
affects = "overflow"
[transform-style]
type = "TransformStyle"
initial = "computed::TransformStyle::Flat"
struct = "box"
extra_prefixes = ["moz:layout.css.prefixes.transforms", "webkit"]
animation_type = "discrete"
servo_restyle_damage = "recalculate_overflow"
affects = "overflow"
[transition-behavior]
type = "TransitionBehavior"
initial = "computed::TransitionBehavior::normal()"
struct = "ui"
initial_specified_value = "specified::TransitionBehavior::normal()"
vector = { need_index = true }
animation_type = "none"
affects = ""
[transition-delay]
type = "Time"
initial = "computed::Time::zero()"
struct = "ui"
initial_specified_value = "specified::Time::zero()"
vector = { need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.transitions", "webkit"]
affects = ""
[transition-duration]
type = "Time"
initial = "computed::Time::zero()"
struct = "ui"
initial_specified_value = "specified::Time::zero()"
parse_method = "parse_non_negative"
vector = { need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.transitions", "webkit"]
affects = ""
[transition-property]
type = "TransitionProperty"
initial = "computed::TransitionProperty::all()"
struct = "ui"
initial_specified_value = "specified::TransitionProperty::all()"
vector = { none_value = "computed::TransitionProperty::none()", need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.transitions", "webkit"]
affects = ""
[transition-timing-function]
type = "TimingFunction"
initial = "computed::TimingFunction::ease()"
struct = "ui"
initial_specified_value = "specified::TimingFunction::ease()"
vector = { need_index = true }
animation_type = "none"
extra_prefixes = ["moz:layout.css.prefixes.transitions", "webkit"]
affects = ""
[translate]
type = "Translate"
initial = "generics::transform::Translate::None"
struct = "box"
boxed = true
flags = "CAN_ANIMATE_ON_COMPOSITOR"
servo_restyle_damage = "recalculate_overflow"
affects = "overflow"
[user-select]
type = "UserSelect"
initial = "computed::UserSelect::Auto"
struct = "ui"
engine = "gecko"
extra_prefixes = ["moz", "webkit"]
animation_type = "discrete"
affects = ""
[-moz-force-broken-image-icon]
type = "BoolInteger"
initial = "computed::BoolInteger::zero()"
struct = "ui"
engine = "gecko"
animation_type = "discrete"
spec = "None (Nonstandard Firefox-only property)"
affects = "layout"
[-moz-subtree-hidden-only-visually]
type = "BoolInteger"
initial = "computed::BoolInteger::zero()"
struct = "ui"
engine = "gecko"
animation_type = "discrete"
spec = "None (Nonstandard internal property)"
enabled_in = "chrome"
affects = "paint"
[-moz-window-input-region-margin]
type = "Length"
initial = "computed::Length::zero()"
struct = "ui"
engine = "gecko"
spec = "None (Nonstandard internal property)"
enabled_in = "chrome"
affects = ""
[-moz-window-opacity]
type = "Opacity"
initial = "1.0"
struct = "ui"
engine = "gecko"
gecko_ffi_name = "mWindowOpacity"
spec = "None (Nonstandard internal property)"
enabled_in = "chrome"
affects = "paint"
[-moz-window-transform]
type = "Transform"
initial = "generics::transform::Transform::none()"
struct = "ui"
engine = "gecko"
spec = "None (Nonstandard internal property)"
enabled_in = "chrome"
affects = "overflow"
[animation-composition]
type = "AnimationComposition"
initial = "computed::AnimationComposition::Replace"
struct = "ui"
initial_specified_value = "computed::AnimationComposition::Replace"
vector = { need_index = true }
animation_type = "none"
servo_pref = "layout.unimplemented"
affects = ""
[scroll-timeline-axis]
type = "ScrollAxis"
initial = "computed::ScrollAxis::default()"
struct = "ui"
engine = "gecko"
vector = { need_index = true }
animation_type = "none"
gecko_pref = "layout.css.scroll-driven-animations.enabled"
rule_types_allowed = ["style", "scope"]
affects = ""
[scroll-timeline-name]
type = "TimelineName"
initial = "computed::TimelineName::none()"
struct = "ui"
engine = "gecko"
vector = { need_index = true }
animation_type = "none"
gecko_pref = "layout.css.scroll-driven-animations.enabled"
rule_types_allowed = ["style", "scope"]
affects = ""
[view-timeline-axis]
type = "ScrollAxis"
initial = "computed::ScrollAxis::default()"
struct = "ui"
engine = "gecko"
vector = { need_index = true }
animation_type = "none"
gecko_pref = "layout.css.scroll-driven-animations.enabled"
rule_types_allowed = ["style", "scope"]
affects = ""
[view-timeline-inset]
type = "ViewTimelineInset"
initial = "computed::ViewTimelineInset::default()"
struct = "ui"
engine = "gecko"
vector = { need_index = true }
animation_type = "none"
gecko_pref = "layout.css.scroll-driven-animations.enabled"
rule_types_allowed = ["style", "scope"]
affects = ""
[view-timeline-name]
type = "TimelineName"
initial = "computed::TimelineName::none()"
struct = "ui"
engine = "gecko"
vector = { need_index = true }
animation_type = "none"
gecko_pref = "layout.css.scroll-driven-animations.enabled"
rule_types_allowed = ["style", "scope"]
affects = ""
[view-transition-class]
type = "ViewTransitionClass"
initial = "computed::ViewTransitionClass::none()"
struct = "ui"
servo_pref = "layout.unimplemented"
animation_type = "discrete"
gecko_pref = "dom.viewTransitions.enabled"
affects = ""
enabled_in = "ua"
[view-transition-name]
type = "ViewTransitionName"
initial = "computed::ViewTransitionName::none()"
struct = "ui"
servo_pref = "layout.unimplemented"
animation_type = "discrete"
gecko_pref = "dom.viewTransitions.enabled"
affects = ""
enabled_in = "ua"
[vector-effect]
type = "VectorEffect"
initial = "computed::VectorEffect::none()"
struct = "svg"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[cx]
type = "LengthPercentage"
initial = "computed::LengthPercentage::zero()"
struct = "svg"
engine = "gecko"
affects = "layout"
[cy]
type = "LengthPercentage"
initial = "computed::LengthPercentage::zero()"
struct = "svg"
engine = "gecko"
affects = "layout"
[mask-image]
type = "Image"
initial = "computed::Image::None"
struct = "svg"
servo_pref = "layout.unimplemented"
initial_specified_value = "specified::Image::None"
parse_method = "parse_with_cors_anonymous"
vector = {}
extra_prefixes = ["webkit"]
animation_type = "discrete"
affects = "paint"
[mask-position-x]
type = "position::HorizontalPosition"
initial = "computed::LengthPercentage::zero_percent()"
struct = "svg"
engine = "gecko"
extra_prefixes = ["webkit"]
initial_specified_value = "specified::PositionComponent::Center"
vector = { animation_type = "repeatable_list" }
affects = "paint"
[mask-position-y]
type = "position::VerticalPosition"
initial = "computed::LengthPercentage::zero_percent()"
struct = "svg"
engine = "gecko"
extra_prefixes = ["webkit"]
initial_specified_value = "specified::PositionComponent::Center"
vector = { animation_type = "repeatable_list" }
affects = "paint"
[mask-repeat]
type = "BackgroundRepeat"
initial = "computed::BackgroundRepeat::repeat()"
struct = "svg"
engine = "gecko"
initial_specified_value = "specified::BackgroundRepeat::repeat()"
extra_prefixes = ["webkit"]
animation_type = "discrete"
vector = {}
affects = "paint"
[mask-size]
type = "background::BackgroundSize"
initial = "computed::BackgroundSize::auto()"
struct = "svg"
engine = "gecko"
initial_specified_value = "specified::BackgroundSize::auto()"
extra_prefixes = ["webkit"]
vector = { animation_type = "repeatable_list" }
affects = "paint"
[r]
type = "NonNegativeLengthPercentage"
initial = "computed::NonNegativeLengthPercentage::zero()"
struct = "svg"
engine = "gecko"
affects = "layout"
[rx]
type = "NonNegativeLengthPercentageOrAuto"
initial = "computed::NonNegativeLengthPercentageOrAuto::auto()"
struct = "svg"
engine = "gecko"
affects = "layout"
[ry]
type = "NonNegativeLengthPercentageOrAuto"
initial = "computed::NonNegativeLengthPercentageOrAuto::auto()"
struct = "svg"
engine = "gecko"
affects = "layout"
[x]
type = "LengthPercentage"
initial = "computed::LengthPercentage::zero()"
struct = "svg"
engine = "gecko"
affects = "layout"
[y]
type = "LengthPercentage"
initial = "computed::LengthPercentage::zero()"
struct = "svg"
engine = "gecko"
affects = "layout"
[width]
type = "Size"
initial = "computed::Size::auto()"
struct = "position"
logical_group = "size"
allow_quirks = true
parse_method = "parse_size_for_width_or_height"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[will-change]
type = "WillChange"
initial = "computed::WillChange::auto()"
struct = "box"
animation_type = "none"
affects = "layout"
[word-break]
type = "WordBreak"
initial = "computed::WordBreak::Normal"
struct = "inherited_text"
animation_type = "discrete"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[word-spacing]
type = "WordSpacing"
initial = "computed::WordSpacing::zero()"
struct = "inherited_text"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[-moz-control-character-visibility]
type = "text::MozControlCharacterVisibility"
initial = "Default::default()"
struct = "inherited_text"
engine = "gecko"
enabled_in = "chrome"
gecko_pref = "layout.css.moz-control-character-visibility.enabled"
has_effect_on_gecko_scrollbars = false
animation_type = "none"
spec = "Nonstandard"
affects = "layout"
[-webkit-text-fill-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "inherited_text"
engine = "gecko"
ignored_when_colors_disabled = true
affects = "paint"
[-webkit-text-stroke-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "inherited_text"
engine = "gecko"
initial_specified_value = "specified::Color::currentcolor()"
ignored_when_colors_disabled = true
affects = "paint"
[-webkit-text-stroke-width]
type = "LineWidth"
initial = "app_units::Au(0)"
struct = "inherited_text"
engine = "gecko"
initial_specified_value = "specified::LineWidth::zero()"
animation_type = "discrete"
affects = "overflow"
[forced-color-adjust]
type = "ForcedColorAdjust"
initial = "computed::ForcedColorAdjust::Auto"
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
[hyphenate-character]
type = "HyphenateCharacter"
initial = "computed::HyphenateCharacter::Auto"
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[hyphenate-limit-chars]
type = "HyphenateLimitChars"
initial = "computed::HyphenateLimitChars::auto()"
struct = "inherited_text"
engine = "gecko"
affects = "layout"
boxed = true
[line-break]
type = "LineBreak"
initial = "computed::LineBreak::Auto"
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[ruby-position]
type = "RubyPosition"
initial = "computed::RubyPosition::AlternateOver"
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
[tab-size]
type = "NonNegativeLengthOrNumber"
initial = "generics::length::LengthOrNumber::Number(From::from(8.0))"
struct = "inherited_text"
engine = "gecko"
aliases = ["-moz-tab-size"]
affects = "layout"
[text-autospace]
type = "TextAutospace"
initial = "computed::text::TextAutospace::NO_AUTOSPACE"
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
gecko_pref = "layout.css.text-autospace.enabled"
has_effect_on_gecko_scrollbars = false
affects = "layout"
[text-box-edge]
type = "TextBoxEdge"
initial = "computed::TextBoxEdge::Auto"
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
gecko_pref = "layout.css.text-box.enabled"
has_effect_on_gecko_scrollbars = false
affects = "layout"
[text-box-trim]
type = "TextBoxTrim"
initial = "computed::TextBoxTrim::none()"
struct = "text"
engine = "gecko"
animation_type = "discrete"
gecko_pref = "layout.css.text-box.enabled"
has_effect_on_gecko_scrollbars = false
affects = "layout"
[text-decoration-skip-ink]
type = "TextDecorationSkipInk"
initial = "computed::TextDecorationSkipInk::Auto"
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
affects = "overflow"
[text-emphasis-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "inherited_text"
engine = "gecko"
initial_specified_value = "specified::Color::currentcolor()"
ignored_when_colors_disabled = true
affects = "paint"
[text-emphasis-position]
type = "TextEmphasisPosition"
initial = "computed::TextEmphasisPosition::AUTO"
struct = "inherited_text"
engine = "gecko"
initial_specified_value = "specified::TextEmphasisPosition::AUTO"
animation_type = "discrete"
affects = "layout"
[text-emphasis-style]
type = "TextEmphasisStyle"
initial = "computed::TextEmphasisStyle::None"
struct = "inherited_text"
engine = "gecko"
initial_specified_value = "SpecifiedValue::None"
animation_type = "discrete"
affects = "overflow"
[text-underline-offset]
type = "LengthPercentageOrAuto"
initial = "computed::LengthPercentageOrAuto::auto()"
struct = "inherited_text"
engine = "gecko"
affects = "overflow"
[text-underline-position]
type = "TextUnderlinePosition"
initial = "computed::TextUnderlinePosition::AUTO"
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
affects = "overflow"
[writing-mode]
type = "WritingModeProperty"
initial = "computed::WritingModeProperty::HorizontalTb"
struct = "inherited_box"
servo_pref = "layout.writing-mode.enabled"
animation_type = "none"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[z-index]
type = "ZIndex"
initial = "computed::ZIndex::auto()"
struct = "position"
affects = "paint"
servo_restyle_damage = "rebuild_stacking_context"
[zoom]
type = "Zoom"
initial = "computed::box_::Zoom::ONE"
struct = "box"
spec = "Non-standard (https://github.com/atanassov/css-zoom/ is the closest)"
gecko_pref = "layout.css.zoom.enabled"
servo_pref = "layout.unimplemented"
affects = "layout"
enabled_in = "chrome"
[border-image-outset]
type = "NonNegativeLengthOrNumberRect"
initial = "generics::rect::Rect::all(computed::NonNegativeLengthOrNumber::zero())"
struct = "border"
initial_specified_value = "generics::rect::Rect::all(specified::NonNegativeLengthOrNumber::zero())"
boxed = true
servo_restyle_damage = "repaint"
affects = "paint"
[border-image-repeat]
type = "BorderImageRepeat"
initial = "computed::BorderImageRepeat::stretch()"
struct = "border"
initial_specified_value = "specified::BorderImageRepeat::stretch()"
animation_type = "discrete"
servo_restyle_damage = "repaint"
affects = "paint"
[border-image-slice]
type = "BorderImageSlice"
initial = "computed::BorderImageSlice::hundred_percent()"
struct = "border"
initial_specified_value = "specified::BorderImageSlice::hundred_percent()"
boxed = true
servo_restyle_damage = "repaint"
affects = "paint"
[border-image-source]
type = "Image"
initial = "computed::Image::None"
struct = "border"
initial_specified_value = "specified::Image::None"
animation_type = "discrete"
ignored_when_colors_disabled = true
servo_restyle_damage = "repaint"
affects = "paint"
[border-image-width]
type = "BorderImageWidth"
initial = "computed::BorderImageWidth::all(computed::BorderImageSideWidth::one())"
struct = "border"
initial_specified_value = "specified::BorderImageWidth::all(specified::BorderImageSideWidth::one())"
boxed = true
servo_restyle_damage = "repaint"
affects = "paint"
[text-overflow]
type = "TextOverflow"
initial = "computed::TextOverflow::get_initial_value()"
struct = "text"
servo_pref = "layout.unimplemented"
animation_type = "discrete"
boxed = true
servo_restyle_damage = "rebuild_box"
affects = "paint"
[text-decoration-line]
type = "TextDecorationLine"
initial = "specified::TextDecorationLine::none()"
struct = "text"
initial_specified_value = "specified::TextDecorationLine::none()"
animation_type = "discrete"
servo_restyle_damage = "recalculate_overflow"
affects = "overflow"
[text-decoration-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "text"
initial_specified_value = "specified::Color::currentcolor()"
ignored_when_colors_disabled = true
servo_restyle_damage = "recalculate_overflow"
affects = "paint"
[text-decoration-inset]
type = "TextDecorationInset"
initial = "computed::text::TextDecorationInset::get_initial_value()"
struct = "text"
engine = "gecko"
initial_specified_value = "specified::text::TextDecorationInset::get_initial_value()"
boxed = true
gecko_pref = "layout.css.text-decoration-inset.enabled"
affects = "overflow"
[initial-letter]
type = "InitialLetter"
initial = "computed::InitialLetter::normal()"
struct = "text"
engine = "gecko"
initial_specified_value = "specified::InitialLetter::normal()"
animation_type = "discrete"
gecko_pref = "layout.css.initial-letter.enabled"
affects = "layout"
[text-decoration-thickness]
type = "TextDecorationLength"
initial = "generics::text::GenericTextDecorationLength::Auto"
struct = "text"
engine = "gecko"
initial_specified_value = "generics::text::GenericTextDecorationLength::Auto"
affects = "overflow"
[-x-span]
type = "Integer"
initial = "1"
struct = "table"
engine = "gecko"
spec = "Internal-only (for `<col span>` pres attr)"
animation_type = "none"
enabled_in = ""
affects = "layout"
[border-top-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "border"
logical_group = "border-color"
allow_quirks = true
ignored_when_colors_disabled = true
affects = "paint"
[border-right-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "border"
logical_group = "border-color"
allow_quirks = true
ignored_when_colors_disabled = true
affects = "paint"
[border-bottom-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "border"
logical_group = "border-color"
allow_quirks = true
ignored_when_colors_disabled = true
affects = "paint"
[border-left-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "border"
logical_group = "border-color"
allow_quirks = true
ignored_when_colors_disabled = true
affects = "paint"
[border-block-start-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "border"
logical = true
logical_group = "border-color"
ignored_when_colors_disabled = true
affects = "paint"
[border-block-end-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "border"
logical = true
logical_group = "border-color"
ignored_when_colors_disabled = true
affects = "paint"
[border-inline-start-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "border"
aliases = ["-moz-border-start-color"]
logical = true
logical_group = "border-color"
ignored_when_colors_disabled = true
affects = "paint"
[border-inline-end-color]
type = "Color"
initial = "computed_value::T::currentcolor()"
struct = "border"
aliases = ["-moz-border-end-color"]
logical = true
logical_group = "border-color"
ignored_when_colors_disabled = true
affects = "paint"
[border-top-style]
type = "BorderStyle"
initial = "specified::BorderStyle::None"
struct = "border"
animation_type = "discrete"
gecko_ffi_name = "mBorderStyle.0"
logical_group = "border-style"
affects = "layout"
[border-right-style]
type = "BorderStyle"
initial = "specified::BorderStyle::None"
struct = "border"
animation_type = "discrete"
gecko_ffi_name = "mBorderStyle.1"
logical_group = "border-style"
affects = "layout"
[border-bottom-style]
type = "BorderStyle"
initial = "specified::BorderStyle::None"
struct = "border"
animation_type = "discrete"
gecko_ffi_name = "mBorderStyle.2"
logical_group = "border-style"
affects = "layout"
[border-left-style]
type = "BorderStyle"
initial = "specified::BorderStyle::None"
struct = "border"
animation_type = "discrete"
gecko_ffi_name = "mBorderStyle.3"
logical_group = "border-style"
affects = "layout"
[border-block-start-style]
type = "BorderStyle"
initial = "specified::BorderStyle::None"
struct = "border"
animation_type = "none"
gecko_ffi_name = "mBorderStyle.4"
logical = true
logical_group = "border-style"
affects = "layout"
[border-block-end-style]
type = "BorderStyle"
initial = "specified::BorderStyle::None"
struct = "border"
animation_type = "none"
gecko_ffi_name = "mBorderStyle.5"
logical = true
logical_group = "border-style"
affects = "layout"
[border-inline-start-style]
type = "BorderStyle"
initial = "specified::BorderStyle::None"
struct = "border"
aliases = ["-moz-border-start-style"]
animation_type = "none"
gecko_ffi_name = "mBorderStyle.6"
logical = true
logical_group = "border-style"
affects = "layout"
[border-inline-end-style]
type = "BorderStyle"
initial = "specified::BorderStyle::None"
struct = "border"
aliases = ["-moz-border-end-style"]
animation_type = "none"
gecko_ffi_name = "mBorderStyle.7"
logical = true
logical_group = "border-style"
affects = "layout"
[border-top-width]
type = "BorderSideWidth"
initial = "computed::BorderSideWidth::medium()"
struct = "border"
logical_group = "border-width"
allow_quirks = true
gecko_ffi_name = "mBorder.0"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[border-right-width]
type = "BorderSideWidth"
initial = "computed::BorderSideWidth::medium()"
struct = "border"
logical_group = "border-width"
allow_quirks = true
gecko_ffi_name = "mBorder.1"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[border-bottom-width]
type = "BorderSideWidth"
initial = "computed::BorderSideWidth::medium()"
struct = "border"
logical_group = "border-width"
allow_quirks = true
gecko_ffi_name = "mBorder.2"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[border-left-width]
type = "BorderSideWidth"
initial = "computed::BorderSideWidth::medium()"
struct = "border"
logical_group = "border-width"
allow_quirks = true
gecko_ffi_name = "mBorder.3"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[border-block-start-width]
type = "BorderSideWidth"
initial = "computed::BorderSideWidth::medium()"
struct = "border"
logical = true
logical_group = "border-width"
gecko_ffi_name = "mBorder.4"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[border-block-end-width]
type = "BorderSideWidth"
initial = "computed::BorderSideWidth::medium()"
struct = "border"
logical = true
logical_group = "border-width"
gecko_ffi_name = "mBorder.5"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[border-inline-start-width]
type = "BorderSideWidth"
initial = "computed::BorderSideWidth::medium()"
struct = "border"
aliases = ["-moz-border-start-width"]
logical = true
logical_group = "border-width"
gecko_ffi_name = "mBorder.6"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[border-inline-end-width]
type = "BorderSideWidth"
initial = "computed::BorderSideWidth::medium()"
struct = "border"
aliases = ["-moz-border-end-width"]
logical = true
logical_group = "border-width"
gecko_ffi_name = "mBorder.7"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[border-top-left-radius]
type = "BorderCornerRadius"
initial = "computed::BorderCornerRadius::zero()"
struct = "border"
extra_prefixes = ["webkit"]
gecko_ffi_name = "mBorderRadius.top_left"
boxed = true
logical_group = "border-radius"
affects = "paint"
[border-top-right-radius]
type = "BorderCornerRadius"
initial = "computed::BorderCornerRadius::zero()"
struct = "border"
extra_prefixes = ["webkit"]
gecko_ffi_name = "mBorderRadius.top_right"
boxed = true
logical_group = "border-radius"
affects = "paint"
[border-bottom-right-radius]
type = "BorderCornerRadius"
initial = "computed::BorderCornerRadius::zero()"
struct = "border"
extra_prefixes = ["webkit"]
gecko_ffi_name = "mBorderRadius.bottom_right"
boxed = true
logical_group = "border-radius"
affects = "paint"
[border-bottom-left-radius]
type = "BorderCornerRadius"
initial = "computed::BorderCornerRadius::zero()"
struct = "border"
extra_prefixes = ["webkit"]
gecko_ffi_name = "mBorderRadius.bottom_left"
boxed = true
logical_group = "border-radius"
affects = "paint"
[border-start-start-radius]
type = "BorderCornerRadius"
initial = "computed::BorderCornerRadius::zero()"
struct = "border"
gecko_ffi_name = "mBorderRadius.start_start"
boxed = true
logical_group = "border-radius"
logical = true
affects = "paint"
[border-start-end-radius]
type = "BorderCornerRadius"
initial = "computed::BorderCornerRadius::zero()"
struct = "border"
gecko_ffi_name = "mBorderRadius.start_end"
boxed = true
logical_group = "border-radius"
logical = true
affects = "paint"
[border-end-start-radius]
type = "BorderCornerRadius"
initial = "computed::BorderCornerRadius::zero()"
struct = "border"
gecko_ffi_name = "mBorderRadius.end_start"
boxed = true
logical_group = "border-radius"
logical = true
affects = "paint"
[border-end-end-radius]
type = "BorderCornerRadius"
initial = "computed::BorderCornerRadius::zero()"
struct = "border"
gecko_ffi_name = "mBorderRadius.end_end"
boxed = true
logical_group = "border-radius"
logical = true
affects = "paint"
[margin-top]
type = "Margin"
initial = "computed::Margin::zero()"
struct = "margin"
allow_quirks = true
logical_group = "margin"
gecko_ffi_name = "mMargin.0"
rule_types_allowed = ["style", "keyframe", "page", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[margin-right]
type = "Margin"
initial = "computed::Margin::zero()"
struct = "margin"
allow_quirks = true
logical_group = "margin"
gecko_ffi_name = "mMargin.1"
rule_types_allowed = ["style", "keyframe", "page", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[margin-bottom]
type = "Margin"
initial = "computed::Margin::zero()"
struct = "margin"
allow_quirks = true
logical_group = "margin"
gecko_ffi_name = "mMargin.2"
rule_types_allowed = ["style", "keyframe", "page", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[margin-left]
type = "Margin"
initial = "computed::Margin::zero()"
struct = "margin"
allow_quirks = true
logical_group = "margin"
gecko_ffi_name = "mMargin.3"
rule_types_allowed = ["style", "keyframe", "page", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[margin-block-start]
type = "Margin"
initial = "computed::Margin::zero()"
struct = "margin"
logical = true
logical_group = "margin"
gecko_ffi_name = "mMargin.4"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[margin-block-end]
type = "Margin"
initial = "computed::Margin::zero()"
struct = "margin"
logical = true
logical_group = "margin"
gecko_ffi_name = "mMargin.5"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[margin-inline-start]
type = "Margin"
initial = "computed::Margin::zero()"
struct = "margin"
aliases = ["-moz-margin-start"]
logical = true
logical_group = "margin"
gecko_ffi_name = "mMargin.6"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[margin-inline-end]
type = "Margin"
initial = "computed::Margin::zero()"
struct = "margin"
aliases = ["-moz-margin-end"]
logical = true
logical_group = "margin"
gecko_ffi_name = "mMargin.7"
rule_types_allowed = ["style", "keyframe", "scope", "position-try"]
servo_restyle_damage = "rebuild_box"
affects = "layout"
[scroll-margin-top]
type = "Length"
initial = "computed::Length::zero()"
struct = "margin"
engine = "gecko"
logical_group = "scroll-margin"
gecko_ffi_name = "mScrollMargin.0"
affects = ""
[scroll-margin-right]
type = "Length"
initial = "computed::Length::zero()"
struct = "margin"
engine = "gecko"
logical_group = "scroll-margin"
gecko_ffi_name = "mScrollMargin.1"
affects = ""
[scroll-margin-bottom]
type = "Length"
initial = "computed::Length::zero()"
struct = "margin"
engine = "gecko"
logical_group = "scroll-margin"
gecko_ffi_name = "mScrollMargin.2"
affects = ""
[scroll-margin-left]
type = "Length"
initial = "computed::Length::zero()"
struct = "margin"
engine = "gecko"
logical_group = "scroll-margin"
gecko_ffi_name = "mScrollMargin.3"
affects = ""
[scroll-margin-block-start]
type = "Length"
initial = "computed::Length::zero()"
struct = "margin"
engine = "gecko"
logical = true
logical_group = "scroll-margin"
gecko_ffi_name = "mScrollMargin.4"
affects = ""
[scroll-margin-block-end]
type = "Length"
initial = "computed::Length::zero()"
struct = "margin"
engine = "gecko"
logical = true
logical_group = "scroll-margin"
gecko_ffi_name = "mScrollMargin.5"
affects = ""
[scroll-margin-inline-start]
type = "Length"
initial = "computed::Length::zero()"
struct = "margin"
engine = "gecko"
logical = true
logical_group = "scroll-margin"
gecko_ffi_name = "mScrollMargin.6"
affects = ""
[scroll-margin-inline-end]
type = "Length"
initial = "computed::Length::zero()"
struct = "margin"
engine = "gecko"
logical = true
logical_group = "scroll-margin"
gecko_ffi_name = "mScrollMargin.7"
affects = ""
[padding-top]
type = "NonNegativeLengthPercentage"
initial = "computed::NonNegativeLengthPercentage::zero()"
struct = "padding"
logical_group = "padding"
gecko_ffi_name = "mPadding.0"
allow_quirks = true
servo_restyle_damage = "rebuild_box"
affects = "layout"
[padding-right]
type = "NonNegativeLengthPercentage"
initial = "computed::NonNegativeLengthPercentage::zero()"
struct = "padding"
logical_group = "padding"
gecko_ffi_name = "mPadding.1"
allow_quirks = true
servo_restyle_damage = "rebuild_box"
affects = "layout"
[padding-bottom]
type = "NonNegativeLengthPercentage"
initial = "computed::NonNegativeLengthPercentage::zero()"
struct = "padding"
logical_group = "padding"
gecko_ffi_name = "mPadding.2"
allow_quirks = true
servo_restyle_damage = "rebuild_box"
affects = "layout"
[padding-left]
type = "NonNegativeLengthPercentage"
initial = "computed::NonNegativeLengthPercentage::zero()"
struct = "padding"
logical_group = "padding"
gecko_ffi_name = "mPadding.3"
allow_quirks = true
servo_restyle_damage = "rebuild_box"
affects = "layout"
[padding-block-start]
type = "NonNegativeLengthPercentage"
initial = "computed::NonNegativeLengthPercentage::zero()"
struct = "padding"
logical = true
logical_group = "padding"
gecko_ffi_name = "mPadding.4"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[padding-block-end]
type = "NonNegativeLengthPercentage"
initial = "computed::NonNegativeLengthPercentage::zero()"
struct = "padding"
logical = true
logical_group = "padding"
gecko_ffi_name = "mPadding.5"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[padding-inline-start]
type = "NonNegativeLengthPercentage"
initial = "computed::NonNegativeLengthPercentage::zero()"
struct = "padding"
aliases = ["-moz-padding-start"]
logical = true
logical_group = "padding"
gecko_ffi_name = "mPadding.6"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[padding-inline-end]
type = "NonNegativeLengthPercentage"
initial = "computed::NonNegativeLengthPercentage::zero()"
struct = "padding"
aliases = ["-moz-padding-end"]
logical = true
logical_group = "padding"
gecko_ffi_name = "mPadding.7"
servo_restyle_damage = "rebuild_box"
affects = "layout"
[scroll-padding-top]
type = "NonNegativeLengthPercentageOrAuto"
initial = "computed::NonNegativeLengthPercentageOrAuto::auto()"
struct = "padding"
engine = "gecko"
logical_group = "scroll-padding"
gecko_ffi_name = "mScrollPadding.0"
affects = ""
[scroll-padding-right]
type = "NonNegativeLengthPercentageOrAuto"
initial = "computed::NonNegativeLengthPercentageOrAuto::auto()"
struct = "padding"
engine = "gecko"
logical_group = "scroll-padding"
gecko_ffi_name = "mScrollPadding.1"
affects = ""
[scroll-padding-bottom]
type = "NonNegativeLengthPercentageOrAuto"
initial = "computed::NonNegativeLengthPercentageOrAuto::auto()"
struct = "padding"
engine = "gecko"
logical_group = "scroll-padding"
gecko_ffi_name = "mScrollPadding.2"
affects = ""
[scroll-padding-left]
type = "NonNegativeLengthPercentageOrAuto"
initial = "computed::NonNegativeLengthPercentageOrAuto::auto()"
struct = "padding"
engine = "gecko"
logical_group = "scroll-padding"
gecko_ffi_name = "mScrollPadding.3"
affects = ""
[scroll-padding-block-start]
type = "NonNegativeLengthPercentageOrAuto"
initial = "computed::NonNegativeLengthPercentageOrAuto::auto()"
struct = "padding"
engine = "gecko"
logical = true
logical_group = "scroll-padding"
gecko_ffi_name = "mScrollPadding.4"
affects = ""
[scroll-padding-block-end]
type = "NonNegativeLengthPercentageOrAuto"
initial = "computed::NonNegativeLengthPercentageOrAuto::auto()"
struct = "padding"
engine = "gecko"
logical = true
logical_group = "scroll-padding"
gecko_ffi_name = "mScrollPadding.5"
affects = ""
[scroll-padding-inline-start]
type = "NonNegativeLengthPercentageOrAuto"
initial = "computed::NonNegativeLengthPercentageOrAuto::auto()"
struct = "padding"
engine = "gecko"
logical = true
logical_group = "scroll-padding"
gecko_ffi_name = "mScrollPadding.6"
affects = ""
[scroll-padding-inline-end]
type = "NonNegativeLengthPercentageOrAuto"
initial = "computed::NonNegativeLengthPercentageOrAuto::auto()"
struct = "padding"
engine = "gecko"
logical = true
logical_group = "scroll-padding"
gecko_ffi_name = "mScrollPadding.7"
affects = ""
[background-attachment]
struct = "background"
animation_type = "discrete"
affects = "paint"
servo_restyle_damage = "repaint"
vector = {}
keyword = { values = ["scroll", "fixed"], extra_gecko_values = ["local"], gecko_enum_prefix = "StyleImageLayerAttachment" }
[background-clip]
struct = "background"
animation_type = "discrete"
affects = "paint"
extra_prefixes = ["webkit"]
servo_restyle_damage = "repaint"
vector = {}
keyword = { values = ["border-box", "padding-box", "content-box"], extra_gecko_values = ["text"], gecko_enum_prefix = "StyleGeometryBox", gecko_inexhaustive = true }
[background-origin]
struct = "background"
animation_type = "discrete"
affects = "paint"
extra_prefixes = ["webkit"]
servo_restyle_damage = "repaint"
vector = {}
keyword = { values = ["padding-box", "border-box", "content-box"], gecko_enum_prefix = "StyleGeometryBox", gecko_inexhaustive = true }
[background-blend-mode]
struct = "background"
engine = "gecko"
vector = {}
animation_type = "discrete"
affects = "paint"
[background-blend-mode.keyword]
values = [
"normal", "multiply", "screen", "overlay", "darken", "lighten",
"color-dodge", "color-burn", "hard-light", "soft-light", "difference",
"exclusion", "hue", "saturation", "color", "luminosity"
]
gecko_enum_prefix = "StyleBlend"
gecko_inexhaustive = true
[box-decoration-break]
struct = "border"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["slice", "clone"] }
[-moz-float-edge]
struct = "border"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mFloatEdge"
keyword = { values = ["content-box", "margin-box"] }
[-moz-top-layer]
struct = "box"
engine = "gecko"
spec = "Internal (not web-exposed)"
animation_type = "discrete"
enabled_in = "ua"
affects = "layout"
gecko_ffi_name = "mTopLayer"
keyword = { values = ["none", "auto"] }
[-servo-top-layer]
struct = "box"
engine = "servo"
spec = "Internal (not web-exposed)"
animation_type = "none"
enabled_in = "ua"
affects = "layout"
keyword = { values = ["none", "top"] }
[-servo-overflow-clip-box]
struct = "box"
engine = "servo"
spec = "Internal, not web-exposed,"
animation_type = "none"
enabled_in = "ua"
affects = "layout"
keyword = { values = ["padding-box", "content-box"] }
[scroll-behavior]
struct = "box"
engine = "gecko"
animation_type = "discrete"
affects = ""
keyword = { values = ["auto", "smooth"] }
[isolation]
struct = "box"
animation_type = "discrete"
affects = "paint"
servo_restyle_damage = "repaint"
keyword = { values = ["auto", "isolate"] }
[backface-visibility]
struct = "box"
animation_type = "discrete"
affects = "paint"
extra_prefixes = ["moz:layout.css.prefixes.transforms", "webkit"]
servo_restyle_damage = "repaint"
keyword = { values = ["visible", "hidden"] }
[-moz-orient]
struct = "box"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mOrient"
keyword = { values = ["inline", "block", "horizontal", "vertical"] }
[column-fill]
struct = "column"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["balance", "auto"] }
[column-span]
struct = "column"
animation_type = "discrete"
affects = "layout"
servo_pref = "layout.columns.enabled"
keyword = { values = ["none", "all"] }
[font-variant-caps]
struct = "font"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mFont.variantCaps"
servo_restyle_damage = "rebuild_box"
[font-variant-caps.keyword]
values = ["normal", "small-caps"]
extra_gecko_values = ["all-small-caps", "petite-caps", "all-petite-caps", "unicase", "titling-caps"]
gecko_constant_prefix = "NS_FONT_VARIANT_CAPS"
[font-kerning]
struct = "font"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mFont.kerning"
keyword = { values = ["auto", "none", "normal"], gecko_constant_prefix = "NS_FONT_KERNING" }
[font-variant-emoji]
struct = "font"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mFont.variantEmoji"
gecko_pref = "layout.css.font-variant-emoji.enabled"
has_effect_on_gecko_scrollbars = false
keyword = { values = ["normal", "text", "emoji", "unicode"] }
[font-variant-position]
struct = "font"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mFont.variantPosition"
keyword = { values = ["normal", "sub", "super"], gecko_constant_prefix = "NS_FONT_VARIANT_POSITION" }
[font-optical-sizing]
struct = "font"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mFont.opticalSizing"
gecko_pref = "layout.css.font-variations.enabled"
servo_pref = "layout.variable_fonts.enabled"
has_effect_on_gecko_scrollbars = false
keyword = { values = ["auto", "none"], gecko_constant_prefix = "NS_FONT_OPTICAL_SIZING" }
[math-style]
struct = "font"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["normal", "compact"] }
[math-shift]
struct = "font"
engine = "gecko"
animation_type = "discrete"
enabled_in = "ua"
affects = "layout"
gecko_pref = "mathml.math_shift.enabled"
has_effect_on_gecko_scrollbars = false
keyword = { values = ["normal", "compact"] }
[-moz-osx-font-smoothing]
struct = "font"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
gecko_ffi_name = "mFont.smoothing"
aliases = ["-webkit-font-smoothing:layout.css.osx-font-smoothing.enabled"]
gecko_pref = "layout.css.osx-font-smoothing.enabled"
has_effect_on_gecko_scrollbars = false
keyword = { values = ["auto", "grayscale", "subpixel-antialiased"], gecko_aliases = ["antialiased=grayscale"], gecko_constant_prefix = "NS_FONT_SMOOTHING" }
[visibility]
struct = "inherited_box"
affects = "paint"
gecko_ffi_name = "mVisible"
keyword = { values = ["visible", "hidden", "collapse"] }
[direction]
struct = "inherited_box"
animation_type = "none"
affects = "layout"
servo_restyle_damage = "rebuild_box"
keyword = { values = ["ltr", "rtl"] }
[-moz-box-collapse]
struct = "inherited_box"
engine = "gecko"
spec = "None (internal)"
animation_type = "none"
enabled_in = "chrome"
affects = "layout"
keyword = { values = ["flex", "legacy"] }
[text-orientation]
struct = "inherited_box"
engine = "gecko"
animation_type = "none"
affects = "layout"
keyword = { values = ["mixed", "upright", "sideways"], gecko_aliases = ["sideways-right=sideways"] }
[image-orientation]
struct = "inherited_box"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["from-image", "none"] }
[text-anchor]
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["start", "middle", "end"] }
[color-interpolation]
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
keyword = { values = ["srgb", "auto", "linearrgb"] }
[color-interpolation-filters]
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
keyword = { values = ["linearrgb", "auto", "srgb"], gecko_enum_prefix = "StyleColorInterpolation" }
[shape-rendering]
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
keyword = { values = ["auto", "optimizespeed", "crispedges", "geometricprecision"] }
[stroke-linecap]
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["butt", "round", "square"] }
[stroke-linejoin]
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["miter", "round", "bevel"] }
[border-collapse]
struct = "inherited_table"
animation_type = "discrete"
affects = "layout"
servo_restyle_damage = "rebuild_box"
keyword = { values = ["separate", "collapse"] }
[empty-cells]
struct = "inherited_table"
animation_type = "discrete"
affects = "paint"
servo_restyle_damage = "rebuild_box"
keyword = { values = ["show", "hide"] }
[hyphens]
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
extra_prefixes = ["moz"]
keyword = { values = ["manual", "none", "auto"] }
[-moz-text-size-adjust]
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mTextSizeAdjust"
aliases = ["-webkit-text-size-adjust"]
keyword = { values = ["auto", "none"] }
[ruby-align]
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["space-around", "start", "center", "space-between"] }
[text-combine-upright]
struct = "inherited_text"
engine = "gecko"
animation_type = "none"
affects = "layout"
keyword = { values = ["none", "all"] }
[text-rendering]
struct = "inherited_text"
animation_type = "discrete"
affects = "layout"
servo_restyle_damage = "rebuild_box"
keyword = { values = ["auto", "optimizespeed", "optimizelegibility", "geometricprecision"] }
[-webkit-text-security]
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["none", "circle", "disc", "square"] }
[text-wrap-mode]
struct = "inherited_text"
animation_type = "discrete"
affects = "layout"
servo_restyle_damage = "rebuild_box"
keyword = { values = ["wrap", "nowrap"] }
[text-wrap-style]
struct = "inherited_text"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["auto", "stable", "balance"] }
[list-style-position]
struct = "list"
animation_type = "discrete"
affects = "layout"
servo_restyle_damage = "rebuild_box"
keyword = { values = ["outside", "inside"] }
[flex-direction]
struct = "position"
animation_type = "discrete"
affects = "layout"
extra_prefixes = ["webkit"]
servo_restyle_damage = "rebuild_box"
keyword = { values = ["row", "row-reverse", "column", "column-reverse"] }
[flex-wrap]
struct = "position"
animation_type = "discrete"
affects = "layout"
extra_prefixes = ["webkit"]
servo_restyle_damage = "rebuild_box"
keyword = { values = ["nowrap", "wrap", "wrap-reverse"] }
[box-sizing]
struct = "position"
animation_type = "discrete"
affects = "layout"
extra_prefixes = ["moz:layout.css.prefixes.box-sizing", "webkit"]
servo_restyle_damage = "rebuild_box"
keyword = { values = ["content-box", "border-box"] }
[object-fit]
struct = "position"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["fill", "contain", "cover", "none", "scale-down"] }
[mask-type]
struct = "svg"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
keyword = { values = ["luminance", "alpha"] }
[mask-mode]
struct = "svg"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
vector = {}
keyword = { values = ["match-source", "alpha", "luminance"] }
[mask-clip]
struct = "svg"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
vector = {}
extra_prefixes = ["webkit"]
keyword = { values = ["border-box", "content-box", "padding-box"], extra_gecko_values = ["fill-box", "stroke-box", "view-box", "no-clip"], gecko_enum_prefix = "StyleGeometryBox", gecko_inexhaustive = true }
[mask-origin]
struct = "svg"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
vector = {}
extra_prefixes = ["webkit"]
keyword = { values = ["border-box", "content-box", "padding-box"], extra_gecko_values = ["fill-box", "stroke-box", "view-box"], gecko_enum_prefix = "StyleGeometryBox", gecko_inexhaustive = true }
[mask-composite]
struct = "svg"
engine = "gecko"
animation_type = "discrete"
affects = "paint"
vector = {}
extra_prefixes = ["webkit"]
keyword = { values = ["add", "subtract", "intersect", "exclude"] }
[table-layout]
struct = "table"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mLayoutStrategy"
servo_restyle_damage = "rebuild_box"
keyword = { values = ["auto", "fixed"] }
[unicode-bidi]
struct = "text"
animation_type = "none"
affects = "layout"
servo_restyle_damage = "rebuild_box"
keyword = { values = ["normal", "embed", "isolate", "bidi-override", "isolate-override", "plaintext"] }
[text-decoration-style]
struct = "text"
animation_type = "discrete"
affects = "overflow"
servo_restyle_damage = "recalculate_overflow"
keyword = { values = ["solid", "double", "dotted", "dashed", "wavy", "-moz-none"] }
[ime-mode]
struct = "ui"
engine = "gecko"
animation_type = "discrete"
affects = ""
gecko_ffi_name = "mIMEMode"
keyword = { values = ["auto", "normal", "active", "disabled", "inactive"] }
[scrollbar-width]
struct = "ui"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["auto", "thin", "none"] }
[-moz-window-dragging]
struct = "ui"
engine = "gecko"
spec = "None (Nonstandard Firefox-only property)"
animation_type = "discrete"
enabled_in = "chrome"
affects = "paint"
gecko_ffi_name = "mWindowDragging"
keyword = { values = ["default", "drag", "no-drag"] }
[-moz-window-shadow]
struct = "ui"
engine = "gecko"
spec = "None (Nonstandard internal property)"
animation_type = "discrete"
enabled_in = "chrome"
affects = "overflow"
gecko_ffi_name = "mWindowShadow"
keyword = { values = ["auto", "none"] }
[field-sizing]
struct = "ui"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
gecko_pref = "layout.css.field-sizing.enabled"
keyword = { values = ["fixed", "content"] }
[-moz-box-align]
struct = "xul"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mBoxAlign"
aliases = ["-webkit-box-align"]
keyword = { values = ["stretch", "start", "center", "baseline", "end"] }
[-moz-box-direction]
struct = "xul"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mBoxDirection"
aliases = ["-webkit-box-direction"]
keyword = { values = ["normal", "reverse"] }
[-moz-box-orient]
struct = "xul"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mBoxOrient"
aliases = ["-webkit-box-orient"]
keyword = { values = ["horizontal", "vertical"], gecko_aliases = ["inline-axis=horizontal", "block-axis=vertical"] }
[-moz-box-pack]
struct = "xul"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
gecko_ffi_name = "mBoxPack"
aliases = ["-webkit-box-pack"]
keyword = { values = ["start", "center", "end", "justify"] }
[mix-blend-mode]
struct = "effects"
animation_type = "discrete"
affects = "paint"
servo_restyle_damage = "repaint"
keyword = { values = ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "plus-lighter"], gecko_enum_prefix = "StyleBlend" }
[dominant-baseline]
struct = "inherited_svg"
engine = "gecko"
animation_type = "discrete"
affects = "layout"
keyword = { values = ["auto", "ideographic", "alphabetic", "hanging", "mathematical", "central", "middle", "text-after-edge", "text-before-edge"] }
[-moz-math-variant]
struct = "font"
engine = "gecko"
spec = "Internal (not web-exposed)"
animation_type = "none"
enabled_in = ""
has_effect_on_gecko_scrollbars = false
affects = "layout"
gecko_ffi_name = "mMathVariant"
keyword = { values = ["none", "normal", "bold", "italic", "bold-italic", "script", "bold-script", "fraktur", "double-struck", "bold-fraktur", "sans-serif", "bold-sans-serif", "sans-serif-italic", "sans-serif-bold-italic", "monospace", "initial", "tailed", "looped", "stretched"] }
[white-space-collapse]
struct = "inherited_text"
animation_type = "discrete"
affects = "layout"
servo_restyle_damage = "rebuild_box"
keyword = { values = ["collapse", "preserve", "preserve-breaks", "break-spaces"], extra_gecko_values = ["preserve-spaces"], gecko_aliases = ["-moz-pre-space=preserve-spaces"] }