Если блоку поставить position: absolute то сработает, только блок уже выходит за границы.
Всё правильно, вы просто говнокодите на CSS, особенно используя везде vh и vw. Слышали поговорку "Заставь фронтендера размеры с помощью относительных единиц задавать везде, так он себе голову разобьет о jsfiddle"?
Добавьте нормальные размеры для block-content, и центрируйте как душе угодно, если что - top\left только для absolute.
DEATH2298, не слушайте старика) он тупит на работе.
relative работает с top и тд и тп. Если вы пропишите в пикселях, всё сместиться(можете попробовать задать top:20px к примеру), если вы хотите что бы работало в процентах то -
Проценты по вертикали работают только если высота родителя четко задана в абсолютных единицах длины или же высота известна из абсолютного позиционирования.
Но суть не меняется, не увлекайтесь с относительными единицами измерения, это мазохизм, и предназначено это совсем для других целей.