recherche
Maisoninterface Webtutoriel CSSExplication détaillée de l'utilisation de la position : collante

Position : sticky en CSS nous permet de construire des interactions très soignées en très peu de lignes de code. Ceci est utile chaque fois que l'utilisateur souhaite qu'un élément de l'interface utilisateur reste visible pendant le défilement, mais ne devienne pas collant jusqu'à ce que l'élément atteigne une distance spécifique du côté haut/bas/gauche/droit de la fenêtre de défilement.

Comment peut-on fixer une position : collante ?

position : sticky est parfait pour les en-têtes de liste de style iOS. Faites défiler le contenu et regardez le titre une fois qu'il atteint 0 px à partir du bord supérieur.

.heading{
  background: #ccc;
  height: 50px;
  line-height: 50px;
  margin-top: 10px;
  font-size: 30px;
  padding-left: 10px;
  position: -webkit-sticky;
  position: sticky;
  top: 0px;
}

Vous souhaitez que le titre de la liste reste visible si l'utilisateur fait défiler vers le bas. Si vous faites défiler vers le haut, vous souhaitez également que le pied de page « Ajouter un élément » soit visible. Essayez-le ! Faites défiler vers le haut et vers le bas et observez comment ces éléments collent après avoir atteint le bord de la fenêtre :

header{
  background: #ccc;
  font-size: 20px;
  color: #282a37;
  padding: 10px;
  position: -webkit-sticky;
  position: sticky;
  top: 0;
}
footer{
  background: #ccc;
  padding: 10px;
  color: #ae81fe;
  position: relative;
  position: -webkit-sticky;
  position: sticky;
}
footer{
  bottom: 0;
}
list{
  border: 1px solid #ccc;
  border-radius: 5px;
  width: 200px;
  margin-left: 20px;
  background: #282a37;
}
item{
  padding: 10px;
  color: #fff;
  display: block;
}
body{
  padding-top: 20px;
  display: flex;
  align-items: flex-start;
}
.abs{
  position: absolute;
  right: 0;
  top: 10px;
}

Vous pouvez également coller des éléments sur le bord gauche ou droit. Il s'agit d'une visionneuse d'images latérale avec une description textuelle pivotée de l'image. Faites-le défiler latéralement et regardez la description être ancrée à gauche, en vue, jusqu'à ce qu'une nouvelle description la repousse.

div[description]{
  max-width: 40px;
  height: 300px;
  position: -webkit-sticky;
  position: sticky;
  left: 0; /* become sticky once touching left edge */
}
sidescroller{
  display: flex;
  align-items: center;
  overflow-x: auto;
  overflow-y: hidden;
  background: #000;
}
div[wrapper]{
  flex: 0 0 40px;
  max-width: 40px;
  height: 300px;
  position: -webkit-sticky;
  position: sticky;
  left: 0;
  white-space: nowrap;
  color: #fff;
}
div[item]{
  display: flex;
}
div[description] span{
  display: inline-block;
  background: rgba(0,0,0,.5);
  width: 300px;
  height: 40px;
  transform: rotate(-90deg) translateX(-300px);
  transform-origin: left top 0;
  padding-top: 11px;
  text-align: center;
  text-transform: uppercase;
  color: #fff;
  font-size: 14px;
}
img{
  max-height: 300px;
}

Vous pouvez même spécifier un nombre négatif lorsqu'un élément devient collant lorsqu'une partie ou la totalité défile hors de vue ! Cela peut être utile si, par exemple, le menu de la barre latérale devient collant lorsqu'il défile hors de vue, laissant un petit bouton qui, une fois cliqué, peut revenir à la barre latérale :

.sidebar{
  background: purple;
  width: 200px;
  height: 300px;
  padding: 20px;
  flex-shrink: 0;
  overflow: visible;
  position: -webkit-sticky;
  position: sticky;
  left: -200px;
}
.sidebar .handle{
  height: 30px;
  width: 30px;
  position: absolute;
  right: -30px;
  top: 0;
  background: purple;
  color: #fff;
  font-weight: bold;
  font-size: 20px;
  padding-left: 8px;
  cursor: pointer;
}
p{
  padding: 20px;
}
.site{
  display: flex;
}

