What’s the width of child in pixel?
<div class="parent"> <div class="child"> some text </div> </div> <style> .parent { width: 700px; } .child { width: 50%; background-color: green; } </style>
Of course it’s 350px

And the parent is like

Let parent has padding
padding: 40px;
The result is the same

Width of child is still 350px
Btw ,the parent is now

Parent has padding + Child has padding
Let child has padding:
padding: 15px;
The result is

Width of child is still 350px
Let parent has margin
margin: 40px;

Width of child is still 350px
and the parent is

Parent has margin + Child has margin
Add margin to child:
padding: 15px;

Width of child is still 350px
Conclusion: A child’s real width (not including padding/margin) = parent’s real width (not including padding/margin) * percentage
What if I use flexbox layout and flex-basis?
I tested it. Exactly the same.