woonem
@woonem

Как получить высоту элемента без JS?

Привет :)
Использую такую некостлявую конструкцию для центрирования элементов:
.wrapper{
    text-align: center;
    width: 100%;
    height: 100vh;
}
.center{
    display: inline-block;
    width: 300px;
    height: 200px;
    border: 1px solid #000;
    margin-top: calc(50vh - 100px); /* 100px = 50% * this.height */
}

<html>
  <body>
    <div class="wrapper">
      <div class="center">
        centered block
      </div>
    </div>
  </body>
</html>

JSBin >

Но если высота неизвестна, как поставить правильный отступ?
Мне кажется есть возможность применять height элемента в CSS.
Если я ошибаюсь, другие конструкции не предлагайте, просто уведомите.
По моей памяти должно быть приблизительно вот так:
.center{
   /* ... */
   margin-top: calc(50vh - calc(attr(height) / 2));
}
  • Вопрос задан
  • 4324 просмотра
Решения вопроса 3
werty1001
@werty1001
undefined
Можно например так, никаких this[height] в css нет.
Ответ написан
sadisme
@sadisme
font-size:30rem
.wrapper{
    width: 100%;
    height: 100vh;
    display:flex;
    align-items:center;
    justify-content:center;
}
.center{
    display: inline-block;
    width: 300px;
    height: 200px;
    border: 1px solid #000;
    margin:auto;
}
Ответ написан
.wrapper{
    position:relative;
}
.center{
   position:absolute;
   top:50%;
   left:50%;
   transform:translate(-50%,-50%);
}


Или флекс, как писали выше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы