Sélection par l'utilisateur - Astuces CSS

Anonim

La user-selectpropriété en CSS contrôle la manière dont le texte d'un élément peut être sélectionné. Par exemple, il peut être utilisé pour rendre le texte non sélectionnable.

.row-of-icons ( -webkit-user-select: none; /* Chrome all / Safari all */ -moz-user-select: none; /* Firefox all */ -ms-user-select: none; /* IE 10+ */ user-select: none; /* Likely future */ )

Ceci est utile dans les situations où vous souhaitez offrir une expérience de copier-coller plus facile / plus propre aux utilisateurs (ne pas leur demander de sélectionner accidentellement des éléments inutiles, comme des icônes ou des images). Cependant, c'est un peu bogué. Firefox impose le fait que tout texte correspondant à ce sélecteur ne peut pas être copié. WebKit permet toujours de copier le texte si vous sélectionnez des éléments autour de lui.

Vous pouvez également l'utiliser pour garantir qu'un élément entier soit sélectionné:

.force-select ( -webkit-user-select: all; /* Chrome 49+ */ -moz-user-select: all; /* Firefox 43+ */ -ms-user-select: all; /* No support yet */ user-select: all; /* Likely future */ )

Voici quelques démos de ceux-ci:

Voir la démonstration de sélection de l'utilisateur Pen par Chris Coyier (@chriscoyier) sur CodePen.

Il n'y avait pas de spécification pour cette propriété pendant un certain temps, mais elle est maintenant couverte par le module d'interface utilisateur de base CSS niveau 4.

La valeur par défaut est auto, ce qui fait que la sélection se déroule normalement comme prévu. «Normalement» est un peu compliqué. Cela vaut la peine de citer les spécifications ici:

  • Sur les pseudo éléments :: before et :: after, la valeur calculée est none
  • Si l'élément est un élément modifiable , la valeur calculée estcontain
  • Sinon, si la valeur calculée de user-select sur le parent de cet élément est all, la valeur calculée estall
  • Sinon, si la valeur calculée de user-select sur le parent de cet élément est none, la valeur calculée estnone
  • Sinon, la valeur calculée est text

En d'autres termes, il cascades et réinitialise intelligemment à un état sensible. Il semble que cette fonctionnalité pourrait être utilisée pour rendre les pseudo éléments sélectionnables, mais pas encore le dernier mot.

Ancien / propriétaire

Firefox prend en charge -moz-none, ce qui ne ressemble à aucun sauf que cela signifie que les sous-éléments peuvent remplacer la cascade et redevenir sélectionnables avec -moz-user-select: text;Firefox 21, aucun ne se comporte comme -moz-none.

Internet Explorer prend également en charge une valeur propriétaire jusqu'à présent element, dans laquelle vous pouvez sélectionner du texte à l'intérieur de l'élément, mais la sélection s'arrêtera aux limites de cet élément.

Plus d'information

  • Documents MDN
  • Interopérabilité de sélection par l'utilisateur

Prise en charge du navigateur

Ceci est spécifiquement pour -*-user-select: none;

Ces données de support de navigateur proviennent de Caniuse, qui contient plus de détails. Un nombre indique que le navigateur prend en charge la fonctionnalité dans cette version et plus.

Bureau

Chrome Firefox C'EST À DIRE Bord Safari
4 * 2 * dix* 12 * 3,1 *

Mobile / tablette

Chrome Android Android Firefox Android Safari sur iOS
88 85 2,1 * 3,2 *