Use the margin box of an inline block when computing the inline size

When computing the inline size of an inline block in inline formating
context, use the margin box of the underling block.
This commit is contained in:
Pu Xingyu 2017-04-06 23:22:11 +08:00
parent 3272861fca
commit dd26148d43
4 changed files with 57 additions and 4 deletions

View file

@ -2380,10 +2380,7 @@ impl Fragment {
pub fn update_late_computed_replaced_inline_size_if_necessary(&mut self) {
if let SpecificFragmentInfo::InlineBlock(ref mut inline_block_info) = self.specific {
let block_flow = FlowRef::deref_mut(&mut inline_block_info.flow_ref).as_block();
let margin = block_flow.fragment.style.logical_margin();
self.border_box.size.inline = block_flow.fragment.border_box.size.inline +
MaybeAuto::from_style(margin.inline_start, Au(0)).specified_or_zero() +
MaybeAuto::from_style(margin.inline_end, Au(0)).specified_or_zero()
self.border_box.size.inline = block_flow.fragment.margin_box_inline_size();
}
}

View file

@ -2759,6 +2759,18 @@
{}
]
],
"css/inline_block_percentage_margin.html": [
[
"/_mozilla/css/inline_block_percentage_margin.html",
[
[
"/_mozilla/css/inline_block_percentage_margin_ref.html",
"=="
]
],
{}
]
],
"css/inline_block_stacking_context_a.html": [
[
"/_mozilla/css/inline_block_stacking_context_a.html",
@ -7875,6 +7887,11 @@
{}
]
],
"css/inline_block_percentage_margin_ref.html": [
[
{}
]
],
"css/inline_block_stacking_context_ref.html": [
[
{}
@ -21797,6 +21814,14 @@
"bad4704435c74a3204925206802eb004f380500e",
"support"
],
"css/inline_block_percentage_margin.html": [
"0b750acad3bcc6b5fabf9e625b6adf22e1e97640",
"reftest"
],
"css/inline_block_percentage_margin_ref.html": [
"3726b3b2149b9e6584277fd33b77940d5f9d6800",
"support"
],
"css/inline_block_stacking_context_a.html": [
"6c872ab3c551e4fe6c293468aa310ae61487b583",
"reftest"

View file

@ -0,0 +1,16 @@
<!doctype html>
<meta charset="utf-8">
<link rel="match" href="inline_block_percentage_margin_ref.html">
<style>
body {
width: 500px;
}
span {
display: inline-block;
width: 100px;
height: 30px;
background: orange;
margin: 0 10%;
}
</style>
<span></span>

View file

@ -0,0 +1,15 @@
<!doctype html>
<meta charset="utf-8">
<style>
body {
width: 500px;
}
span {
display: inline-block;
width: 100px;
height: 30px;
background: orange;
margin: 0 50px;
}
</style>
<span></span>