Я тоже пытался разгадать эту загадку, так как кажется, что трудно разобраться в javascript для обработки простых изменений стиля для устройств разных размеров.
Как оказалось, генерация пользовательских правил CSS для разных точек останова довольно проста, потому что Vuetify использует Stylus и назначает точки останова для переменной Stylus. Естественно, эта переменная доступна в ваших пользовательских компонентах vue и файлах стилей (при условии, что вы правильно настроили препроцессор для компиляции стилуса).
Вот некоторые ресурсы, которые помогли мне лучше понять вещи:
Настройка препроцессора:
Изменение переменных стилуса - Vuetify:
Стилус @media запросы - http://stylus -lang.com / docs / media.html
Как вы увидите, стилус $ display-breakpoints - ваш новый лучший друг!
Сложите все это, и вот что вы получаете в отдельном файловом компоненте Vue:
<template>
<v-layout column justify-center align-center>
<v-flex xs12 sm8 md6>
<v-card>
<v-card-title class="custom-selector headline">
Welcome to the Vuetify + Nuxt.js template
</v-card-title>
</v-card>
</v-flex>
</v-layout>
</template>
<script>
export default {
// ...
}
</script>
<style lang="styl">
.custom-selector
font-size 3em
@media $display-breakpoints.xs-only
font-size 2em
@media $display-breakpoints.lg-and-up
font-size 5em
</style>
Обратите внимание, что в приведенном выше коде мы меняем размер шрифта компонента <v-card-title>
, ориентируясь на него в наших медиа-запросах Stylus и используя объект $ display-breakpoints для определения желаемой точки останова.
Я думаю, что преимущество отсутствия инфраструктуры пользовательского интерфейса, которая генерирует каждую опцию на каждой точке останова, заключается в гораздо меньшем размере файла для загрузки. Кажется, что Vuetify + Stylus - более легкий подход, который делает написание пользовательских запросов @media самым простым и эффективным способом.