Я пытаюсь создать следующий макет, используя CSS Flex.Это кажется простым, но есть хитрая часть, которую я объясню ниже.
HTML:
<div class="flex">
<div class="icon-col">
<div class="icon" style="max-width:120px;">
<svg>image code here...</svg>
</div>
</div>
<div class="text-col">
<h4>Awesome Design</h4>
<p>Nullam vel sem. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur blandit mollis lacus. Aenean tellus metus, bibendum sed, posuere ac, mattis non, nunc.</p>
</div>
</div>
CSS:
.flex {
display: flex;
flex-direction: row;
}
.icon-col, .text-col {
flex: 1;
}
.icon {
width: 100%;
}
Предварительный просмотр Codepen: https://codepen.io/anon/pen/KEjJeO
Как видно из предварительного просмотра, между значком и текстом слишком много места.Значок должен иметь размер 120 пикселей, как указано во встроенном CSS, а ширина текстового столбца должна увеличиваться или уменьшаться в зависимости от размера значка.
Попробуйте сложную часть:
Значок имеет динамическую ширину.
Я могу определить ширину для значка, используя только встроенный стиль в HTML, в элементе .icon
, как показано выше в HTML.
Я не контролирую элемент .icon-col
, так как добавляю к нему динамическую ширину.Было бы легко, если бы я мог просто добавить ширину к .icon-col
.
Я также не могу добавить ширину к .text-col
, потому что она должна автоматически изменять размер в зависимости от размера значка.
Как .icon-col
может иметь ширину, равную его дочернему элементу .icon
, и изменять размер текстового столбца автоматически?