Utiliser la position : collant est simple.

1. Déclarez l'élément comme sticky position:sticky (plus toute position de préfixe requise du navigateur : -webkit-sticky)

2. Spécifiez le côté de l'élément à "coller" (Haut). |Droite|Bas|Gauche).

3. Entrez la distance du bord, le collant sera activé lorsqu'il sera atteint.

Par exemple, disons que vous souhaitez que le titre devienne collant à 20 px du haut de la zone de défilement :

.header{
  position: -webkit-sticky;
  position: sticky;
  top: 20px;
}

Ou faites défiler hors de vue vers le bord gauche du menu comme dans l'exemple ci-dessus :

.menu{
  width: 200px;
  position: -webkit-sticky;
  position: sticky;
  left: -200px;
}

Notes sur la position : collant

Éléments frères et sœurs

Si les éléments frères (adjacents) sont définis sur position : collants, ils se comportent légèrement différemment des éléments des éléments imbriqués. Les éléments frères et sœurs collants ne sont pas déplacés pour les nouveaux éléments. Au lieu de cela, ils se chevauchent sur place :

Explication détaillée de lutilisation de la position : collante

Parfois, vous souhaiterez peut-être ce comportement, mais si vous définissez une couleur d'arrière-plan, sinon l'utilisateur verra que tous les projets sont regroupés dans le même petit espace à la fois et cela ressemble à un gâchis.

D'un autre côté, si vous imbriquez un élément collant dans un élément parent, comme nous l'avons fait dans l'exemple SsiDelLoad, alors l'élément collant commencera à bouger dès qu'un autre élément collant commencera à le toucher, ce qui est un bonne pratique et fonctionne un peu comme l'OMI :

Explication détaillée de lutilisation de la position : collante

Overflow (overflow)

Ne pas utiliser de débordement : auto |scroll| caché sur l'élément parent d'un élément position:sticky, qui brise complètement l'adhésivité, mais le débordement: visible le fait.

Positionnement absolu (position:absolute)

Si vous souhaitez utiliser l'élément position:absolute à l'intérieur d'un élément collant, vous devez être prudent. Si votre application s'exécute dans un navigateur plus ancien qui ne prend pas en charge position:sticky, l'élément sticky ne se comportera pas comme un élément relativement positionné. Ainsi, un élément positionné de manière absolue l'ignorera et recherchera l'arborescence DOM jusqu'à ce que le prochain élément non statique soit trouvé (position fixe absolue | position relative fixe), HTML utilisera par défaut l'élément s'il n'est pas trouvé. En d’autres termes, votre élément positionné de manière absolue aura un aspect différent à l’écran de ce à quoi vous vous attendez. Si vous utilisez des navigateurs plus anciens, on pourrait penser que la solution à cette situation est de définir un positionnement à la fois relatif et collant :

.footerwithAbsolutePositionedeChildren{
position: relative;/*don't forgot this*/
}
/*NOTE: @supports has to be at the root,not nested*/
@supports(position:sticky){
.footerwithAbsolutePositionedeChildren{
position: sticky;
bottom: 20px;/now this won't mess with position in non-sticky browsers*/
}
}

Pourquoi ne pas utiliser JavaScript ?

Vous pouvez certainement y parvenir en utilisant JS. Mais cela impliquera un écouteur d'événements de défilement, ce qui reste une chose très coûteuse à ajouter à votre application. Le défilement est l'une des actions les plus courantes effectuées par les utilisateurs, et l'exécution de JavaScript pendant ces événements rend difficile le maintien d'un défilement stable à 60 FPS (images par seconde). L'interface utilisateur n'est pas synchronisée avec la souris/le doigt/le stylet de l'utilisateur. C’est ce qu’on appelle du roulage. Il existe un type spécial d'écouteur d'événements appelé écouteur d'événements passif, qui permet au navigateur de savoir que vos événements n'arrêteront pas de défiler, afin que le navigateur puisse mieux optimiser ces événements. Mais ils ne sont pas encore pris en charge dans IE ou Edge, vous aurez de toute façon besoin de la solution de secours JS.

