Premiers pas
Bibliothèque de thème CSS/JS qui applique le système de design iOS26 aux applications Ionic.
Démonstration : https://ionic-theme-ios26.rdlabo.dev/
Installation
Dans un projet Ionic existant :
npm install @rdlabo/ionic-theme-ios26
Remarque : si vous utilisez @ionic/core@ < 8.8.1, utilisez @rdlabo/ionic-theme-ios26@2.2.1.
Importez ensuite le thème dans le fichier CSS principal de votre projet, par exemple src/styles.scss.
@import '@rdlabo/ionic-theme-ios26/dist/css/default-variables.css';
@import '@rdlabo/ionic-theme-ios26/dist/css/ionic-theme-ios26.css';
/**
* Ce fichier neutralise les effets des changements de noms de classes pour iOS26.
* Par exemple, `ion-buttons ion-button[fill=default]` n’est normalement pas implémenté, mais peut être nécessaire pour iOS26.
* Ce fichier neutralise ces effets.
* Remarque : cette feuille de style ne figure pas dans `@rdlabo/ionic-theme-md3`.
*/
@import '@rdlabo/ionic-theme-ios26/dist/css/md-remove-ios-class-effect.css';
/**
* Importez cette feuille pour utiliser aussi le design de ion-item-group avec ion-list sur Android.
* En savoir plus : https://docs.rdlabo.dev/projects/ionic-theme-ios26/docs/using-ion-item-group
* Remarque : cette feuille de style figure dans `@rdlabo/ionic-theme-md3`.
* @import '@rdlabo/ionic-theme-ios26/dist/css/md-ion-list-inset.css';
*/
/*
* Prise en charge du mode sombre
* Le mode sombre Ionic est pris en charge. En savoir plus : https://ionicframework.com/docs/theming/dark-mode
* mode Always : @import '@rdlabo/ionic-theme-ios26/dist/css/ionic-theme-ios26-dark-always.css'
* mode System : @import '@rdlabo/ionic-theme-ios26/dist/css/ionic-theme-ios26-dark-system.css'
* mode CSS Class : @import '@rdlabo/ionic-theme-ios26/dist/css/ionic-theme-ios26-dark-class.css'
*/
Configurer les animations
Si vous avez installé uniquement le thème iOS 26, configurez ses animations comme suit.
import { isPlatform } from '@ionic/core'; // ou @ionic/angular (Ionic 9), @ionic/angular/standalone (Ionic 8), @ionic/react, @ionic/vue
import { iosTransitionAnimation, popoverEnterAnimation, popoverLeaveAnimation } from '@rdlabo/ionic-theme-ios26';
// Angular
provideIonicAngular({
...
navAnimation: isPlatform('ios') ? iosTransitionAnimation: undefined,
popoverEnter: isPlatform('ios') ? popoverEnterAnimation: undefined,
popoverLeave: isPlatform('ios') ? popoverLeaveAnimation: undefined,
});
// React
setupIonicReact({
...
navAnimation: isPlatform('ios') ? iosTransitionAnimation: undefined,
popoverEnter: isPlatform('ios') ? popoverEnterAnimation: undefined,
popoverLeave: isPlatform('ios') ? popoverLeaveAnimation: undefined,
});
// Vue
createApp(App)
.use(IonicVue, {
...
navAnimation: isPlatform('ios') ? iosTransitionAnimation: undefined,
popoverEnter: isPlatform('ios') ? popoverEnterAnimation: undefined,
popoverLeave: isPlatform('ios') ? popoverLeaveAnimation: undefined,
})
Vérifier le thème
Testez sur iOS. Pour un aperçu sur ordinateur, définissez le mode Ionic sur ios dans la configuration d’initialisation de votre framework (par exemple mode: 'ios').
Utilisez ce balisage pour prévisualiser l’apparence d’une liste groupée en retrait. Consultez Utiliser ion-item-group pour la structure de liste attendue par le thème.
<ion-list mode="ios" inset="true">
<ion-item-group>
<ion-item><ion-label>Notifications</ion-label></ion-item>
<ion-item><ion-label>Appearance</ion-label></ion-item>
</ion-item-group>
</ion-list>
Facultatif : associer les thèmes iOS 26 et MD3
Installez le thème MD3 pour appliquer les styles aux deux modes Ionic dans la même application.
Les versions actuelles des deux thèmes nécessitent @ionic/core 8.8.1 ou une version ultérieure.
npm install @rdlabo/ionic-theme-md3
Si votre feuille de style globale utilise Sass, initialisez les thèmes dans cet ordre :
@use '@rdlabo/ionic-theme-ios26/src/styles/default-variables.scss' as ios26-vars;
@use '@rdlabo/ionic-theme-ios26/src/styles/ionic-theme-ios26.scss';
@use '@rdlabo/ionic-theme-ios26/src/styles/ionic-theme-ios26-dark-class.scss';
@use '@rdlabo/ionic-theme-ios26/src/styles/md-remove-ios-class-effect.scss';
@use '@rdlabo/ionic-theme-md3/dist/css/default-variables.css' as md3-vars;
@use '@rdlabo/ionic-theme-md3/dist/css/ionic-theme-md3.css';
L’exemple utilise le mode sombre Ionic activé par classe. Votre feuille de style globale doit également charger la palette sombre Ionic correspondante, par exemple @ionic/angular/css/palettes/dark.class.css pour Angular. Avec dark-system ou dark-always, choisissez la même variante pour la palette Ionic et le thème iOS 26. Consultez la documentation du mode sombre d’Ionic. Les espaces de noms explicites ios26-vars et md3-vars empêchent les deux modules de variables d’utiliser le même espace de noms par défaut.
Configurez les deux implémentations de transition lorsque les deux thèmes sont installés :
import { isPlatform } from '@ionic/core'; // ou @ionic/angular (Ionic 9), @ionic/angular/standalone (Ionic 8), @ionic/react, @ionic/vue
import { iosTransitionAnimation, popoverEnterAnimation, popoverLeaveAnimation } from '@rdlabo/ionic-theme-ios26';
import { mdTransitionAnimation } from '@rdlabo/ionic-theme-md3';
// Angular
provideIonicAngular({
...
navAnimation: isPlatform('ios') ? iosTransitionAnimation : mdTransitionAnimation,
popoverEnter: isPlatform('ios') ? popoverEnterAnimation : undefined,
popoverLeave: isPlatform('ios') ? popoverLeaveAnimation : undefined,
});
// React
setupIonicReact({
...
navAnimation: isPlatform('ios') ? iosTransitionAnimation : mdTransitionAnimation,
popoverEnter: isPlatform('ios') ? popoverEnterAnimation : undefined,
popoverLeave: isPlatform('ios') ? popoverLeaveAnimation : undefined,
});
// Vue
createApp(App)
.use(IonicVue, {
...
navAnimation: isPlatform('ios') ? iosTransitionAnimation : mdTransitionAnimation,
popoverEnter: isPlatform('ios') ? popoverEnterAnimation : undefined,
popoverLeave: isPlatform('ios') ? popoverLeaveAnimation : undefined,
});
Documentation
- Utiliser ion-item-group — balisage requis pour les listes en retrait.
- Balisage et classes particuliers — balisage à activer explicitement et classes utilitaires du thème.
- ESLint — vérifier la structure des listes avec les règles ESLint.
- Fonctionnalités — variables CSS, Liquid Glass, importations sélectives et mode sombre.
- Animation expérimentale — effets de barre d’onglets et de recherche.
- iOS 18 — charger le thème uniquement sur iOS 26.
- Migration — changements requis lors des mises à niveau majeures.