Абсолютно резиновый контент
Есть такой пример блоков с текстом:
* {
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% меньшего размера окна браузера по высоте или ширине.