Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Une application web progressive (PWA) installée sur le bureau peut afficher du contenu là où se trouve normalement la barre de titre, pour rendre la PWA plus native, à l’aide de l’API de superposition de contrôles de fenêtre.
L’API de superposition de contrôles de fenêtre effectue les opérations suivantes :
- Permet d’afficher du contenu web sur toute la surface de l’application.
- Déplace les contrôles de fenêtre critiques requis par le système dans une superposition.
- Permet à votre contenu de rester à l’écart de cette superposition.
Une application web progressive (PWA) peut définir la façon dont elle doit être affichée sur les plateformes mobiles, en utilisant le membre d’affichage dans le fichier manifeste de l’application web. Toutefois, pour créer une expérience immersive de type natif, les PWA de bureau peuvent utiliser une autre approche.
Par défaut, un PWA installé sur le bureau peut afficher du contenu dans une zone qui commence immédiatement sous la zone de la barre de titre réservée :
L’affichage du contenu à l’endroit où se trouve normalement la barre de titre peut aider les PWA à se sentir plus natifs. De nombreuses applications de bureau, telles que Visual Studio Code, Microsoft Teams et Microsoft Edge, le font déjà :
Activer la superposition des contrôles de fenêtre dans votre application
Tout d’abord, activez la fonctionnalité Superposition des contrôles de fenêtre dans le fichier manifeste de l’application web de votre application. Pour ce faire, dans le fichier manifeste, définissez la display_override propriété :
{
"display_override": ["window-controls-overlay"]
}
Voir aussi :
- display_override sur MDN > Fait référence > aux manifestes de l’application web.
- Manifestes d’application web dans les références MDN > .
- Le manifeste de l’application web dans Rendre les PWA installables à MDN > Références > Guides des applications > web progressives.
Utiliser des variables d’environnement CSS pour éviter la superposition
La env() fonction CSS peut être utilisée pour accéder aux variables d’environnement définies par l’agent utilisateur.
Quatre variables d’environnement sont ajoutées par la fonctionnalité de superposition des contrôles de fenêtre :
| Variable | Description |
|---|---|
titlebar-area-x |
Distance, en px, de la zone normalement occupée par la barre de titre à partir du côté gauche de la fenêtre. |
titlebar-area-y |
Distance, en px, de la zone normalement occupée par la barre de titre à partir du côté supérieur de la fenêtre. |
titlebar-area-width |
Largeur de la zone de la barre de titre, en px. |
titlebar-area-height |
Hauteur de la zone de la barre de titre, en px. |
Vous pouvez utiliser ces variables d’environnement pour positionner et dimensionner votre propre contenu là où la barre de titre apparaîtrait normalement, lorsque la fonctionnalité de superposition des contrôles de fenêtre est désactivée :
#title-bar {
position: fixed;
left: env(titlebar-area-x, 0);
top: env(titlebar-area-y, 0);
height: env(titlebar-area-height, 50px);
width: env(titlebar-area-width, 100%);
}
L’utilisation position: fixed; de permet de s’assurer que votre barre de titre ne défile pas avec le reste du contenu et reste alignée sur la superposition des contrôles de fenêtre.
Il est important de savoir où se trouve la superposition et quelle est sa taille. La superposition n’est peut-être pas toujours du même côté de la fenêtre ; sur macOS, la superposition se trouve sur le côté gauche, mais sur Windows, elle se trouve sur le côté droit. De plus, la superposition peut ne pas toujours être de la même taille.
La env() fonction CSS prend un deuxième paramètre utile pour définir la position du contenu de votre application lorsque la fonctionnalité de superposition de contrôles de fenêtre est manquante ou désactivée.
Faire d’une région une poignée de déplacement pour la fenêtre
Lorsque la barre de titre est masquée, seuls les contrôles de fenêtre critiques pour le système restent visibles (les icônes Agrandir, Réduire, Fermer et Informations sur l’application ). Cela signifie que les utilisateurs disposent de très peu d’espace pour déplacer la fenêtre de l’application.
Vous pouvez utiliser la app-region propriété CSS pour offrir aux utilisateurs d’autres moyens de faire glisser l’application. Par exemple, si votre application possède sa propre barre de titre, vous pouvez transformer celle-ci en poignée de déplacement pour fenêtre :
#title-bar {
position: fixed;
left: env(titlebar-area-x, 0);
top: env(titlebar-area-y, 0);
height: env(titlebar-area-height, 50px);
width: env(titlebar-area-width, 100%);
app-region: drag;
}
Réagir aux changements de superposition
Un utilisateur peut basculer la barre de titre ou modifier les dimensions de la fenêtre pendant l’exécution de l’application. Il peut être important pour votre application de savoir quand ces événements se produisent. Votre application devra peut-être réorganiser une partie du contenu affiché dans la barre de titre ou réorganiser la disposition ailleurs sur la page.
Pour écouter les modifications, utilisez l’événement geometrychange sur l’objet navigator.windowControlsOverlay . Pour détecter si la barre de titre est visible, utilisez la visible propriété sur l’objet navigator.windowControlsOverlay .
L’événement geometrychange est déclenché très fréquemment lorsque l’utilisateur redimensionne la fenêtre. Pour éviter d’exécuter trop souvent du code modifiant la disposition et de provoquer des problèmes de performances dans votre application, utilisez une debounce fonction pour limiter le nombre de fois où l’événement est géré.
Voir la différence entre la limitation et le rebond.
const debounce = (func, wait) => {
let timeout;
return function executedFunction(...args) {
const later = () => {
clearTimeout(timeout);
func(...args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
};
if ('windowControlsOverlay' in navigator) {
navigator.windowControlsOverlay.addEventListener('geometrychange', debounce(e => {
// Detect if the Window Controls Overlay is visible.
const isOverlayVisible = navigator.windowControlsOverlay.visible;
// Get the size and position of the title bar area.
const titleBarRect = e.titlebarAreaRect;
console.log(`The overlay is ${isOverlayVisible ? 'visible' : 'hidden'}, the title bar width is ${titleBarRect.width}px`);
}, 200));
}
Demo app
1DIV est une application de démonstration PWA qui utilise la fonction de superposition des contrôles de fenêtre.
Dans Microsoft Edge, ouvrez l’application de démonstration 1DIV dans une nouvelle fenêtre ou un nouvel onglet.
Dans la barre d’adresses, cliquez sur l’application disponible. Install 1DIV (
). La boîte de dialogue Installer l’application 1DIV s’ouvre.Cliquez sur le bouton Installer . L’application 1DIV s’ouvre dans sa propre fenêtre, avec la boîte de dialogue installée de l’application ouverte :
Cliquez sur le bouton Fermer (X) de la boîte de dialogue. (Vous pouvez également cocher ou décocher des cases, puis cliquer sur le bouton Autoriser .)
La barre de titre de l’application contient au moins les contrôles de fenêtre suivants :
Icône Info-bulle
Paramètres et bien plus encore
Minimize
Restaurer
Close L’application affiche désormais le contenu jusqu’en haut du cadre de la fenêtre, là où se trouvait la barre de titre :
La zone supérieure de l’application est une poignée de glissement, pour permettre aux utilisateurs de déplacer la fenêtre.
Le code source de cette application de démonstration se trouve dans le référentiel 1DIV .
Le fichier source manifest.json déclare l’utilisation par l’application de la fonctionnalité de superposition des contrôles de fenêtre.
Le fichier sourceapp.js utilise l’objet
navigator.windowControlsOverlay.Le fichier source app.css utilise les variables d’environnement
titlebar-area-*CSS.
Affichez un aperçu de la superposition personnalisée sans installer le PWA
Dans Microsoft Edge DevTools, dans l’outil Application , vous pouvez simuler la fonctionnalité de superposition de contrôles de fenêtre (WCO), sans devoir installer au préalable la fonctionnalité PWA et activer la fonctionnalité WCO. En simulant la fonctionnalité WCO à partir de DevTools, vous pouvez tester les modifications de code CSS pour votre zone de barre de titre plus rapidement qu’en réinstallant la PWA révisée.
La superposition simulée est une image statique. Les valeurs des variables env(titlebar-area-left)CSS , env(titlebar-area-top), env(titlebar-area-width), et env(titlebar-area-height) sont définies pour correspondre à la plateforme que vous sélectionnez.
Consultez Simuler l’API de superposition des contrôles de fenêtre sans installer votre PWA.
Voir aussi
- Simulez l’API de superposition des contrôles de fenêtre sans installer votre fonctionnalité PWA - DevTools.
MDN :
- API de superposition de contrôles de fenêtre
- Le manifeste de l’application web dans Rendre les PWA installables à MDN > Références > Guides des applications > web progressives.
-
Manifestes d’application web dans les références MDN > .
- display_override à manfest.
- Afficher dans le manifeste.
-
env()Fonction CSS.
Blogue :
YouTube :
Démo :
- 1DIV en direct
-
Code source /1DIV/
- manifest.json
-
app.js- utilise l’objet
navigator.windowControlsOverlay. -
app.css - utilise les variables d’environnement
titlebar-area-*CSS.