问题
I'm currently building a fully responsive website, and the more I try to understand, the more I don't. Principally with percentages.
I know a % is based on the first positioned parent. But, I have made some example on JSFiddle, and I had different results:
Fiddle
In all examples we have the same base:
HTML:
<div class="example">
<div class="container">
<div class="item"></div>
</div>
</div>
CSS Properties of divs :
- The
.exampleblock hasposition: relative. It has awidth: 60%(of his parent: body). - The
.containerblock hasposition: static. It has a width: 80% (this time of.examplebecause it's a relative block).
My Problem:
When I want to move the .item block instead of .example size, but for each CSS attribute I'm using (margin-left, left, transform, etc.), 100% results in a different size. Furthermore, if I change the positioning for .item (static, relative, etc.) the size is different again.
Can someone explain why 100% on .item are different for margin, left, or transform ?
回答1:
Just to clarify for you take in care that % percentage is not the same computed value for all properties:
With your example the default position is this:
In position using
leftPercentages of the width of the containing blockIn this case since you are using
absoluteposition the referent parent is the closest with a non static position defined. "example" container who is defined relative.
In
marginPercentages refer to the width of the containing blockIn case one without
absoluteposition is fine moving the element to the left exact the size of thecontainerdiv from his initial position.
When you add
absolutenow is the 100% ofexampleafter the space of his initial position.
In
transformPercentages refer to the size of bounding boxSo the element is offset by an amount equal to his width.

来源:https://stackoverflow.com/questions/26412633/what-does-100-really-do-multiple-case-study


