There is a belief that inherited values are “translated” from relative (eg, percent) to absolute. Guess what? It is not right. Here MDN talks about this:
The CSS inherit invokes the element for which it is specified; take the computed property value from its parent element.
[...]
The calculation necessary to achieve the calculated value for a property usually involves converting relative values (for example, in em units or percentages ) to absolute values. For example, if an element has the specified font-size: 16px and padding-top: 2em , then the calculated padding-top is 32px (doubles the font size).
However, for some properties (those where percentages relate to what might be required to define the layout, such as width , margin-right , text-indent and top ), the percentages specified are percent calculated values. [...] These relative values that remain in the calculated value become absolute in determining the value used.
Now an example. Let them say that we have the following structure:
<div id="alpha"> <div id="bravo"> <div id="charlie"></div> </div> </div>
... and the following CSS:
#alpha { outline: 1px solid red; width: 420px; height: 100px; } #bravo { outline: 1px solid green; width: 50%; height: inherit; margin: 0 auto; } #charlie { outline: 1px solid navy; width: inherit; height: inherit; margin: 0 auto; }
... you will see the following image:

... means that while the #charlie element is the same height as the parent #bravo , its width is 50% of its parent. The calculated value was inherited: 100px for height, 50% for width.
While this feature may be good or bad, depending on the situation, for non-fixed elements, it seems to be definitely painfully fixed. Since the 50% value for the width property is inherited as is, the used value for this dimension will be based on the viewport. Same thing with percentage-using values like calc(50%) .