De plus, puisque position:sticky vous n'écrivez pas dans le DOM pendant le défilement, vous ne provoquez aucune mise en page forcée ni recalcul de mise en page. Ainsi, le navigateur est capable de déplacer cette opération vers le GPU et vous pouvez faire défiler très facilement même lorsque l'élément collant est en cours de lecture. C'est particulièrement fluide dans Sarari mobile.

De plus, écrire deux lignes de CSS déclaratif est plus facile que d'utiliser l'alternative JS.

Puis-je l'utiliser maintenant ?

position:sticky est pris en charge par de nombreux navigateurs, mais pas encore dans Edge. IE n'a pas d'importance ici, sauf si vous avez des obligations contractuelles dans Enterprise Town. Si vous devez avoir ce comportement, il existe de nombreux polyfills, mais ils utilisent tous JavaScript, vous obtiendrez donc les performances mentionnées ci-dessus. Une meilleure option consiste à concevoir votre application de manière à ce que les emplacements collants soient un ajout astucieux, mais l'application n'a toujours pas ses fonctionnalités.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Draggin & # 039; et droppin & # 039; en réactionDraggin & # 039; et droppin & # 039; en réactionApr 17, 2025 am 11:52 AM

L'écosystème React nous offre de nombreuses bibliothèques qui se concentrent sur l'interaction de la glisser et de la chute. Nous avons react-dnd, react-beeufuly-dnd,

Logiciel rapideLogiciel rapideApr 17, 2025 am 11:49 AM

Il y a eu des choses merveilleusement interconnectées à propos des logiciels rapides ces derniers temps.

Gradients imbriqués avec un clip de fondGradients imbriqués avec un clip de fondApr 17, 2025 am 11:47 AM

Je ne peux pas dire que j'utilise souvent le clip de fond. Je ne parierai presque presque jamais dans le travail CSS au jour le jour. Mais je me suis souvenu de cela dans un post de Stefan Judis,

Utilisation de la réalisation de demandes avec des crochets ReactUtilisation de la réalisation de demandes avec des crochets ReactApr 17, 2025 am 11:46 AM

L'animation avec des demandes de châssis devrait être facile, mais si vous n'avez pas lu de manière approfondie de la documentation de React, vous rencontrerez probablement quelques choses

Besoin de faire défiler en haut de la page?Besoin de faire défiler en haut de la page?Apr 17, 2025 am 11:45 AM

Peut-être le moyen le plus simple d'offrir cela à l'utilisateur est un lien qui cible un ID sur l'élément. Tellement comme ...

La meilleure API (GraphQL) est celle que vous écrivezLa meilleure API (GraphQL) est celle que vous écrivezApr 17, 2025 am 11:36 AM

Écoutez, je ne suis pas un expert GraphQL mais j'aime travailler avec. La façon dont elle expose les données en tant que développeur frontal est assez cool. C'est comme un menu de

Actualités de plate-forme hebdomadaire: bookmarklet d'espacement de texte, attente de haut niveau, nouvel indicateur de chargement d'ampliActualités de plate-forme hebdomadaire: bookmarklet d'espacement de texte, attente de haut niveau, nouvel indicateur de chargement d'ampliApr 17, 2025 am 11:26 AM

Au cours de cette semaine, un Bookmarklet pratique pour inspecter la typographie, en utilisant Await pour bricoler comment les modules JavaScript s'importent, ainsi que Facebook & # 039; S

Diverses méthodes pour étendre une boîte tout en préservant le rayon de la frontièreDiverses méthodes pour étendre une boîte tout en préservant le rayon de la frontièreApr 17, 2025 am 11:19 AM

J'ai récemment remarqué un changement intéressant sur Codepen: sur le plan des stylos sur la page d'accueil, il y a un rectangle avec des coins arrondis se développant dans le dos.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code