Не удается сделать тег 'a' блочным
<div style="display: flex; column-gap: 10px;">
<a href="#">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36" style="height: 100%;">
<path d="M0 7.875A5.623 5.623 0 0 1 5.625 2.25H13.5a2.248 2.248 0 0 1 2.25 2.25 2.248 2.248 0 0 1-2.25 2.25H5.625c-.619 0-1.125.506-1.125 1.125v22.5c0 .619.506 1.125 1.125 1.125h22.5c.619 0 1.125-.506 1.125-1.125V22.5a2.248 2.248 0 0 1 2.25-2.25 2.248 2.248 0 0 1 2.25 2.25v7.875A5.623 5.623 0 0 1 28.125 36h-22.5A5.623 5.623 0 0 1 0 30.375Z" style="opacity:.4"></path>
<path d="M20.25 2.25A2.248 2.248 0 0 1 22.5 0h11.25A2.248 2.248 0 0 1 36 2.25V13.5a2.248 2.248 0 0 1-2.25 2.25 2.248 2.248 0 0 1-2.25-2.25V7.685L17.34 21.84a2.253 2.253 0 0 1-3.186-3.185L28.314 4.5H22.5a2.248 2.248 0 0 1-2.25-2.25z"></path>
</svg>
</a>
<div>
<a href="#">TEXTTTE++EEEE</a>
<br><br>
</div>
</div>
Иконка принимает высоту родителя и ссылка тоже без строгого выставления размров. Только вот не удается сделать иконку ссылкой, блочным элементом. Иконка постоянно под последующий блок прячется...
Как сделать, чтобы иконка была блочным и высота ее была относительно текста в правом блоке... Без явного указания высоты в px и тп
Ответы (2 шт):
Насколько я понимаю, под "Без явного указания высоты в px и тп" подразумеваются абсолютные единицы. Воспользуйтесь относительными. Например, em.
<div style="display: flex; column-gap: 10px;">
<a href="#">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36" style="height: 1em;">
<path d="M0 7.875A5.623 5.623 0 0 1 5.625 2.25H13.5a2.248 2.248 0 0 1 2.25 2.25 2.248 2.248 0 0 1-2.25 2.25H5.625c-.619 0-1.125.506-1.125 1.125v22.5c0 .619.506 1.125 1.125 1.125h22.5c.619 0 1.125-.506 1.125-1.125V22.5a2.248 2.248 0 0 1 2.25-2.25 2.248 2.248 0 0 1 2.25 2.25v7.875A5.623 5.623 0 0 1 28.125 36h-22.5A5.623 5.623 0 0 1 0 30.375Z" style="opacity:.4"></path>
<path d="M20.25 2.25A2.248 2.248 0 0 1 22.5 0h11.25A2.248 2.248 0 0 1 36 2.25V13.5a2.248 2.248 0 0 1-2.25 2.25 2.248 2.248 0 0 1-2.25-2.25V7.685L17.34 21.84a2.253 2.253 0 0 1-3.186-3.185L28.314 4.5H22.5a2.248 2.248 0 0 1-2.25-2.25z"></path>
</svg>
</a>
<div>
<a href="#">TEXTTTE++EEEE</a>
<br><br>
</div>
</div>
<div style="display: flex; column-gap: 10px; font-size: 24px;">
<a href="#">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36" style="height: 1em;">
<path d="M0 7.875A5.623 5.623 0 0 1 5.625 2.25H13.5a2.248 2.248 0 0 1 2.25 2.25 2.248 2.248 0 0 1-2.25 2.25H5.625c-.619 0-1.125.506-1.125 1.125v22.5c0 .619.506 1.125 1.125 1.125h22.5c.619 0 1.125-.506 1.125-1.125V22.5a2.248 2.248 0 0 1 2.25-2.25 2.248 2.248 0 0 1 2.25 2.25v7.875A5.623 5.623 0 0 1 28.125 36h-22.5A5.623 5.623 0 0 1 0 30.375Z" style="opacity:.4"></path>
<path d="M20.25 2.25A2.248 2.248 0 0 1 22.5 0h11.25A2.248 2.248 0 0 1 36 2.25V13.5a2.248 2.248 0 0 1-2.25 2.25 2.248 2.248 0 0 1-2.25-2.25V7.685L17.34 21.84a2.253 2.253 0 0 1-3.186-3.185L28.314 4.5H22.5a2.248 2.248 0 0 1-2.25-2.25z"></path>
</svg>
</a>
<div>
<a href="#">TEXTTTE++EEEE</a>
<br><br>
</div>
</div>
<div style="display: flex; column-gap: 10px; font-size: 48px;">
<a href="#">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36" style="height: 1em;">
<path d="M0 7.875A5.623 5.623 0 0 1 5.625 2.25H13.5a2.248 2.248 0 0 1 2.25 2.25 2.248 2.248 0 0 1-2.25 2.25H5.625c-.619 0-1.125.506-1.125 1.125v22.5c0 .619.506 1.125 1.125 1.125h22.5c.619 0 1.125-.506 1.125-1.125V22.5a2.248 2.248 0 0 1 2.25-2.25 2.248 2.248 0 0 1 2.25 2.25v7.875A5.623 5.623 0 0 1 28.125 36h-22.5A5.623 5.623 0 0 1 0 30.375Z" style="opacity:.4"></path>
<path d="M20.25 2.25A2.248 2.248 0 0 1 22.5 0h11.25A2.248 2.248 0 0 1 36 2.25V13.5a2.248 2.248 0 0 1-2.25 2.25 2.248 2.248 0 0 1-2.25-2.25V7.685L17.34 21.84a2.253 2.253 0 0 1-3.186-3.185L28.314 4.5H22.5a2.248 2.248 0 0 1-2.25-2.25z"></path>
</svg>
</a>
<div>
<a href="#">TEXTTTE++EEEE</a>
<br><br>
</div>
</div>
Так, я снова меняю своё мнение, должен ли работать код из вопроса. Если интересно, прошлые мысли можно посмотреть в истории ответа. Сейчас я задал вопрос на enSO с описанием, почему код должен работать, но пока я это писал, мне пришла в голову мысль, что потомки флекса считаются в изоляции друг от друга, поэтому всё же работать не должно. Но посмотрим, что ответят. В любом случае, решение - использовать грид.
На самом деле, если я правильно понял, что ты хочешь, тебе слева нужен квадрат той же ширины, что и высота правой части? Тогда используй грид:
UPDATE: Это работает в хроме, но не в FF. Вот тут есть другие ответы
main {
display: grid;
grid-template-columns: max-content 1fr;
gap: 1em;
}
.icon-link {
aspect-ratio: 1;
height: 100%;
}
<main>
<a href="#" class="icon-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36">
<path d="M0 7.875A5.623 5.623 0 0 1 5.625 2.25H13.5a2.248 2.248 0 0 1 2.25 2.25 2.248 2.248 0 0 1-2.25 2.25H5.625c-.619 0-1.125.506-1.125 1.125v22.5c0 .619.506 1.125 1.125 1.125h22.5c.619 0 1.125-.506 1.125-1.125V22.5a2.248 2.248 0 0 1 2.25-2.25 2.248 2.248 0 0 1 2.25 2.25v7.875A5.623 5.623 0 0 1 28.125 36h-22.5A5.623 5.623 0 0 1 0 30.375Z" style="opacity:.4"></path>
<path d="M20.25 2.25A2.248 2.248 0 0 1 22.5 0h11.25A2.248 2.248 0 0 1 36 2.25V13.5a2.248 2.248 0 0 1-2.25 2.25 2.248 2.248 0 0 1-2.25-2.25V7.685L17.34 21.84a2.253 2.253 0 0 1-3.186-3.185L28.314 4.5H22.5a2.248 2.248 0 0 1-2.25-2.25z"></path>
</svg>
</a>
<div>
<a href="#">TEXTTTE++EEEE</a>
<br>123<br>456
</div>
</div>
А вообще, некликабельный гэп выглядит очень подозрительно и я думаю, что на самом деле надо ссылку снаружи:
a {
display: grid;
grid-template-columns: max-content 1fr;
gap: 1em;
}
svg {
height: 100%;
}
<a href="#">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36">
<path d="M0 7.875A5.623 5.623 0 0 1 5.625 2.25H13.5a2.248 2.248 0 0 1 2.25 2.25 2.248 2.248 0 0 1-2.25 2.25H5.625c-.619 0-1.125.506-1.125 1.125v22.5c0 .619.506 1.125 1.125 1.125h22.5c.619 0 1.125-.506 1.125-1.125V22.5a2.248 2.248 0 0 1 2.25-2.25 2.248 2.248 0 0 1 2.25 2.25v7.875A5.623 5.623 0 0 1 28.125 36h-22.5A5.623 5.623 0 0 1 0 30.375Z" style="opacity:.4"></path>
<path d="M20.25 2.25A2.248 2.248 0 0 1 22.5 0h11.25A2.248 2.248 0 0 1 36 2.25V13.5a2.248 2.248 0 0 1-2.25 2.25 2.248 2.248 0 0 1-2.25-2.25V7.685L17.34 21.84a2.253 2.253 0 0 1-3.186-3.185L28.314 4.5H22.5a2.248 2.248 0 0 1-2.25-2.25z"></path>
</svg>
<div>
TEXTTTE++EEEE
<br>123<br>456
</div>
</a>