#vue.js #vue-component #vuetify.js
Вопрос:
Итак, я пытаюсь настроить простую сетку с тремя v-картами на равных расстояниях.
<v-main>
<v-container>
<v-row>
<v-col>
<v-card outlined tile>Card 1</v-card>
</v-col>
<v-col>
<v-card outlined tile>Card 2</v-card>
</v-col>
<v-col>
<v-card outlined tile>Card 3</v-card>
</v-col>
</v-row>
</v-container>
</v-main>
Теперь, согласно документам и примерам, которые у них есть, это должно оставить меня с 3 картами на равных расстояниях, и это действительно так.
Проблема в том, что в тот момент, когда я нависаю над любым из них, все они темнеют. Просмотр инструментов разработки показывает следующую проблему:
Как вы можете видеть, v-карты не находятся внутри v-дисков, как должно быть. Тем не менее, я не вижу никаких ошибок в коде. Я пропустил какое-то дополнительное правило или что-то в этом роде?
Комментарии:
1. Вы пробовали без
v-container
этого ?2. ДА. Результаты те же самые
3. Ваш код, похоже, работает (
v-card
буквы s отображаются внутриv-col
) в этом разделе кода. Но из вашего примера не очевидно, почему карты должны менять цвет при наведении. Можете ли вы обновить кодовую строку, чтобы продемонстрировать проблему?
Ответ №1:
Я считаю, что проблема с затемнением при наведении должна быть в другом месте и не связана со странностью, которую вы видите в отладчике Vue. Я не думаю, что с вашим кодом что-то не так (сравните его с тем, что я упоминаю в № 1 ниже). Я склонен полагать, что странность в отладчике-это либо его собственная ошибка, либо ошибка (или функция?) связано с тем, как отладчик отражает внутренние компоненты Vuetify, что не портит реальное поведение приложения. Вот мои аргументы:
- Посмотреть Vuetify сетки с карты примеру — он структурирован таким же образом, как в вашем примере (игнорировать их ‘простудные’ атрибут в-коль тег — они демонстрируют неравномерное распределение столбцов, и если вы удалите этот атрибут, вы получаете практически собственный пример с 3 карточек, каждая из в-кол). Однако, если вы попытаетесь скопировать и вставить этот стандартный пример Vuetify в пустое приложение Vue CLI и посмотрите в отладчик, вы увидите ту же странную иерархию. Проверьте мой скриншот: Это, однако, не портит модель DOM, где v-карты находятся внутри v-cols, как и ожидалось: это также не создает никаких проблем с реальным поведением приложения. Изменение цвета фона при наведении (я добавил это простое изменение CSS в исходный пример Vuetify, просто чтобы попытаться воспроизвести вашу исходную проблему) работает как заклинание. Обратите внимание, что красный фон на одной карточке скриншота — он распространяется только на одну зависшую карту.
- Я помню, что в прошлом видел ту же странность иерархии Vuetify в отладчике Vue, хотя это не создавало никаких проблем и, похоже, не было вызвано какими-либо ошибками в коде. В то время я просто проигнорировал это.
- Я также скопировал ваш пример в кодовую панель, добавив всего две основные вещи: CSS для тестирования зависания (то же самое, что я добавил в № 1 выше) и базовое создание и монтирование объектов Vue (которые, я полагаю, вы должны были сгенерировать автоматически). CSS:
.v-card:hover { background-color: red; }
В JS:
new Vue({ vuetify: new Vuetify(), }).$mount('#app')
Наведение также хорошо работает в этом коде (если я правильно понимаю проблему, о которой вы упомянули). Однако я должен упомянуть, что в CSS есть одно отличие от того, что мне пришлось использовать в #1. В #1 использовался пользовательский класс CSS (
<v-card class="imgCard">
), поскольку v-карты находятся внутри другой v-карты высокого уровня, поэтому я не мог использовать». v-карта», чтобы выделить там только одну вложенную карту-в противном случае они все выделялись бы вместе. Кстати, разве это не та проблема, с которой вы столкнулись случайно?
Итак, в целом, я думаю, что либо в вашем исходном коде есть что-то еще, что вызывает проблему (предполагая, что вы, возможно, упростили ее при написании вопроса), либо я не понял, что вы имеете в виду. В любом случае, я совершенно уверен, что странность в отладчике Vuetify не означает, что с самим кодом что-то не так.
Комментарии:
1. Спасибо за это. Я взял топорик для кода и начал вырезать материал, пока проблема не прекратилась, так как оказалось, что причиной проблемы был оставшийся CSS-файл из более старой кодовой базы. Он использовал то же имя класса и применил затемнение