9 nouvelles fonctionnalités du navigateur 2020 que vous ne saviez probablement pas
Alors que 2020 tire à sa fin, passons en revue neuf des meilleures fonctionnalités de navigateur que vous devez utiliser!
Le Web est en constante évolution. En tant que développeurs Web, nous le savons et, avouons-le, c'est l'une des raisons pour lesquelles nous aimons notre travail! 💁🏻♀
Donc, aujourd'hui, je vais partager avec vous les neuf principales nouveautés qui ont attiré mon attention cette année.
1. IntersectionObserver V2
L'API Intersection Observer vous permet de détecter lorsqu'un élément apparaît dans la fenêtre. L'API d'origine est supportée maintenant par tous les principaux navigateurs.
Avec l'API d'origine, les personnes «mal intentionnées» pourraient profiter de ses lacunes. Principalement à cause de son incapacité à détecter lorsqu'un élément est occulté (couvert) par un contenu.
Pour comprendre de quoi je parle, vous devriez voir cette démo d'un lecteur vidéo qui déclenche une publicité (
C'est pourquoi le nouvel Intersection Observer a été implémenté (même si tous les navigateurs ne le supportent pas encore comme vous pouvez le voir ) ici ). Le principal à retenir est que l'IO V2 fonctionne en suivant la visibilité d'un élément au lieu de simplement sa présence dans la fenêtre.
Maintenant, je ne peux pas vous laisser avec ça. J'ai préparé un petit exemple qui vous aidera à vérifier la différence d'implémentation de V1 (la partie commentée) à V2:
< div class = " viewport ] " >
< div class = " element " > before scroll [19659021] </ div >
< div class = " observe " > après le défilement </ div >
</ div >
.viewport {
hauteur : 200 px ;
background-color : bleu ;
overflow-y : scroll ;
padding : 16 px ;
}
.element {
hauteur : 300 px ;
background-color : red ;
}
.observed {
height : 100 px ;
background-color : green ;
}
const handler = ( entries ) => { for ( const entrée de entrées ) { if ( entry . isIntersecting && ent ry . isVisible ) { console . log ( `Visible depuis $ { entrée . time } ` ) ; } else { console . log ( `v2 not supported, fallback to v1` ) ; if ( entry ]. intersectionRatio > 0 ) { console . log ( "élément observé dans la vue" ) ; console . log ( entry ) ; } else { console . log ( "élément observé hors de vue" ) ; } } } } ; const observer = new IntersectionObserver ( handler { seuil : [ 1.0 ] trackVisibility : true retard : 100 } ) ; observateur . observe ( document . querySelector ( ". observe" ) ) ; [19659140] Vous pouvez visualiser les journaux de la console dans ce JSFiddle . 👈🏼
dans lequelPour plus de détails sur l'utilisation d'Intersection Observer V2, consultez cet article sur la mise à jour des fonctionnalités de Google .
2. API Screen Wake Lock
Utilisez-vous votre téléphone pour suivre des recettes et vous ennuyez-vous à chaque fois que vous devez vous laver et vous sécher les mains pour déverrouiller votre écran parce que votre écran est resté inactif? 😒
Eh bien, ne vous inquiétez plus! Les dieux de l'internet nous ont souri cet été. 🤗 L'API Screen Wake Lock est ici (enfin, principalement pour les utilisateurs de Chrome 😁).
L'API Screen Wake Lock fournit aux développeurs un moyen d'empêcher l'écran de s'éteindre, de s'assombrir ou de se verrouiller. Jusqu'à présent, vous ne pouviez y parvenir que dans une application native ou via des solutions de contournement hacky et gourmandes en énergie (comme NoSleep.js qui lit une vidéo cachée sur la page Web, mais maintenant au moins, il a ajouté la prise en charge de l'écran Wake Lock API).
Voici comment utiliser la nouvelle API Screen Wake Lock:
let wakeLockSentinel = null ; const requestWakeLock = asynchrone () => { if ( "wakeLock" in navigateur ) { essayez { console . log ( "L'API Screen Wake Lock est prise en charge" ) ; wakeLockSentinel = attendre navigateur . wakeLock . request ( "screen" ) ; console . log ( "Screen Wake Lock API is active" ) ; wakeLockSentinel . addEventListener ( "release" () => { console . log ( "Screen Wake Lock has been release" ) ; } ) ; } [19659083] catch ( err ) { console . error ( err ) ; } } else { console . log ( "L'API Screen Wake Lock n'est pas prise en charge" ) ; } } ; requestWakeLock [19659013] () ; setTimeout ( () => { wakeLockSentinel . version () . puis ( () => { wakeLockSentinel = null ; console . log ( "Screen Wake Lock API is disabled" ) ; } ) ; } [19659013] 600000 ) ;
Un excellent exemple a été fourni 👉🏼 ici par MDN Web Docs. Comme ils l'expliquent leur «démo utilise un bouton pour acquérir un verrou de réveil et aussi le libérer, ce qui à son tour met à jour l'interface utilisateur. L'interface utilisateur se met également à jour si le verrou de réveil est automatiquement libéré pour une raison quelconque. Il y a une case à cocher qui, lorsqu'elle est cochée, réacquiert automatiquement le verrou de réveil si l'état de visibilité du document change et redevient visible. »
3. CSS: any-link Selector
Cette fonctionnalité est pratique et est disponible dans presque tous les navigateurs sauf Internet Explorer (😒 bien sûr).
Ce que fait le sélecteur CSS: any-link, c'est du style chaque élément
href
est défini.😃 Ainsi, par exemple, nous finirons ici avec juste le premier lien qui a le style défini appliqué à il:
< a href = " http://nadarifki.com/ " > mon portfolio [19659021] </ a > < a > not my portfolio </ a >
a : any-link { background-color : purple ; color : blanc ; }
4. Visibilité du contenu CSS
Si vous avez déjà travaillé sur des sites Web à fort contenu avec un large public, vous comprenez à quel point les performances de chargement des pages sont vitales. C'est un champ de bataille important dans le développement Web. C'est la raison pour laquelle cette nouvelle propriété de visibilité du contenu CSS a été lancée dans Chromium 85 .
En un mot, la visibilité du contenu est une propriété CSS qui contrôle si et quand le contenu d'un élément est rendu. 🤔 Quel est son impact sur les performances de chargement des pages? En rendant uniquement le contenu d'un composant hors écran lorsqu'il devient à l'écran. De cette façon, le rendu de votre contenu hors écran / sous le contenu du pli n'a pas d'impact sur le chargement de votre contenu à l'écran.
La propriété CSS content-visibilité prend trois valeurs:
content-visibilité : visible
: Ceci n'a aucun impact sur le rendu de l'élément auquel il est appliqué.content-visibilité: hidden
: Ceci est similaire à l'affichage: aucun
mais différent de manière significative ☝🏼. Un affichage: aucun
ne cache pas seulement un élément. Il détruit également son état de rendu (qui est aussi coûteux que le rendu de l'élément en termes de performances), tandis quecontent-visibilité: hidden
le cache mais conserve son état de rendu.content-visibilité: auto
]: C'est le plus intéressant car c'est celui qui permet au navigateur d'activer et de désactiver la visibilité de l'élément en fonction de sa présence à l'écran ou hors écran. Ce qui peut entraîner «une augmentation des performances de rendu de 7x lors du chargement initial» selon Chrome Developers comme indiqué dans leur démo, avec une très grande différence de temps de rendu:5. CSS :: marker Pseudo-élément
Souvenez-vous de l'époque où vous venez de commencer à jouer avec HTML et CSS, en essayant de styliser les éléments
- et vous vous dites: "Comment diable n'y a-t-il pas un moyen de styliser quelque chose comme communs et basiques comme éléments de liste? » 😏
🙄 Nous sommes tous passés par là, et enfin, les générations futures n'auront pas à s'interroger à ce sujet ni à écrire du code CSS hacky pour styliser les éléments de la liste! 🤷🏻♀
Comment? Pseudo-élément CSS
:: marker
:< ul > < li > Yan </ li > < li > Ithnan </ li > < li > San </ li > < li > [19659020] Quatre </ li > < li > Cinq </ li > < li > Roku </ li > < li > Ilgob </ li [19659013]> < li > Ocho </ li > </ ul >
ul li { couleur : gris ; } ul li :: marker [19659013] { couleur : magenta ; contenu : ">" ; font-size : 14 px ; }
Il est maintenant pris en charge par presque tous les principaux navigateurs, sauf IE et Opera. ☝🏻 Donc, si vous utilisez Chrome, assurez-vous que votre navigateur est à jour pour voir la différence de style!
6. Fragment de défilement d'URL vers le texte
Il y a quelques petits changements progressifs sur le Web qui sont tout simplement géniaux! 😻
Vous savez déjà que vous pouvez accéder directement à une section sur une page avec le nom id de l'élément HTML précédé de
#
(comme ici ). 😎 Vous pouvez désormais accéder à n'importe quelle partie d'une page Web via la fonctionFragment de défilement d'URL vers le texte
(qui met également en évidence la section sélectionnée de la page que vous référencez dans votre URL).Ceci sonne tout comme du charabia sauf si je vous montre. C'est pourquoi j'ai préparé cette petite démo:
.
7. Propriété Gap pour Flexbox
Si vous avez précédemment utilisé la propriété grid-gap dans CSS Grid vous vous êtes probablement demandé pourquoi ce n'était pas une chose dans Flexbox. 🤷🏻♀ Eh bien maintenant c'est le cas ( sauf pour IE et Safari )!
Vous pouvez utiliser le
gap
dans Flexbox de la même manière que vous utilisezgrid-gap
dans Grid. La seule différence est sa syntaxe raccourcie (t hat Grid est également adopté maintenant).Par exemple 👇🏼:
gap : 20 px ; gap : 20 px 10 px ; column-gap : 10 px ; column-gap : 20 px :
😜 Vous pouvez en savoir plus sur cette propriété ici sur MDN Web Docs .
8. Valeur CSS Revert
Le mot-clé CSS
revert
remet le style d'un élément à sa valeur comme si aucune modification n'avait été apportée à cet élément. Pour ce faire,revert
suit la valeur en cascade de la propriété:- d'abord, en vérifiant la feuille de style utilisateur;
- ensuite, le style par défaut du navigateur;
- enfin, si les deux sont manquants,
unset
est appliqué (en appliquantinherit
ouinitial
).
☝🏼 Attention, la valeur
revert
est différente de la CSSinitial
parce queinitial
changera TOUJOURS la valeur de style par la valeur par défaut définie dans la spécification CSS officielle.Je trouve la valeur CSS
revert
utile lorsque, par exemple, je stylise un élément pour mobile, puis je dois rétablir une valeur de style spécifique à son origine sur le bureau (rappel rapide et aimable 😊 toujours mobile-first! ).Vous pouvez trouvez d'excellents exemples qui vous aideront à mieux comprendre
revert
sur le MDN Web Docs et ici 👉🏼 vous pouvez vérifier out browser support .9. Format d'image AVIF
AVIF est un nouveau format d'image, et voici ce que vous devez savoir: il est 50% plus petit qu'une image JPEG classique, avec une qualité supérieure à une image JPEG de même poids. Donc, moins de poids + moins de pixellisation! 🎉
Cet article est uniquement destiné à présenter les fonctionnalités et à vous donner un aperçu de leur utilisation potentielle. De plus, je laisserais plutôt cet article du Netflix TechBlog vous montrer, en détails et avec des cas d'utilisation réels, la différence entre un JPEG compressé typique et AVIF!
Le support pour AVIF est disponible pour Chrome et Opera, tandis que pour les navigateurs Firefox, la mise en œuvre est en cours. 😜 Gardez donc un œil sur l'évolution de ce nouveau format d'image prise en charge du navigateur .
En attendant, vous pouvez commencer à utiliser ce nouveau format en fournissant simplement une image alternative si la prise en charge d'AVIF n'est pas disponible:
< image > < source srcset = " image.avif " type = " image / avif " /> < img src = " image.jpg " alt = " Alt text " /> </ image >
J'espère que vous les avez trouvés utiles, et s'il y a d'autres nouvelles fonctionnalités que vous connaissez, faites-le nous savoir dans les commentaires, ou vous pouvez également me contacter sur Twitter @RifkiNada ou voir mon travail sur NadaRifki.com . 😜
Source link