mirror of
https://github.com/servo/servo.git
synced 2025-08-02 12:10:29 +01:00
layout: Make inline absolute hypothetical boxes not clip their contents.
Improves the logo on ebay.com.
This commit is contained in:
parent
19d466b062
commit
c328c38804
5 changed files with 49 additions and 1 deletions
|
@ -978,7 +978,13 @@ impl<'a> FlowConstructor<'a> {
|
||||||
|
|
||||||
let fragment_info = SpecificFragmentInfo::InlineAbsoluteHypothetical(
|
let fragment_info = SpecificFragmentInfo::InlineAbsoluteHypothetical(
|
||||||
InlineAbsoluteHypotheticalFragmentInfo::new(block_flow));
|
InlineAbsoluteHypotheticalFragmentInfo::new(block_flow));
|
||||||
let fragment = Fragment::new(node, fragment_info);
|
let mut style = node.style().clone();
|
||||||
|
properties::modify_style_for_inline_absolute_hypothetical_fragment(&mut style);
|
||||||
|
let fragment = Fragment::from_opaque_node_and_style(node.opaque(),
|
||||||
|
PseudoElementType::Normal,
|
||||||
|
style,
|
||||||
|
node.restyle_damage(),
|
||||||
|
fragment_info);
|
||||||
|
|
||||||
let mut fragment_accumulator = InlineFragmentsAccumulator::from_inline_node(node);
|
let mut fragment_accumulator = InlineFragmentsAccumulator::from_inline_node(node);
|
||||||
fragment_accumulator.fragments.fragments.push_back(fragment);
|
fragment_accumulator.fragments.fragments.push_back(fragment);
|
||||||
|
|
|
@ -6533,6 +6533,16 @@ pub fn modify_style_for_input_text(style: &mut Arc<ComputedValues>) {
|
||||||
margin_style.margin_left = computed::LengthOrPercentageOrAuto::Length(Au(0));
|
margin_style.margin_left = computed::LengthOrPercentageOrAuto::Length(Au(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Adjusts the `clip` property so that an inline absolute hypothetical fragment doesn't clip its
|
||||||
|
/// children.
|
||||||
|
pub fn modify_style_for_inline_absolute_hypothetical_fragment(style: &mut Arc<ComputedValues>) {
|
||||||
|
if style.get_effects().clip.0.is_some() {
|
||||||
|
let mut style = Arc::make_unique(style);
|
||||||
|
let effects_style = Arc::make_unique(&mut style.effects);
|
||||||
|
effects_style.clip.0 = None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn is_supported_property(property: &str) -> bool {
|
pub fn is_supported_property(property: &str) -> bool {
|
||||||
match_ignore_ascii_case! { property,
|
match_ignore_ascii_case! { property,
|
||||||
% for property in SHORTHANDS + LONGHANDS[:-1]:
|
% for property in SHORTHANDS + LONGHANDS[:-1]:
|
||||||
|
|
|
@ -146,6 +146,7 @@ experimental == iframe/size_attributes_vertical_writing_mode.html iframe/size_at
|
||||||
== img_width_attribute_intrinsic_width_a.html img_width_attribute_intrinsic_width_ref.html
|
== img_width_attribute_intrinsic_width_a.html img_width_attribute_intrinsic_width_ref.html
|
||||||
== incremental_float_a.html incremental_float_ref.html
|
== incremental_float_a.html incremental_float_ref.html
|
||||||
== incremental_inline_layout_a.html incremental_inline_layout_ref.html
|
== incremental_inline_layout_a.html incremental_inline_layout_ref.html
|
||||||
|
== inline_absolute_hypothetical_clip_a.html inline_absolute_hypothetical_clip_ref.html
|
||||||
!= inline_background_a.html inline_background_ref.html
|
!= inline_background_a.html inline_background_ref.html
|
||||||
== inline_block_baseline_a.html inline_block_baseline_ref.html
|
== inline_block_baseline_a.html inline_block_baseline_ref.html
|
||||||
== inline_block_block_direction_margins_a.html inline_block_block_direction_margins_ref.html
|
== inline_block_block_direction_margins_a.html inline_block_block_direction_margins_ref.html
|
||||||
|
|
15
tests/ref/inline_absolute_hypothetical_clip_a.html
Normal file
15
tests/ref/inline_absolute_hypothetical_clip_a.html
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
margin: 16px;
|
||||||
|
}
|
||||||
|
#a {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
#b {
|
||||||
|
clip: rect(47px, 118px, 95px, 0);
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<a href="http://bogus" id=a><img id=b width=250 src=400x400_green.png>
|
||||||
|
|
16
tests/ref/inline_absolute_hypothetical_clip_ref.html
Normal file
16
tests/ref/inline_absolute_hypothetical_clip_ref.html
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<style>
|
||||||
|
html, body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
section {
|
||||||
|
position: absolute;
|
||||||
|
background: lime;
|
||||||
|
top: 63px;
|
||||||
|
width: 118px;
|
||||||
|
height: 48px;
|
||||||
|
left: 16px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<section></section>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue