Абсолютно резиновый контент

Есть такой пример блоков с текстом:

* {
  box-sizing: border-box;
}

html,
body,
ul {
  padding: 0;
  margin: 0;
  height: 100%;
  font-family: sans-serif;
}

body {
  padding: 0 15px;
}

ul {
  list-style-type: none;
  display: flex;
  flex-flow: row wrap;
  margin-right: -15px;
  margin-left: -15px;
}

li {
  height: 50%;
  position: relative;
  width: 100%;
  min-height: 1px;
  padding-right: 15px;
  padding-left: 15px;
  -webkit-box-flex: 0;
  flex: 0 0 50%;
  max-width: 50%;
  margin-bottom: 15px;
}

li h2 {
  height: 15%;
  font-size: 175%;
  line-height: 1.2;
  text-align: center;
  border-bottom: 1px solid #a7a7a7;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
}

li p {
  height: 85%;
  padding: 5% 2%;
  font-size: 150%;
  line-height: 1.2;
  overflow: hidden;
  margin: 0;
}

li div {
  height: 100%;
  background: #e7e7e7;
}
<ul>
  <li>
    <div>
      <h2>Some title</h2>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Commodi, in.
      </p>
    </div>
  </li>

  <li>
    <div>
      <h2>Some title</h2>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit alias aliquam, nulla omnis odio fugit asperiores saepe vel aspernatur laborum.
      </p>
    </div>
  </li>

  <li>
    <div>
      <h2>Some title</h2>
      <p>
        Lorem ipsum dolor sit amet.
      </p>
    </div>
  </li>
</ul>

Вопрос: какие есть варианты сделать резиновый контент (и блоки и текст), так чтобы и на 5000px и на 500px отображалось пропорционально при этом как по ширине, так и по высоте (поэтому vw не подходит) ?


Ответы (2 шт):

Автор решения: meine

как вариант, хоть на разрешении 7680х4800 смотрите, будет точно так же, как и на 1920

P.S. для конвертации из px в rem'ы удобнее использовать SCSS и в нём реализовать функцию rem (если нужно, добавлю)

html {
  font-size: .833331vw; /* 1920 = 16px */
}

.block {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font-family: 'Roboto', sans-serif;
}

.block__inner {
  padding: 1.875rem;
  border-radius: 0.9375rem;
  box-shadow: 0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.12), 0 0.0625rem 0.125rem rgba(0, 0, 0, 0.24);
}

.block__title { font-size: 1.5rem; }

.block__text { font-size: 1.125rem; }
<div class="block">
  <div class="block__inner">
    <h2 class="block__title">Lorem, ipsum.</h2>

    <p class="block__text">Lorem ipsum dolor sit amet.</p>
  </div>
</div>

→ Ссылка
Автор решения: HamSter

Решила проблему с помощью vMin:

* {
  box-sizing: border-box;
}

html,
body,
ul {
  padding: 0;
  margin: 0;
  height: 100%;
  font-family: sans-serif;
}

body {
  padding: 0 15px;
}

ul {
  list-style-type: none;
  display: flex;
  flex-flow: row wrap;
  margin-right: -15px;
  margin-left: -15px;
}

li {
  height: 50%;
  position: relative;
  width: 100%;
  min-height: 1px;
  padding-right: 15px;
  padding-left: 15px;
  flex: 0 0 50%;
  max-width: 50%;
  margin-bottom: 15px;
}

li h2 {
  height: 8vMin;
  font-size: 5vMin;
  line-height: 1.2;
  text-align: center;
  border-bottom: 1px solid #a7a7a7;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
}

li p {
  height: calc(100% - 8vMin);
  padding: 3vMin 2vMin;
  font-size: 5vMin;
  line-height: 1.2;
  overflow: hidden;
  margin: 0;
}

li div {
  height: 100%;
  background: #e7e7e7;
}
<ul>
  <li>
    <div>
      <h2>Some title</h2>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Commodi, in.
      </p>
    </div>
  </li>

  <li>
    <div>
      <h2>Some title</h2>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit alias aliquam, nulla omnis odio fugit asperiores saepe vel aspernatur laborum.
      </p>
    </div>
  </li>

  <li>
    <div>
      <h2>Some title</h2>
      <p>
        Lorem ipsum dolor sit amet.
      </p>
    </div>
  </li>
</ul>

vmin - Эквивалентно 1% меньшего размера окна браузера по высоте или ширине.

Источник

→ Ссылка