Выровнять <video>центр flexbox с переменной высотой - PullRequest
0 голосов
/ 30 мая 2018

У меня есть видео страница с 3 основными элементами (заголовок, видео, настройки нижнего колонтитула).Нижний колонтитул настроек является сворачиваемым.

Я доволен макетом, когда нижний колонтитул настроек виден, но мне хотелось бы увеличить размер видео, чтобы поднять оставшуюся высоту после свертывания нижнего колонтитула настроек.Другими словами, видео должно немного увеличиться в размерах при коллапсе нижнего колонтитула.

Вот что у меня получилось:

var el = document.getElementsByClassName("settings-container")[0];
el.addEventListener("click", function(e) {
  e.target.classList.toggle("collapsed");
});
body {
  font-size: 16px;
}

.main-container {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  overflow: hidden;
}

.header-container {
  align-items: center;
  border-bottom: 0.0625rem solid #b2b2b2;
  display: flex;
  flex: 0 0 1.938rem;
  padding: .25rem .9375rem;
}

.video-container {
  align-items: center;
  display: flex;
  flex: 1 1 auto;
  justify-content: center;
  padding: .9375rem;
}

.video-container .video-player {
  border: 0.1875rem solid black;
  display: flex;
  overflow: hidden;
  position: relative;
}

my-video-player {
  background-color: transparent;
  display: block;
  font-family: arial, sans-serif;
  font-size: 12px;
  position: relative;
}

my-video-player .video video {
  height: auto;
  max-height: calc(100vh - 19.75rem);
  max-width: 100%;
  width: auto;
}

.settings-container {
  background: #f4f4f4;
  display: flex;
  flex: 0 1 15rem;
  flex-direction: column;
  position: relative;
  top: 0;
  transition: flex .5s;
}

.settings-container.collapsed {
  flex: 0 0 2.4rem;
}
<div class="main-container">
  <div class="header-container">Header</div>
  <div class="video-container">
    <div class="video-player">
      <my-video-player>
        <div class="video">
          <video autobuffer controls>
            <source id="mp4" src="http://footage.framepool.com/mov/521-436-838.mp4" type="video/mp4">
          </video>
        </div>
      </my-video-player>
    </div>
  </div>
  <div class="settings-container">Settings - click me to collapse</div>
</div>

Лучше всего просматривать в полноэкранном режиме!

Я ищу решение css-only , где видеозанимает доступное пространство между верхним и нижним колонтитулом.Прямо сейчас я жестко закодировал max-height к элементу видео, чтобы привести его в соответствие, но мои попытки решить эту проблему иначе не увенчались успехом.

Я уже видел сообщения, предлагающие position: absolute и relative дляребенок и родитель соответственно, но многие уровни flexbox затрудняют это для меня.

Благодарен за любые идеи или предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...