In Vuetify, the
v-app component and the app prop on components like
v-footer and more, help bootstrap your application with the proper sizing around
<v-main> component. This allows you to create truly unique interfaces without the hassle of managing your layout sizing. The
v-app component is REQUIRED for all applications. This is the mount point for many of Vuetify's components and functionality and ensures that it propagates the default application variant (dark/light) to children components and also ensures proper cross-browser support for certain click events in browsers like Safari.
v-app should only be rendered within your application ONCE. If you are using multiple layouts in your application you will need to ensure each root layout file that will contain Vuetify components has a
v-app at the root of its template.
Select your desired component from below and see the available props, slots, events and functions.
In order for your application to work properly, you must wrap it in a
v-app component. This component is required for ensuring proper cross-browser compatibility. Vuetify doesn't support multiple isolated Vuetify instances on a page.
v-app can exist anywhere inside the body of your app, however, there should only be one and it must be the parent of ALL Vuetify components.
This is an example of the default application markup for Vuetify. You can place your layout elements anywhere, as long as you apply the app property. The key component in all of this is
v-main. This will be dynamically sized depending upon the structure of your designated app components. You can use combinations of any or all of the above components including
When using vue-router it is recommended that you place your views inside
Applying the app prop automatically applies position: fixed to the layout element. If your application calls for an absolute element, you can overwrite this functionality by using the absolute prop.
Below is a list of all the components that support the app prop and can be used as layout elements in your application. These can be mixed and matched and only one of each particular component should exist at any time. You can, however, swap them out and the layout will accommodate. For some examples displaying how you can build various layouts, checkout the Pre-made layouts page.
Each of these application components have a designated location and priority that it affects within the layout system.
- v-system-bar: Is always placed at the top of an application with higher priority than
- v-app-bar: Is always placed at the top of an application with a lower priority than
- v-navigation-drawer: Can be placed on the left or right side of an application and can be configured to sit next to or below
- v-footer: Is always placed at the bottom of an application with a lower priority than
- v-bottom-navigation: Is always placed at the bottom of an application with a higher priority than
In a nutshell, that means that
v-system-bar is always above
v-navigation-drawer can occupy the left or right side and
v-footer always sits on top of
The application service is used to configure your Vuetify layout. It communicates with the
v-main component so that it's able to properly size the application content. It has a number of properties that can be accessed:
These values are automatically updated when you add and remove components with the app prop. They are NOT editable and exist in a READONLY state. You can access these values by referencing the application property on the $vuetify object.
Ready for more? Continue reading with: