Я использую Bootstrap v5.3.3 Carousel. Моя проблема заключается в том, что карусель показывает увеличенное изображение при нажатии следующего или предыдущего, если карусель заключена в класс float-start
.
Минимальные коды здесь:
<link href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel = "stylesheet" integrity = "sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin = "anonymous">
<div class = "container">
<div class = "row">
<div class = "col-12">
<div class = "float-start">
<div id = "carousel_project" class = "carousel slide img-fluid me-3 mb-3">
<div class = "carousel-inner">
<div class = "carousel-item active">
<img src = "https://place-hold.it/800x800/F00" class = "d-block w-100" alt = "" />
</div>
<div class = "carousel-item">
<img src = "https://place-hold.it/800x800/00F" class = "d-block w-100" alt = "" />
</div>
<div class = "carousel-item">
<img src = "https://place-hold.it/800x800/0F0" class = "d-block w-100" alt = "" />
</div>
</div>
<button class = "carousel-control-prev" type = "button" data-bs-target = "#carousel_project" data-bs-slide = "prev">
<span class = "carousel-control-prev-icon" aria-hidden = "true"></span>
</button>
<button class = "carousel-control-next" type = "button" data-bs-target = "#carousel_project" data-bs-slide = "next">
<span class = "carousel-control-next-icon" aria-hidden = "true"></span>
</button>
</div>
</div>
<div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla interdum blandit nisi a tincidunt. Nunc dapibus nibh quis sapien vehicula venenatis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper lectus sit amet mollis pretium. Praesent quam tellus, hendrerit id lobortis vitae, facilisis sed tellus. Etiam magna dui, sodales non enim a, aliquet vulputate libero. Phasellus dictum, lacus vel congue tincidunt, eros velit tincidunt dolor, eget dignissim lacus lacus sed ligula. Praesent quis eros blandit sem egestas tincidunt et at libero.</p>
<p>Phasellus vel laoreet arcu. Quisque dignissim quam ac odio viverra, ac tristique nisi elementum. Curabitur et porta ante, nec pellentesque ligula. Sed accumsan finibus convallis. Donec eu venenatis diam. Suspendisse ornare odio enim, et laoreet risus lobortis vel. Sed lobortis nisl sem, sed commodo augue elementum sit amet. Cras suscipit nisl sed blandit hendrerit. Sed nec purus vel tellus tincidunt malesuada.</p>
<p>Quisque non mi et tellus dictum dapibus. Cras sit amet interdum dui. Maecenas vestibulum fringilla feugiat. Morbi feugiat lacus volutpat malesuada euismod. Sed ullamcorper dui ac nulla commodo condimentum. Proin finibus felis a est volutpat ultrices. Donec non libero et eros aliquet facilisis. Morbi pharetra lobortis dolor. In non mauris at arcu eleifend lobortis a in ex. Aenean elementum, neque vitae rutrum condimentum, justo sapien tempus arcu, ut convallis elit ex quis nisl. Cras ullamcorper, orci a volutpat sagittis, eros nulla ornare neque, quis blandit odio lorem nec nibh. Nullam egestas ex et pellentesque egestas. Duis faucibus aliquam fermentum. Nullam ac luctus diam. Quisque sed dui tortor. Maecenas nunc quam, maximus a pellentesque ac, malesuada ac augue.</p>
<p>Curabitur suscipit urna sed mauris aliquam elementum. Duis at tellus eu sem bibendum lacinia. Suspendisse velit tortor, eleifend a ligula eget, volutpat tincidunt metus. Cras molestie, purus ut laoreet fermentum, nisl lorem rhoncus orci, nec scelerisque eros mi non urna. Ut lacinia, lorem id cursus hendrerit, tortor urna vehicula nulla, et lobortis dolor elit id est. Mauris vulputate eros eget malesuada egestas. Sed congue et sapien et lacinia. Duis vulputate magna id fermentum ornare. Praesent vel orci ultrices, condimentum nisl id, lacinia eros. Aenean cursus malesuada augue, id maximus purus scelerisque in. Morbi maximus tellus vel leo pretium imperdiet. Morbi dignissim eros a erat volutpat, sit amet interdum elit malesuada. Ut augue arcu, ultrices eu congue in, convallis nec lacus. Donec sapien ipsum, ultrices ac dolor quis, rhoncus dictum nunc. Vestibulum finibus nulla nec leo viverra, in rutrum felis maximus.</p>
<p>Aliquam semper mi sit amet finibus vestibulum. Aenean in nisi non lectus cursus placerat interdum eu mi. Quisque finibus ligula at urna efficitur, vitae ornare metus mollis. Ut non euismod dui, ac mollis urna. Pellentesque at ligula at nunc convallis interdum ac vel velit. Cras ullamcorper elit pulvinar turpis suscipit, vel volutpat quam ultrices. Aliquam aliquam diam urna, id luctus nulla sodales eget. Nunc rutrum turpis at purus fermentum, nec finibus nunc convallis. Donec faucibus erat turpis, eleifend gravida nibh gravida non. Sed venenatis mollis orci id euismod.</p>
</div>
</div>
</div>
</div>
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity = "sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin = "anonymous"></script>
Никаких дополнительных CSS или JS, которые могли бы повлиять на результаты, не прилагается. Вы можете найти JSFiddle здесь.
Как решить проблему с размером? Спасибо.
Да, это возможно.
Попробуйте указать максимальную ширину <div class = "float-start" style = "max-width: 800px">
@Yogi Ширина области просмотра должна быть не менее 1100 пикселей, чтобы галерея перемещалась влево, а текст находился справа. При нажатии кнопки «Далее/Предыдущий» изображение расширяется до 100 % ширины родительского контейнера, а текст перемещается под ним до тех пор, пока анимация не завершится.
Это обычная проблема с плагинами карусели ширины, когда вы не указываете точную ширину элемента карусели, это также происходит в slickjs и splidejs.
Самый простой способ исправить это — установить ширину, например, 300 пикселей (или любую другую единицу и значение, которое вы пожелаете).
Похоже, img-fluid вызывает этот эффект изменения размера изображения.
Очень хорошее объяснение одной и той же проблемы этими людьми действительно потрясающее. Изменение размера изображения в карусели Bootstrap
Ширина плавающих изображений составляет до 800 пикселей в плавающем состоянии (внутренняя ширина изображения). Поэтому задайте максимальную ширину контейнеру карусели 800 пикселей.
Кроме того, вместо того, чтобы оборачивать карусель внутри другого div
для применения float, добавьте класс float-start
в контейнер карусели (независимо от того, используется ли это решение с максимальной шириной).
#carousel_project {max-width: 800px}
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity = "sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin = "anonymous"></script>
<link href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel = "stylesheet" integrity = "sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin = "anonymous">
<div class = "container">
<div class = "row">
<div class = "col-12">
<div id = "carousel_project" class = "carousel slide img-fluid me-3 mb-3 float-start">
<div class = "carousel-inner">
<div class = "carousel-item active">
<img src = "https://place-hold.it/800x800/F00" class = "d-block w-100" alt = "" />
</div>
<div class = "carousel-item">
<img src = "https://place-hold.it/800x800/00F" class = "d-block w-100" alt = "" />
</div>
<div class = "carousel-item">
<img src = "https://place-hold.it/800x800/0F0" class = "d-block w-100" alt = "" />
</div>
</div>
<button class = "carousel-control-prev" type = "button" data-bs-target = "#carousel_project" data-bs-slide = "prev">
<span class = "carousel-control-prev-icon" aria-hidden = "true"></span>
</button>
<button class = "carousel-control-next" type = "button" data-bs-target = "#carousel_project" data-bs-slide = "next">
<span class = "carousel-control-next-icon" aria-hidden = "true"></span>
</button>
</div>
<div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla interdum blandit nisi a tincidunt. Nunc dapibus nibh quis sapien vehicula venenatis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper lectus sit amet mollis pretium. Praesent quam tellus, hendrerit id lobortis vitae, facilisis sed tellus. Etiam magna dui, sodales non enim a, aliquet vulputate libero. Phasellus dictum, lacus vel congue tincidunt, eros velit tincidunt dolor, eget dignissim lacus lacus sed ligula. Praesent quis eros blandit sem egestas tincidunt et at libero.</p>
<p>Phasellus vel laoreet arcu. Quisque dignissim quam ac odio viverra, ac tristique nisi elementum. Curabitur et porta ante, nec pellentesque ligula. Sed accumsan finibus convallis. Donec eu venenatis diam. Suspendisse ornare odio enim, et laoreet risus lobortis vel. Sed lobortis nisl sem, sed commodo augue elementum sit amet. Cras suscipit nisl sed blandit hendrerit. Sed nec purus vel tellus tincidunt malesuada.</p>
<p>Quisque non mi et tellus dictum dapibus. Cras sit amet interdum dui. Maecenas vestibulum fringilla feugiat. Morbi feugiat lacus volutpat malesuada euismod. Sed ullamcorper dui ac nulla commodo condimentum. Proin finibus felis a est volutpat ultrices. Donec non libero et eros aliquet facilisis. Morbi pharetra lobortis dolor. In non mauris at arcu eleifend lobortis a in ex. Aenean elementum, neque vitae rutrum condimentum, justo sapien tempus arcu, ut convallis elit ex quis nisl. Cras ullamcorper, orci a volutpat sagittis, eros nulla ornare neque, quis blandit odio lorem nec nibh. Nullam egestas ex et pellentesque egestas. Duis faucibus aliquam fermentum. Nullam ac luctus diam. Quisque sed dui tortor. Maecenas nunc quam, maximus a pellentesque ac, malesuada ac augue.</p>
<p>Curabitur suscipit urna sed mauris aliquam elementum. Duis at tellus eu sem bibendum lacinia. Suspendisse velit tortor, eleifend a ligula eget, volutpat tincidunt metus. Cras molestie, purus ut laoreet fermentum, nisl lorem rhoncus orci, nec scelerisque eros mi non urna. Ut lacinia, lorem id cursus hendrerit, tortor urna vehicula nulla, et lobortis dolor elit id est. Mauris vulputate eros eget malesuada egestas. Sed congue et sapien et lacinia. Duis vulputate magna id fermentum ornare. Praesent vel orci ultrices, condimentum nisl id, lacinia eros. Aenean cursus malesuada augue, id maximus purus scelerisque in. Morbi maximus tellus vel leo pretium imperdiet. Morbi dignissim eros a erat volutpat, sit amet interdum elit malesuada. Ut augue arcu, ultrices eu congue in, convallis nec lacus. Donec sapien ipsum, ultrices ac dolor quis, rhoncus dictum nunc. Vestibulum finibus nulla nec leo viverra, in rutrum felis maximus.</p>
<p>Aliquam semper mi sit amet finibus vestibulum. Aenean in nisi non lectus cursus placerat interdum eu mi. Quisque finibus ligula at urna efficitur, vitae ornare metus mollis. Ut non euismod dui, ac mollis urna. Pellentesque at ligula at nunc convallis interdum ac vel velit. Cras ullamcorper elit pulvinar turpis suscipit, vel volutpat quam ultrices. Aliquam aliquam diam urna, id luctus nulla sodales eget. Nunc rutrum turpis at purus fermentum, nec finibus nunc convallis. Donec faucibus erat turpis, eleifend gravida nibh gravida non. Sed venenatis mollis orci id euismod.</p>
</div>
</div>
</div>
</div>
Кроме того, row
и col-12
div
можно удалить, не влияя на макет.
Частично это работает. фиктивные фотографии шириной 800 пикселей предназначены только для иллюстрации идеи. Фактический сценарий таков, что фотографии имеют разные размеры. Установка максимальной ширины на 800 пикселей очень помогает, но это значение необходимо корректировать в соответствии с различными точками останова медиа-запроса.
Похоже, возникла проблема с определением правильной ширины плавающей карусели. Можете ли вы указать ширину плавающего элемента?