#html #css #twitter-bootstrap
#HTML #css #twitter-bootstrap
Вопрос:
Как нам сделать так, чтобы изображение «помещалось» во второй столбец ниже? Это Bootstrap 4, и я хочу, чтобы правый столбец занимал ту же высоту, что и левый столбец, а затем изображение помещалось внутри него с сохранением соотношения сторон. Я также хочу, чтобы оно было центрировано по горизонтали и вертикали.
HTML в настоящее время выглядит следующим образом:
<div class="form-row">
<div class="col">
<div class="form-group">
<!-- Upload Image option -->
</div>
<div class="form-group">
<!-- Image URL option -->
</div>
</div>
<div class="col-md-4">
<img src="leg.jpg" height="70px" />
</div>
</div>
Я просто не хочу указывать этот height="70px"
атрибут. Изображение должно расширяться / сжиматься, чтобы покрыть доступную высоту (определяется левой колонкой). Затем ширину изображения следует отрегулировать, чтобы сохранить соотношение сторон неизменным. Изображение, наконец, должно быть центрировано по горизонтали или вертикали.
Ответ №1:
Судя по скриншоту, здесь есть CSS из других классов и больше HTML-макета, чем предусмотрено. Вот следующие стили, относящиеся к img, с <figure>
обернутым вокруг него.
<figure class='figure'> <img class='figure-img fluid-img'...> </figure> img { object-fit:contain; max-width:100%; height:auto } .col { display:flex; flex-flow:column nowrap; justify-content: center; align-items:center }
.form-row {
max-width: 540px;
}
img {
object-fit: contain;
max-width: 100%;
height: auto
}
.column {
display: flex;
flex-flow: column nowrap;
justify-content: center;
align-items: center
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
<main class='container'>
<section class="form-row">
<section class="column col-8">
<div class="form-group">
<div class="input-group mb-3">
<div class="input-group-prepend">
<div class="input-group-text">
<input type="radio">
</div>
</div>
<div class="custom-file">
<input type="file" class="custom-file-input form-control">
<label class="custom-file-label">Choose file</label>
</div>
</div>
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<div class="input-group-text">
<input type="radio">
</div>
</div>
<input type="url" class="custom-url-input form-control">
</div>
</section>
<section class="column col-4">
<figure class='figure'>
<img src="https://oehawkseye.org/wp-content/uploads/2017/01/chicken-leg.png" class='figure-img img-fluid'>
</figure>
</section>
</section>
</main>
Комментарии:
1. Спасибо за усилия. К сожалению, в вашем примере именно правый столбец определяет высоту, а это именно то, чего я не хочу. Как я уже сказал, размер изображения должен соответствовать высоте, указанной в строке, а затем ширина изображения должна измениться, чтобы сохранить соотношение сторон.
2. Я догадался о том, как определяется высота строки, используя макет и классы, которые создают стили и макет предоставленного скриншота. Если бы вы предоставили реальный код, я, вероятно, мог бы опубликовать более точный ответ. Каждый столбец равен 50%, а изображение имеет автоматическую высоту, поэтому ширина изображения фактически является определяющим фактором высоты изображения. Если правый столбец равен 33%, а левый 67%, изображение должно уменьшиться.
3. @dotNET Неважно, обновление выглядит примерно так, пожалуйста, просмотрите в удобное для вас время.