#javascript #css #vue.js #vuetify.js
#javascript #css #vue.js #vuetify.js
Вопрос:
Когда я использую v-carousel, все работает нормально, за исключением того, что я заметил на мобильных устройствах, даже если сама карусель отзывчива, изображения внутри нее нет, поэтому отображается только средняя часть каждого изображения:
<v-carousel hide-delimiters>
<v-carousel-item
v-for="(item,i) in items"
:key="i"
:src="item.src"
></v-carousel-item>
</v-carousel>
Как я могу преодолеть эту проблему? Я хочу, чтобы изображения внутри карусели также были отзывчивыми.
Ответ №1:
Я проверил v-carousel, и похоже, что они div
с изображениями, установленными в качестве фонового изображения, так что вы ищете background-size
css и установили для него значение background-size: cover
, и оно должно быть установлено. Для получения более подробной информации ознакомьтесь с W3 здесь
РЕДАКТИРОВАТЬ: При более детальном рассмотрении v-carousel, похоже, что форматирование изображений настроено в API здесь
Комментарии:
1. Я попробовал,
active-class
установив класс CSS, определенный, как вы сказали, но это не работает. Спасибо за отзыв2. Похоже, это зависит от браузера?
3. Я пробовал оба
aspect-ratio
иactive-class
, но безрезультатно. Любой пример, приведенный здесь в документации , может быть использован для прямой онлайн-игры.4. Да, я тоже так делал
5. Если
contain
имеет значение true, то изображения будут обрезаны
Ответ №2:
Я не знаю, как работает v-carousel, однако, просто взглянув на сгенерированный html, карусель использует фоновые изображения, и это мешает вашему изображению быть отзывчивым.
Я предлагаю вам изменить carousel или поискать опцию, которая позволяет изменить способ размещения изображения.
С помощью тега img вы можете установить в своем css max-width: 100%
, и ваше изображение будет отзывчивым.
Ответ №3:
Просто добавьте height="auto"
на <v-carousel>
вот так:
<v-carousel height="auto" hide-delimiters>
Затем карусель станет отзывчивой, и изображение будет уменьшаться в соответствии с шириной вашего контейнера / экрана.
Ответ №4:
Я проверил v-carousel-item
и обнаружил, что это изображение, а затем, проверив v-img
в vuetify, я обнаружил, что с помощью добавления contain
в v-carousel-item
вы можете принудительно отобразить все области изображения и предотвратить обрезку изображения, если оно не подходит. ваш код должен измениться на это:
<v-carousel hide-delimiters>
<v-carousel-item
v-for="(item,i) in items"
:key="i"
:src="item.src"
contain
></v-carousel-item>
</v-carousel>