Вот два варианта для эмуляции необходимого поведения. Не общее решение, но может помочь в некоторых случаях. Вертикальный интервал здесь рассчитывается на основе размера внешнего элемента, а не его родителя, но сам этот размер может быть относительно родительского, и таким образом интервал будет также относительным.
<div id="outer">
<div id="inner">
content
</div>
</div>
Первый вариант: использовать псевдоэлементы, здесь вертикальный и горизонтальный интервалы относительно внешнего. Демо
#outer::before, #outer::after {
display: block;
content: "";
height: 10%;
}
#inner {
height: 80%;
margin-left: 10%;
margin-right: 10%;
}
Перемещение горизонтального промежутка к внешнему элементу делает его относительно родителя внешнего. Демо
#outer {
padding-left: 10%;
padding-right: 10%;
}
Второй вариант: использовать абсолютное позиционирование. Демо
#outer {
position: relative;
}
#inner {
position: absolute;
left: 10%;
right: 10%;
top: 10%;
bottom: 10%;
}