diff --git a/components/style/values/specified/length.rs b/components/style/values/specified/length.rs index 61789ac8d0d..d40f6770d3c 100644 --- a/components/style/values/specified/length.rs +++ b/components/style/values/specified/length.rs @@ -112,7 +112,6 @@ impl FontRelativeLength { let reference_font_size = base_size.resolve(context); - let root_font_size = context.device.root_font_size(); match *self { FontRelativeLength::Em(length) => reference_font_size.scale_by(length), FontRelativeLength::Ex(length) => { @@ -149,7 +148,19 @@ impl FontRelativeLength { } } } - FontRelativeLength::Rem(length) => root_font_size.scale_by(length) + FontRelativeLength::Rem(length) => { + // https://drafts.csswg.org/css-values/#rem: + // + // When specified on the font-size property of the root + // element, the rem units refer to the property’s initial + // value. + // + if context.is_root_element { + reference_font_size.scale_by(length) + } else { + context.device.root_font_size().scale_by(length) + } + } } } }