Я пытаюсь заполнить столбец строки, созданной с помощью начальной загрузки, изображением. Я хочу, чтобы изображение было той же высоты, что и строка, и часть изображения, которая не соответствует ширине, должна быть обрезана. Однако изображение либо соответствует ширине столбца, а под ним пусто, либо даже больше, чем вся таблица, если это можно так назвать.
Я пробовал с высотой 100% и object-fit:cover, но ничего не помогло.
Проблема в первом столбце (остальные столбцы игнорируйте).
.hotel-box {
border: 1px solid gray;
border-radius: 16px;
width: 40%;
margin: 50px 0;
}
.hotel-box img {
height: 100%;
object-fit: cover;
}
<!-- Bootstrap-5 -->
<link href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel = "stylesheet" integrity = "sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin = "anonymous">
<!-- Body -->
<div class = "hotel-box">
<div class = "row">
<div class = "col-4">
<img src = "https://cf.bstatic.com/xdata/images/hotel/max1024x768/279134335.jpg?k=341488f6f4dc7bc8d6232b06730e304ed655bd4a944b1a90eb2ab81ac92a0568&o=&hp=1" alt = "">
</div>
<div class = "col-5">
<h3>Hotel name</h3>
<p>some info</p>
<p>room info</p>
<p>extra info</p>
</div>
<div class = "col-3">
<h4>word rating</h4>
<p>number reviews</p>
<span>number rating</span>
<span>BGN price</span>
<p>per night per person(под числото с дребен шрифт)</p>
</div>
</div>
</div>
Попробуй это:
.hotel-box img{
width: 100%;
}
Простое использование width: 100%;
должно сработать.
.hotel-box {
border: 1px solid gray;
border-radius: 16px;
width: 40%;
margin: 50px 0;
}
.hotel-box img {
width: 100%;
}
<div class = "hotel-box">
<div class = "row">
<div class = "col-4">
<img src = "https://cf.bstatic.com/xdata/images/hotel/max1024x768/279134335.jpg?k=341488f6f4dc7bc8d6232b06730e304ed655bd4a944b1a90eb2ab81ac92a0568&o=&hp=1" alt = "">
</div>
<div class = "col-5">
<h3>Hotel name</h3>
<p>some info</p>
<p>room info</p>
<p>extra info</p>
</div>
<div class = "col-3">
<h4>word rating</h4>
<p>number reviews</p>
<span>number rating</span>
<span>BGN price</span>
<p>per night per person(под числото с дребен шрифт)</p>
</div>
</div>
</div>
Это конкретно вопрос Bootstrap. Нет необходимости в пользовательском CSS
Для этого вам не нужен специальный CSS. Просто добавьте классы w-100
и object-fit-cover
к изображению:
.hotel-box {
border: 1px solid gray;
border-radius: 16px;
width: 40%;
margin: 50px 0;
}
<!-- Bootstrap-5 -->
<link href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel = "stylesheet" integrity = "sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin = "anonymous">
<!-- Body -->
<div class = "hotel-box">
<div class = "row">
<div class = "col-4">
<img src = "https://cf.bstatic.com/xdata/images/hotel/max1024x768/279134335.jpg?k=341488f6f4dc7bc8d6232b06730e304ed655bd4a944b1a90eb2ab81ac92a0568&o=&hp=1" alt = "" class = "w-100 object-fit-cover">
</div>
<div class = "col-5">
<h3>Hotel name</h3>
<p>some info</p>
<p>room info</p>
<p>extra info</p>
</div>
<div class = "col-3">
<h4>word rating</h4>
<p>number reviews</p>
<span>number rating</span>
<span>BGN price</span>
<p>per night per person(под числото с дребен шрифт)</p>
</div>
</div>
</div>
Обратите внимание: ваш дизайн не полностью адаптивный. Вам следует добавить классы точек останова.
Может, еще раз прочитать вопрос? Bootstrap специально не рассматривает это. Вам нужен специальный CSS.
Самый простой способ добиться этого — сделать изображение фоном столбца, как показано в примере ниже. Используйте специальный CSS для изменения размера и положения изображения, и вы можете динамически встроить свойство background-image
для каждого элемента в вашем HTML.
.hotel-box {
border: 1px solid gray;
border-radius: 16px;
width: 40%;
margin: 50px 0;
}
.hotel-box .image-col {
background-position-x: center;
background-size: cover;
}
<!-- Bootstrap-5 -->
<link href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel = "stylesheet" integrity = "sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin = "anonymous">
<!-- Body -->
<div class = "hotel-box">
<div class = "row">
<div class = "col-4 image-col" style='background-image: url("https://cf.bstatic.com/xdata/images/hotel/max1024x768/279134335.jpg?k=341488f6f4dc7bc8d6232b06730e304ed655bd4a944b1a90eb2ab81ac92a0568&o=&hp=1");' alt = "">
</div>
<div class = "col-5">
<h3>Hotel name</h3>
<p>some info</p>
<p>room info</p>
<p>extra info</p>
</div>
<div class = "col-3">
<h4>word rating</h4>
<p>number reviews</p>
<span>number rating</span>
<span>BGN price</span>
<p>per night per person(под числото с дребен шрифт)</p>
</div>
</div>
</div>
Это конкретно вопрос Bootstrap. Нет необходимости в пользовательском CSS