Footer
Un pied de page responsive pour vos liens de site et mentions légales.
Utilisation
Le composant Pied de page rend un élément <footer>.
Utilisez les fentes left, default et right pour personnaliser le pied de page.
<script setup lang="ts">
import type { NavigationMenuItem } from '@nuxt/ui'
const items: NavigationMenuItem[] = [
{
label: 'Figma Kit',
to: 'https://go.nuxt.com/figma-ui',
target: '_blank'
},
{
label: 'Playground',
to: 'https://stackblitz.com/edit/nuxt-ui',
target: '_blank'
},
{
label: 'Releases',
to: 'https://github.com/nuxt/ui/releases',
target: '_blank'
}
]
</script>
<template>
<UFooter>
<template #left>
<p class="text-muted text-sm">Copyright © {{ new Date().getFullYear() }}</p>
</template>
<UNavigationMenu :items="items" variant="link" />
<template #right>
<UButton
icon="i-simple-icons-discord"
color="neutral"
variant="ghost"
to="https://go.nuxt.com/discord"
target="_blank"
aria-label="Discord"
/>
<UButton
icon="i-simple-icons-x"
color="neutral"
variant="ghost"
to="https://go.nuxt.com/x"
target="_blank"
aria-label="X"
/>
<UButton
icon="i-simple-icons-github"
color="neutral"
variant="ghost"
to="https://github.com/nuxt/nuxt"
target="_blank"
aria-label="GitHub"
/>
</template>
</UFooter>
</template>Dans cet exemple, nous utilisons le composant NavigationMenu pour rendre les liens de pied de page au centre.
Vous pouvez utiliser le composant
FooterColumns pour afficher une liste de liens à l'intérieur de l'emplacement top.Exemples
Avec app.vue
Utilisez le composant Pied de page dans votre app.vue ou dans une mise en page:
app.vue
<script setup lang="ts">
import type { NavigationMenuItem } from '@nuxt/ui'
const items: NavigationMenuItem[] = [{
label: 'Figma Kit',
to: 'https://go.nuxt.com/figma-ui',
target: '_blank'
}, {
label: 'Playground',
to: 'https://stackblitz.com/edit/nuxt-ui',
target: '_blank'
}, {
label: 'Releases',
to: 'https://github.com/nuxt/ui/releases',
target: '_blank'
}]
</script>
<template>
<UApp>
<UHeader />
<UMain>
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</UMain>
<USeparator icon="i-simple-icons-nuxtdotjs" type="dashed" class="h-px" />
<UFooter>
<template #left>
<p class="text-muted text-sm">
Copyright © {{ new Date().getFullYear() }}
</p>
</template>
<UNavigationMenu :items="items" variant="link" />
<template #right>
<UButton
icon="i-simple-icons-discord"
color="neutral"
variant="ghost"
to="https://go.nuxt.com/discord"
target="_blank"
aria-label="Discord"
/>
<UButton
icon="i-simple-icons-x"
color="neutral"
variant="ghost"
to="https://go.nuxt.com/x"
target="_blank"
aria-label="X"
/>
<UButton
icon="i-simple-icons-github"
color="neutral"
variant="ghost"
to="https://github.com/nuxt/nuxt"
target="_blank"
aria-label="GitHub"
/>
</template>
</UFooter>
</UApp>
</template>
Dans cet exemple, nous utilisons le composant Separator pour ajouter une bordure au-dessus du pied de page.
api
Props
| Prop | Default | Type |
|---|---|---|
as | 'footer' | anyThe element or component this component should render as. |
ui | { root?: SlotClass; top?: SlotClass; bottom?: SlotClass; container?: SlotClass; left?: SlotClass; center?: SlotClass; right?: SlotClass; } |
Slots
| Slot | Type |
|---|---|
left | {} |
default | {} |
right | {} |
top | {} |
bottom | {} |
Thème
app.config.ts
export default defineAppConfig({
ui: {
footer: {
slots: {
root: '',
top: 'py-8 lg:py-12',
bottom: 'py-8 lg:py-12',
container: 'py-8 lg:py-4 lg:flex lg:items-center lg:justify-between lg:gap-x-3',
left: 'flex items-center justify-center lg:justify-start lg:flex-1 gap-x-1.5 mt-3 lg:mt-0 lg:order-1',
center: 'mt-3 lg:mt-0 lg:order-2 flex items-center justify-center',
right: 'lg:flex-1 flex items-center justify-center lg:justify-end gap-x-1.5 lg:order-3'
}
}
}
})vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
ui: {
footer: {
slots: {
root: '',
top: 'py-8 lg:py-12',
bottom: 'py-8 lg:py-12',
container: 'py-8 lg:py-4 lg:flex lg:items-center lg:justify-between lg:gap-x-3',
left: 'flex items-center justify-center lg:justify-start lg:flex-1 gap-x-1.5 mt-3 lg:mt-0 lg:order-1',
center: 'mt-3 lg:mt-0 lg:order-2 flex items-center justify-center',
right: 'lg:flex-1 flex items-center justify-center lg:justify-end gap-x-1.5 lg:order-3'
}
}
}
})
]
})Changelog écrit
No recent changes