Почему появляются отступы вверху и внизу изображения?

Наткнулся на непонятное поведение изображения при масштабировании. Вот пример.

Пример в виде картинки
ylnka9dlvunfv15fwfdzeq-igdy.png
HTML
<div class="container">
    <div class="text">
        Lorem Ipsum is simply dummy text of the printing and
        typesetting industry. Lorem Ipsum has been the industry's
        standard dummy text ever since the 1500s, when an unknown
        printer took a galley of type and scrambled it to make a
        type specimen book. It has survived not only five
        centuries, but also the leap into electronic typesetting,
        remaining essentially unchanged. It was popularised in the
        1960s with the release of Letraset sheets containing Lorem
        Ipsum passages, and more recently with desktop publishing
        software like Aldus PageMaker including versions of Lorem
        Ipsum.
    </div>
    <div class="image-with-title">
        <img src="https://svgshare.com/i/FkA.svg"/>
        <div class="title">
            Figure 1. With padding
        </div>
    </div>
</div>
CSS
img {
    width: 100%;
    
    border-radius: 5px;
    border: 1px solid red;
}

.container {
    width: 100%;
    
    display: flex;
}

.image-with-title {
    width: 30%;
    flex-shrink: 0;
    
    padding: 0 0 0 5px; /* not good */
    /* margin: 0 0 0 5px; */ /* good */
    
    display: flex;
    flex-direction: column;
}

.title {
    margin: 5px 0 0 0;
}

Видно, что изображение не доходит до рамки сверху и снизу, из-за чего появляются отступы. У себя я это заметил потому, что не было видно скругления углов у изображения. Если в примере закомментировать padding и раскомментировать margin, то странные отступы пропадают.

С чем связано такое странное поведение при наличии padding'а?
  • Вопрос задан
  • 713 просмотров
Решения вопроса 1
sfi0zy
@sfi0zy Куратор тега CSS
Creative frontend developer
Это один из багов отображения SVG-картинок во flex-контейнерах. Это вообще больная тема, там эти картинки то схлопываются по ширине, то получают странные отступы в отдельных браузерах. Можно решить, обернув картинку в div с явным указанием display=block для него:

<div class="test">
    <img src="https://123.svg"/>
</div>


.test {
    display: block;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
потому что у тебя пропорции картинки такие) ты делаешь width:100% соответственно height выставляется автоматически в пропорциях вот тебе и белые полосы сверху и с низу. если напишешь height: 100% вместо width полосы уже по бокам будет)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы