CSS et Stylisation
Astro à été conçu pour rendre la création de style et l’écriture de CSS facile. Écrivez votre propre CSS directement dans un composant Astro ou importez une bibliothèque de style préférée comme Tailwind. Les préprocesseurs comme Sass et Less sont également supportés.
Stylisation dans Astro
Section titled Stylisation dans AstroAjouter du style à un composant Astro est aussi facile que d’ajouter une balise <style>
à votre Template de composant ou de page. Quand vous placez une balise <style>
dans un composant Astro, Astro détectera le CSS et chargera vos styles pour vous, automatiquement.
Portée des styles
Section titled Portée des stylesLes règles CSS <style>
d’Astro sont automatiquement limitées au composant par défaut. Ces styles sont transpilés en arrière-plan pour ne s’appliquer qu’à l’HTML écrit à l’intérieur du même composant. Le CSS que vous écrivez dans un composant Astro est automatiquement encapsulé dans ce composant.
Les styles délimitiés ne se propagent pas et n’affectent pas le reste de votre site. Dans Astro, c’est quelque chose de courant d’utiliser des sélecteurs de bas niveau comme h1 {}
ou p {}
car ils seront transpilés avec des encapsulations dans les fichiers servis à l’utilisateur final.
Les styles délimités ne s’appliquent pas à d’autres composants Astro contenus dans votre template. Si vous avez besoin d’appliquer des styles à un composant enfant, envisagez de placer ce composant dans une <div>
(ou tout autre élément) que vous pourrez ensuite personnaliser.
Styles globaux
Section titled Styles globauxMême si nous recommandons les styles délimités pour la plupart des composants, vous pouvez éventuellement trouver une raison valide d’écrire du CSS non délimité global. Vous pouvez désactiver l’encapsulation automatique de CSS avec l’attribut <style is:global>
.
Vous pouvez aussi mélanger les règles CSS globales et délimitées dans la même balise <style>
en utilisant le sélecteur :global()
. Cela devient un modèle puissant pour appliquer des styles CSS aux enfants de votre composant.
C’est une bonne façon de styliser des éléments comme des articles de blog, ou des documents avec un contenu CMS qui se trouve en dehors d’Astro. Mais soyez prudent : Mais soyez prudent : les composants dont l’apparence varie selon si oui ou non ils ont un certain parent composant peuvent s’en retrouver difficile à débugger.
Les styles délimités devraient être utilisés aussi souvent que possible. Les styles globaux devraient être utilisés seulement quand c’est nécessaire.
Variables CSS
Section titled Variables CSSastro@0.21.0
La balise <style>
d’Astro peut référencer n’importe quelle variable CSS disponible sur la page. Vous pouvez aussi passer des variables CSS directement depuis le frontmatter de votre composant en utilisant la directive define:vars
.
📚 Allez voir notre page de référence des directives pour en savoir plus sur define:vars
.
Styles externes
Section titled Styles externesIl y a deux façons d’avoir accès à des feuilles de styles globales externes : un import ESM pour les fichiers situés dans le code source de votre projet, et un lien absolu pour les fichiers dans le répertoire public/
ou hébergés en dehors de votre projet.
📚 En savoir plus sur l’utilisation des ressources statiques situées dans public/
ou src/
.
Importer une feuille de styles locale
Section titled Importer une feuille de styles locale⚠️ Vous auriez surement besoin de mettre à jour votre fichier
astro.config
lorsque vous importez des feuilles de styles depuis des Packages NPM. Voir la section “Importer une feuille de styles depuis un Package npm” ci-dessous.
Vous pouvez importer des feuilles de styles dans le Frontmatter de votre composant Astro en utilisant la syntaxe d’import ESM. Les imports CSS fonctionnent comme tous les autres imports ESM dans un composant Astro, devrait être référencés comme relatifs au composant et être écrits en haut de votre Script de composant, comme toutes les autres importations de ce type.
Les imports CSS via ESM sont supportés dans n’importe quel fichier JavaScript, y compris dans les composants JSX comme React & Preact. Cela peut être utile pour écrire des styles granulaires, par composant, pour vos composants React.
Importer une feuille de styles depuis un Package NPM
Section titled Importer une feuille de styles depuis un Package NPMVous pourriez avoir besoin de charger une feuille de styles depuis un Package NPM. C’est particulièrement utile pour des utilitaires comme Open Props. Si votre Package recommende d’utiliser une extension de fichier (comme package-name/styles.css
au lieu de package-name/styles
), cela devrait fonctionner comme une feuille de styles locale :
Si votre Package ne recommande pas d’utiliser une extension de fichier (tel que package-name/styles
), vous devrez d’abord mettre à jour votre fichier de configuration d’Astro !
Imaginons que vous importez un fichier CSS depuis package-name
appelé normalize
(et sans l’extension de fichier). Pour s’assurer que nous pouvons afficher votre page correctement, ajoutez package-name
à la liste vite.ssr.noExternal
.
Note : Cette option est spécifique à Vite et n’a aucun rapport (ou dépendance) avec le mode SSR d’Astro.
Maintenant, vous êtes libre d’importer package-name/normalize
. Il sera intégré et optimisé par Astro comme toutes les autres feuilles de styles locales.
Charger une feuille de styles statique via des balises “link”
Section titled Charger une feuille de styles statique via des balises “link”Vous pouvez aussi utiliser l’élément <link>
pour charger une feuille de styles sur la page. Pour cela, utiliser un chemin absolu vers un fichier CSS situé dans le répertoire /public
, ou une URL vers un site web externe. Les valeurs relative “href” sur les balises <link>
ne sont pas supportées.
Étant donné que cette approche utilise le répertoire public/
, Astro n’appliquera ni transformations CSS, ni fusion, optimisation. Si vous avez besoin de ces transformations, utilisez la méthode d’importation une feuille de styles ci-dessus.
Intégrations CSS
Section titled Intégrations CSSAstro fournit le support pour ajouter les bibliothèques CSS populaires, les outils et les frameworks de votre projet comme Tailwind et plus encore !
📚 Consultez le Guide d’intégrations pour les instructions d’installation, d’importation et de configuration de ces intégrations.
Préprocesseurs CSS
Section titled Préprocesseurs CSSAstro supporte les préprocesseurs CSS comme Sass, Stylus, et Less via Vite.
Utilisez <style lang="scss">
ou <style lang="sass">
dans les fichiers .astro
.
Stylus
Section titled StylusUtilisez <style lang="styl">
ou <style lang="stylus">
dans les fichiers .astro
.
Utilisez <style lang="less">
dans les fichiers .astro
.
Vous pouvez aussi utiliser tous les préprocesseurs CSS ci-dessus aussi bien dans les frameworks JS que dans d’autres! Assurez-vous de suivre les patterns recommandés par chacun des frameworks :
- React / Preact:
import Styles from './styles.module.scss';
- Vue:
<style lang="scss">
- Svelte:
<style lang="scss">
PostCSS
Section titled PostCSSAstro intégres PostCSS par défaut, de par avec Vite. Pour configurer PostCSS pour votre projet, créez un fichier postcss.config.js
dans le répertoire racine de votre projet. Vous pouvez importer des plugins en utilisant require()
.
Frameworks et bibliothèques
Section titled Frameworks et bibliothèques📘 React / Preact
Section titled 📘 React / PreactLes fichiers .jsx
supportent aussi les CSS globaux et les modules CSS. Pour activer le dernier, utilisez l’extension .module.css
(ou .module.scss
/scss
si vous utilisez Sass).
📗 Vue
Section titled 📗 VueVue Astro supporte les mêmes méthodes que vue-loader
:
📕 Svelte
Section titled 📕 SvelteSvelte fonctionne aussi à la perfection dans Astro : Documentation de Style sur Svelte.
Stylisation Markdown
Section titled Stylisation MarkdownToutes les méthodes de stylisme Astro sont disponibles pour un composant de mise en page Markdown.
Vous pouvez appliquer des styles globaux à votre contenu Markdown en ajoutant des balises <style>
et des feuilles de style importées à la mise en page qui englobe le contenu de votre page. Vous pouvez également ajouter des intégrations CSS, notamment Tailwind (EN).
Si vous utilisez Tailwind, le plugin de typographie peut être utile pour styliser le Markdown.
Avancé
Section titled Avancé⚠️ATTENTION⚠️ : Soyez vigilant lorsque vous ignorez la compression du CSS intégré à Astro. Les styles ne seront pas automatiquement inclus dans le code généré, et votre responsabilité de vous assurer que le fichier référencé est bien inclus dans la sortie finale.
Importations CSS ?raw
Section titled Importations CSS ?rawPour certain cas spécifiques, il est possible d’importer directement du CSS depuis le disque sans qu’il soit compressé ou optimisé par Astro. Cela peut être utile lorsque vous avez besoin d’un contrôle total sur votre CSS, et que vous avez besoin d’ignorer le traitement automatique du CSS par Astro.
Ceci n’est pas recommandé pour la plupart des utilisateurs.
Voir la documentation de Vite pour plus de détails.
Importations CSS ?url
Section titled Importations CSS ?urlDans certain cas spécifiques, vous pouvez importer une référence URL directe pour un fichier CSS dans le répertoire src/
de votre projet. Cela peut être utile lorsque vous avez besoin d’un contrôle total sur la manière dont un fichier CSS est chargé sur la page. Cependant, cela empêchera la compression de ce fichier avec les autres styles de votre page.
Ceci n’est pas recommandé pour la plupart des utilisateurs. À la place, mettez vos fichiers CSS dans le dossier public/
pour obtenir une référence URL consistente.
⚠️ATTENTION⚠️ : Importer un fichier CSS minime avec
?url
peut renvoyer son contenus CSS encodés en base64 en temps qu’URL, mais uniquement en production. Vous devrez écrire votre code pour supporter les URL de données (data:text/css;base64,...
) ou alors définir l’optionvite.build.assetsInlineLimit
à0
pour désactiver cette fonctionnalité.
Voir la documentation de Vite pour plus de détails.