mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
layout: Lay out nested inline elements with different vertical-align
values properly in simple cases. This allows things like `<sup><span>Foo</span></sup>` to work and improves Wikipedia.
This commit is contained in:
parent
51dd6984f7
commit
18074bf908
9 changed files with 248 additions and 98 deletions
|
@ -5239,13 +5239,27 @@ pub fn cascade_anonymous(parent_style: &ComputedValues) -> ComputedValues {
|
|||
result
|
||||
}
|
||||
|
||||
/// Sets `display` to `inline` and `position` to `static`.
|
||||
/// Alters the given style to accommodate replaced content. This is called in flow construction. It
|
||||
/// handles cases like `<div style="position: absolute">foo bar baz</div>` (in which `foo`, `bar`,
|
||||
/// and `baz` must not be absolutely-positioned) and cases like `<sup>Foo</sup>` (in which the
|
||||
/// `vertical-align: top` style of `sup` must not propagate down into `Foo`).
|
||||
///
|
||||
/// FIXME(#5625, pcwalton): It would probably be cleaner and faster to do this in the cascade.
|
||||
#[inline]
|
||||
pub fn make_inline(style: &ComputedValues) -> ComputedValues {
|
||||
let mut style = (*style).clone();
|
||||
style.box_.make_unique().display = longhands::display::computed_value::T::inline;
|
||||
style.box_.make_unique().position = longhands::position::computed_value::T::static_;
|
||||
style
|
||||
pub fn modify_style_for_replaced_content(style: &mut Arc<ComputedValues>) {
|
||||
// Reset `position` to handle cases like `<div style="position: absolute">foo bar baz</div>`.
|
||||
if style.box_.display != longhands::display::computed_value::T::inline {
|
||||
let mut style = style.make_unique();
|
||||
style.box_.make_unique().display = longhands::display::computed_value::T::inline;
|
||||
style.box_.make_unique().position = longhands::position::computed_value::T::static_;
|
||||
}
|
||||
|
||||
// Reset `vertical-align` to handle cases like `<sup>foo</sup>`.
|
||||
if style.box_.vertical_align != longhands::vertical_align::computed_value::T::baseline {
|
||||
let mut style = style.make_unique();
|
||||
style.box_.make_unique().vertical_align =
|
||||
longhands::vertical_align::computed_value::T::baseline
|
||||
}
|
||||
}
|
||||
|
||||
/// Sets `border_${side}_width` to the passed in values.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue