New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix block size for absolute replaced element #19184
Changes from 1 commit
21e2ed5
e926bef
0eb8c06
20cf171
d723712
File filter...
Jump to…
fix block size for absolute replaced element
Absolutely replaced elements with padding were incorrectly setting their block size to include twice the padding values. This attempts to stop that extra padding for replaced elements but leave the working flow for non replaced elements
- Loading branch information
| @@ -1300,7 +1300,12 @@ impl BlockFlow { | ||||
| self.base.position.start.b = solution.block_start + self.fragment.margin.block_start | ||||
| } | ||||
|
|
||||
| let block_size = solution.block_size + self.fragment.border_padding.block_start_end(); | ||||
| let block_size = if self.fragment.is_replaced() { | ||||
bobthekingofegypt
Author
Contributor
|
||||
| let block_size_used_val = self.fragment.border_box.size.block; |
(See also the TODO comments above this line which hint at some of the bigger issues here.)
This comment has been minimized.
This comment has been minimized.
| @@ -0,0 +1,24 @@ | ||
| <!doctype html> | ||
| <meta charset="utf-8"> | ||
| <title></title> | ||
| <link rel="match" href="absolute_div_with_padding_ref.html"> | ||
| <style> | ||
| .absolute{ | ||
| position: absolute; | ||
| top: 0px; | ||
| left: 0px; | ||
| padding: 100px; | ||
| width: 150px; | ||
| height: 150px; | ||
| background-color: green; | ||
| } | ||
| .box{ | ||
| width: 350px; | ||
| height: 350px; | ||
| position: relative; | ||
| background: red; | ||
| } | ||
| </style> | ||
| <div class="box"> | ||
| <div class="absolute"></div> | ||
| </div> |
| @@ -0,0 +1,20 @@ | ||
| <!doctype html> | ||
| <meta charset="utf-8"> | ||
| <title></title> | ||
| <style> | ||
| .absolute{ | ||
| padding: 100px; | ||
| width: 150px; | ||
| height: 150px; | ||
| background-color: green; | ||
| } | ||
| .box{ | ||
| width: 350px; | ||
| height: 350px; | ||
| position: relative; | ||
| background: red; | ||
| } | ||
| </style> | ||
| <div class="box"> | ||
| <div class="absolute"></div> | ||
| </div> |
| @@ -0,0 +1,15 @@ | ||
| <!doctype html> | ||
| <meta charset="utf-8"> | ||
| <title>CSS Test: Absolute position image with padding should not increase in size</title> | ||
| <link rel="match" href="absolute_img_with_padding_ref.html"> | ||
| <body> | ||
| <style> | ||
| img{ | ||
| position: absolute; | ||
| top: 0px; | ||
| left: 0px; | ||
| padding: 100px; | ||
| } | ||
| </style> | ||
| <img src="100x100_green.png" alt="img"> | ||
| </body> |
| @@ -0,0 +1,6 @@ | ||
| <!doctype html> | ||
| <meta charset="utf-8"> | ||
| <title>CSS Test: Absolute position image with padding should not increase in size</title> | ||
| <body style="margin:0"> | ||
| <img style="padding: 100px;" src="100x100_green.png" alt="img"> | ||
| </body> |
Seems like it'd be cleaner to not include the padding in the block size in the first time? Looks like this is done in
assign_replaced_inline_size_if_necessary(though it probably should be done inassign_replaced_block_size_if_necessary?).