У меня есть приложение vue. js, использующее Vuetify. У меня есть таблица, которая выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/IzCIt.png)
Вот код для этого:
<v-card class="mb-3 px-3">
<v-card-title class="px-0">
<div class="headline">Items</div>
</v-card-title>
<v-container fluid pa-0>
<v-layout row wrap py-3>
<v-flex xs9 sm6 md9>
<v-label>Item</v-label>
</v-flex>
<v-flex sm2 md1 class="text-xs-center hidden-xs-only"><v-label>Col 1</v-label></v-flex>
<v-flex sm2 md1 class="text-xs-center hidden-xs-only"><v-label>Col 2</v-label></v-flex>
<v-flex sm2 md1 class="text-xs-center hidden-xs-only"><v-label>Col 3</v-label></v-flex>
</v-layout>
<v-divider></v-divider>
</v-container>
<v-form>
<v-card v-for="(item, index) in items" :key="index" :id="'index-' + index" flat>
<v-container fluid pa-0>
<v-layout row wrap align-center style="min-height: 80px;">
<v-flex xs12 sm9><p class="pt-3 pb-3 font-weight-medium">row {{index+1}}</p></v-flex>
<v-flex xs4 sm2 md1 class="checkbox-order"><label class="hidden-sm-and-up" style="width: 0;">Col 1:</label><v-checkbox v-model="item.col1" class="checkbox"></v-checkbox></v-flex>
<v-flex xs4 sm2 md1 class="checkbox-order"><label class="hidden-sm-and-up" style="width: 0;">Col 2:</label><v-checkbox v-model="item.col2" class="checkbox"></v-checkbox></v-flex>
<v-flex xs4 sm2 md1 class="checkbox-order"><label class="hidden-sm-and-up" style="width: 0;">Col 3:</label><v-checkbox v-model="item.col3" class="checkbox"></v-checkbox></v-flex>
</v-layout>
</v-container>
<v-divider v-if="index < items.length - 1"></v-divider>
</v-card>
</v-form>
</v-card>
Когда я уменьшаю страница размером менее 600 пикселей выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/1B2ZO.png)
Мы пытаемся здесь взять заголовки столбцов и преобразовать их на ярлыки слева от каждого флажка. Вот тут и вступает в игру
<label class="hidden-sm-and-up">
.
Мне не понравилось, как метка и флажок не совмещены. Исследуя это, я обнаружил, что это потому, что метка и флажок выровнены в виде столбцов с меткой сверху (и выровненным по левому краю) и флажком снизу (по центру по центру). Чтобы исправить это, я добавил d-flex к v-flex каждого столбца:
<v-flex xs4 sm2 md1 d-flex class="checkbox-order"><label class="hidden-sm-and-up" style="width: 0;">Col 1:</label><v-checkbox v-model="item.col1" class="checkbox"></v-checkbox></v-flex>
<v-flex xs4 sm2 md1 d-flex class="checkbox-order"><label class="hidden-sm-and-up" style="width: 0;">Col 2:</label><v-checkbox v-model="item.col2" class="checkbox"></v-checkbox></v-flex>
<v-flex xs4 sm2 md1 d-flex class="checkbox-order"><label class="hidden-sm-and-up" style="width: 0;">Col 3:</label><v-checkbox v-model="item.col3" class="checkbox"></v-checkbox></v-flex>
Это решило проблему для носителей менее 600 пикселей:
![enter image description here](https://i.stack.imgur.com/aVaEp.png)
Однако, когда я возвращаю экран выше 600px, он теперь выглядит так:
![enter image description here](https://i.stack.imgur.com/RtZTb.png)
Флажки нет длиннее по центру под заголовками столбцов. Я не знаю, как снова расположить их по центру.
Мне интересно, есть ли способ заставить его применять класс d-flex только тогда, когда экран меньше 600 пикселей. Я знаю, как применять различные классы с помощью v-if, но я не знаю, как проверить размер экрана с помощью v-if. Я также знаю, как применять разные стили к медиазапросам, но это работает только для стилей в одном классе, но не для применения совершенно разных классов.
Кто-нибудь знает, как применять класс d-flex только тогда, когда Размер экрана меньше 600 пикселей? Спасибо.