Как настроить модальное окно так, чтобы оно соответствовало фактическому размеру содержащегося изображения?

#html #css #bootstrap-4

#HTML #css #bootstrap-4

Вопрос:

Я использую Bootstrap 4.2, чтобы показывать всплывающее окно (модальное) с изображением реального размера (100%) как по ширине, так и по высоте, если позволяет размер окна браузера, а если нет, то есть если изображение больше размера окна, то оно будет уменьшено автоматически. Я пытался использовать следующий код, но изображение увеличивается ( 100%) по ширине модального окна, хотя я настроил его на максимальную ширину: 100%.

 <!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Imagen 100%</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X 965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH 8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
</head>
<body>
    <style>
        .img-100{
            max-width: 100%;
            max-height: 100%;
       }
    </style>
    <a href="#modalArticulo" role="button" class="btn btn-primary" data-toggle="modal">Launch modal</a>
    <div id="modalArticulo" class="modal fade " tabindex="-1" role="dialog">
        <div class="modal-dialog modal-dialog-centered">
            <div class="modal-content">
                <img src="../images/Imagen360x360.jpg" class="img-100">
           <!-- <img src="../images/Imagen1200x1200.jpg" class="img-100"> -->
            </div>
        </div>
    </div>
</body>
</html>
  

Изображения будут загружаться динамически, поэтому я не могу знать размер изображений по умолчанию.

Ответ №1:

Установка поля в значение auto предотвратит растягивание изображения до заполнения ширины и высоты модального div. Вам не нужно устанавливать максимальную ширину или максимальную высоту изображения.

 .modal-image {
    margin: auto
}
  

Кроме того, добавьте этот класс, чтобы модальное окно соответствовало изображению и располагалось по центру экрана. Без этого модальное окно будет отображать границы вокруг изображения.

 .modal-content {
     width: unset;
     margin: auto;
}
  

Комментарии:

1. Это не сработало должным образом, оно не реагирует. Попробуйте изображение большего размера, чем окно, например 1200×1200. <a href=»#modalArticulo» role=»button» class=»btn btn-primary» data-toggle=»modal»>Запустить modal</a> <div id=»modalArticulo» class=»modal-image fade » tabindex=»-1″ role=»dialog»> <div class=»модальный диалог, ориентированный на модальный диалог»> <div class =»модальный контент»> <img src=»../images/Imagen360x360.jpg «class=»»> <!— <img src=»../images/Imagen1200x1200.jpg «class=»»> —> </div> </div> </div>