Faites du curseur une main lorsqu'un utilisateur survole un élément de la liste


1959

J'ai une liste et j'ai un gestionnaire de clics pour ses éléments:

<ul>
  <li>foo</li>
  <li>goo</li>
</ul>

Comment puis-je changer le pointeur de la souris en un pointeur manuel (comme lorsque vous survolez un bouton)? En ce moment, le pointeur se transforme en pointeur de sélection de texte lorsque je survole les éléments de la liste.


52
Pour info, j'ai reformulé votre question en supprimant "jquery" et en ajoutant "css" pour refléter plus précisément la nature de votre question et la réponse à celle-ci.
Christopher Parker

4
Une bonne liste de référence pour changer le curseur en une main et d'autres icônes disponibles en CSS. javascriptkit.com/dhtmltutors/csscursors.shtml
Neil

3
S'il y a un gestionnaire de clic qui est ajouté avec JavaScript, le CSS pour le pointeur de la souris doit être ajouté avec JavaScript. L'utilisateur ne pense donc pas qu'il ou elle pourrait cliquer là où ce n'est pas possible. J'ai ajouté une réponse appropriée à cela.
Christoph

Avez-vous essayécursor: grab
devssh

Réponses:


3253

À la lumière du temps qui passe, comme les gens l'ont mentionné, vous pouvez maintenant utiliser en toute sécurité:

li { cursor: pointer; }

212
Il convient de noter que le simple fait de faire cursor: pointersuffit pour tout ce qui dépasse IE 5.5: quirksmode.org/css/cursor.html
ripper234

19
C'est marrant comme pointeur! = Curseur et main! = Pointeur, ajoutant encore plus à la confusion. :)
Henrik Erlandsson

22
À noter, quirksmode.org/css/user-interface/cursor.html#note (référencé dans un commentaire précédent) indique que la main doit venir après le pointeur. Je recommande d'utiliser simplement le pointeur - IE 5.5 est plus mort que IE 6.
Iiridayn

2
@EdwardBlack, il était nécessaire pour les navigateurs impairs qui n'étaient pas conformes aux normes, la réponse a été mise à jour il y a longtemps pour refléter la nouvelle façon qui est simplement que pointercette question a plus de 5 ans.
Aren

En effet. Même si vous exécutez IE en mode de compatibilité IE5, cursor:pointerfonctionne toujours. Donc, s'il y a jamais eu une excuse à utiliser cursor:hand, il n'y en a plus.
M. Lister

336

Utiliser pour li:

li:hover {
    cursor: pointer;
}

Voir plus de propriétés de curseur avec des exemples après avoir exécuté l'option d'extrait:

Une animation montrant un curseur survolant un div de chaque classe

.auto          { cursor: auto; }
.default       { cursor: default; }
.none          { cursor: none; }
.context-menu  { cursor: context-menu; }
.help          { cursor: help; }
.pointer       { cursor: pointer; }
.progress      { cursor: progress; }
.wait          { cursor: wait; }
.cell          { cursor: cell; }
.crosshair     { cursor: crosshair; }
.text          { cursor: text; }
.vertical-text { cursor: vertical-text; }
.alias         { cursor: alias; }
.copy          { cursor: copy; }
.move          { cursor: move; }
.no-drop       { cursor: no-drop; }
.not-allowed   { cursor: not-allowed; }
.all-scroll    { cursor: all-scroll; }
.col-resize    { cursor: col-resize; }
.row-resize    { cursor: row-resize; }
.n-resize      { cursor: n-resize; }
.e-resize      { cursor: e-resize; }
.s-resize      { cursor: s-resize; }
.w-resize      { cursor: w-resize; }
.ns-resize     { cursor: ns-resize; }
.ew-resize     { cursor: ew-resize; }
.ne-resize     { cursor: ne-resize; }
.nw-resize     { cursor: nw-resize; }
.se-resize     { cursor: se-resize; }
.sw-resize     { cursor: sw-resize; }
.nesw-resize   { cursor: nesw-resize; }
.nwse-resize   { cursor: nwse-resize; }

.cursors > div {
    float: left;
    box-sizing: border-box;
    background: #f2f2f2;
    border:1px solid #ccc;
    width: 20%;
    padding: 10px 2px;
    text-align: center;
    white-space: nowrap;
    &:nth-child(even) {
       background: #eee;
    }
    &:hover {
       opacity: 0.25
    }
}
<h1>Example of cursor</h1>

<div class="cursors">
    <div class="auto">auto</div>
    <div class="default">default</div>
    <div class="none">none</div>
    <div class="context-menu">context-menu</div>
    <div class="help">help</div>
    <div class="pointer">pointer</div>
    <div class="progress">progress</div>
    <div class="wait">wait</div>
    <div class="cell">cell</div>
    <div class="crosshair">crosshair</div>
    <div class="text">text</div>
    <div class="vertical-text">vertical-text</div>
    <div class="alias">alias</div>
    <div class="copy">copy</div>
    <div class="move">move</div>
    <div class="no-drop">no-drop</div>
    <div class="not-allowed">not-allowed</div>
    <div class="all-scroll">all-scroll</div>
    <div class="col-resize">col-resize</div>
    <div class="row-resize">row-resize</div>
    <div class="n-resize">n-resize</div>
    <div class="s-resize">s-resize</div>
    <div class="e-resize">e-resize</div>
    <div class="w-resize">w-resize</div>
    <div class="ns-resize">ns-resize</div>
    <div class="ew-resize">ew-resize</div>
    <div class="ne-resize">ne-resize</div>
    <div class="nw-resize">nw-resize</div>
    <div class="se-resize">se-resize</div>
    <div class="sw-resize">sw-resize</div>
    <div class="nesw-resize">nesw-resize</div>
    <div class="nwse-resize">nwse-resize</div>
</div>


Hors sujet, en utilisant quel logiciel vous avez fait cette animation gif? En attente .. @ Santosh Khalse
fWd82

3
@ fWd82 check ShareX - enregistrer un gif
Caché

J'ai senti que c'était un rappel utile des curseurs et j'ai ajouté le code comme outil. Voici un lien vers le code ci-dessus: spragucm.com/web-css-cursor-pointers
Chris Sprague

1
Animation impressionnante! @ fWd82 - Peek est également bon pour enregistrer des gifs d'une zone de votre écran. github.com/phw/peek
Automne Leonard

1
ha - c'est incroyable! merci @ santosh-khalse
sufinawaz

156

Vous n'avez pas besoin de jQuery pour cela, utilisez simplement le contenu CSS suivant:

li {cursor: pointer}

Et voilà! Pratique.


1
Pratique? Hmm ... Je vois ce que tu as fait là-bas, @ denis-alpheus-cahuk
osiris

78

Utilisation:

li:hover {
    cursor: pointer;
}

D'autres valeurs valides (qui ne lehand sont pas ) pour la spécification HTML actuelle peuvent être consultées ici .


13
Je ne comprends pas à quoi sert la :hoverpseudo-classe dans ce cas. Y a-t-il un avantage à spécifier un curseur différent lorsque la souris ne survole pas l'élément? J'ai également lu que li:hovercela ne fonctionne pas dans IE6.
Robert

1
Je suppose que :hoverc'est juste pour la spécificité, @Robert. Je ne peux pas tester le support dans aucune version de MSIE, désolé, mais cela ne me surprendrait pas si cela ne fonctionnait pas! : P
Alastair

pourquoi est handdans la première réponse, même si cela ne fonctionne pas?
Black

1
@EdwardBlack cursor: handest obsolète et ne figure pas dans la spécification CSS. c'est comme de l'ère ie5-6. utiliser uniquement pointer.
northaméricain

43

Utilisation

cursor: pointer;
cursor: hand;

si vous voulez avoir un résultat crossbrowser!


7
Nous sommes en 2018 et le curseur: la main n'est plus nécessaire pour le développement multi-navigateur, n'est-ce pas?
Haramoz

41

CSS:

.auto            { cursor: auto; }
.default         { cursor: default; }
.none            { cursor: none; }
.context-menu    { cursor: context-menu; }
.help            { cursor: help; }
.pointer         { cursor: pointer; }
.progress        { cursor: progress; }
.wait            { cursor: wait; }
.cell            { cursor: cell; }
.crosshair       { cursor: crosshair; }
.text            { cursor: text; }
.vertical-text   { cursor: vertical-text; }
.alias           { cursor: alias; }
.copy            { cursor: copy; }
.move            { cursor: move; }
.no-drop         { cursor: no-drop; }
.not-allowed     { cursor: not-allowed; }
.all-scroll      { cursor: all-scroll; }
.col-resize      { cursor: col-resize; }
.row-resize      { cursor: row-resize; }
.n-resize        { cursor: n-resize; }
.e-resize        { cursor: e-resize; }
.s-resize        { cursor: s-resize; }
.w-resize        { cursor: w-resize; }
.ns-resize       { cursor: ns-resize; }
.ew-resize       { cursor: ew-resize; }
.ne-resize       { cursor: ne-resize; }
.nw-resize       { cursor: nw-resize; }
.se-resize       { cursor: se-resize; }
.sw-resize       { cursor: sw-resize; }
.nesw-resize     { cursor: nesw-resize; }
.nwse-resize     { cursor: nwse-resize; }

Vous pouvez également faire en sorte que le curseur soit une image:

.img-cur {
   cursor: url(images/cursor.png), auto;
}

7
Ce n'est pas une réponse à la question.

9
ce n'est peut-être pas la réponse directe à la question, mais c'est une très bonne ligne directrice. Merci d'ailleurs!
chitcharonko

20

Je pense qu'il serait intelligent de n'afficher le curseur main / pointeur que lorsque JavaScript est disponible. Les gens n'auront donc pas l'impression de pouvoir cliquer sur quelque chose qui n'est pas cliquable.

Pour y parvenir, vous pouvez utiliser la librairie JavaScript jQuery pour ajouter le CSS à l'élément comme ceci

$("li").css({"cursor":"pointer"});

Ou enchaînez-le directement au gestionnaire de clics.

Ou lorsque le moderniseur en combinaison avec <html class="no-js">est utilisé, le CSS ressemblerait à ceci:

.js li { cursor: pointer; }


17

Juste pour être complet:

cursor: -webkit-grab;

Il donne également un coup de main, celui que vous connaissez lorsque vous déplacez la vue d'une image.

Il est très utile si vous souhaitez émuler le comportement de capture à l'aide de jQuery et de mousedown.

Entrez la description de l'image ici


16

Pour un navigateur croisé complet, utilisez:

cursor: pointer;
cursor: hand;

12

Faites simplement quelque chose comme ceci:

li { 
  cursor: pointer;
}

Je l'applique sur votre code pour voir comment cela fonctionne:

li {
  cursor: pointer;
}
<ul>
  <li>foo</li>
  <li>goo</li>
</ul>

Remarque: Aussi Ne pas oublier que vous pouvez avoir un curseur main avec le curseur personnalisé, vous pouvez créer icône de main fav comme celui - ci par exemple:

div {
  display: block;
  width: 400px;
  height: 400px;
  background: red;
  cursor: url(http://findicons.com/files/icons/1840/free_style/128/hand.png) 4 12, auto;
}
<div>
</div>


11

Pour pouvoir faire quoi que ce soit obtenir le traitement "mousechange", vous pouvez ajouter une classe CSS:

.mousechange:hover {
  cursor: pointer;
}
<span class="mousechange">Some text here</span>

Je ne dirais pas d'utiliser cursor:handcar il n'était valable que pour Internet Explorer 5.5 et inférieur, et Internet Explorer 6 est livré avec Windows XP (2002). Les utilisateurs obtiendront un indice de mise à niveau uniquement lorsque leur navigateur cessera de fonctionner pour eux. De plus, dans Visual Studio, il soulignera cette entrée en rouge. Ça me dit:

Validation (CSS 3.0): "main" n'est pas une valeur valide pour la propriété "curseur"



9

Toutes les autres réponses suggèrent d'utiliser le pointeur CSS standard, cependant, il existe deux méthodes:

  1. Appliquez la propriété CSS cursor:pointer;aux éléments. (Il s'agit du style par défaut lorsqu'un curseur survole un bouton.)

  2. Appliquez la propriété CSS à l' cursor:url(pointer.png);aide d'un graphique personnalisé pour votre pointeur. Cela peut être plus souhaitable si vous voulez vous assurer que l'expérience utilisateur est identique sur toutes les plates-formes (au lieu de permettre au navigateur / OS de décider à quoi devrait ressembler votre curseur). Notez que des options de secours peuvent être ajoutées au cas où l'image ne serait pas trouvée, y compris les URL secondaires ou l'une des autres options, par exemplecursor:url(pointer.png,fallback.png,pointer);

Bien sûr, ceux-ci peuvent être appliqués aux éléments de la liste de cette manière li{cursor:pointer;}, en tant que classe .class{cursor:pointer;}ou en tant que valeur pour l'attribut style de chaque élément style="cursor:pointer;".


8

Utilisation:

ul li:hover{
   cursor: pointer;
}

Pour plus d'événements de souris, vérifiez la propriété du curseur CSS .


Réponse en double. Aurait dû ajouter le lien en tant que modification à l'autre réponse datée du 21 décembre 2014 par user3776645.
vapcguy

5

Vous pouvez utiliser l'une des options suivantes:

li:hover
{
 cursor: pointer;
}

ou

li
{
 cursor: pointer;
}

Exemple de travail 1:

    li:hover
    {
     cursor: pointer;
    }
<ul>
  <li>foo</li>
  <li>bar</li>
</ul>

Exemple de travail 2:

    li
    {
     cursor: pointer;
    }
<ul>
  <li>foo</li>
  <li>bar</li>
</ul>



3

Pour un symbole de main de base:

Essayer

cursor: pointer 

Si vous voulez un symbole de main comme faire glisser un élément et le déposer, essayez:

cursor: grab

3

Vous pouvez également utiliser le style suivant:

li {
    cursor: grabbing;
}

2

Utiliser un hack HTML

Remarque: ceci n'est pas recommandé car il est considéré comme une mauvaise pratique

Envelopper le contenu dans une balise d'ancrage contenant un hrefattribut fonctionnera sans appliquer explicitement la cursor: pointer;propriété avec l'effet secondaire des propriétés d'ancrage (modifié avec CSS):

<a href="#" style="text-decoration: initial; color: initial;"><div>This is bad practice, but it works.</div></a>


1
Cela ne marche pas . Les balises d'ancrage n'ont un curseur de pointeur avec soulignement et une couleur différente que si elles ont un href.
Artyer

1
"Comment puis-je faire du curseur une main lorsqu'un utilisateur survole un élément de la liste?" - Pour cette question particulière, c'est le cas. Mais comme l'a souligné @sandrooco, ce n'est pas une bonne pratique.
Rohit Nair

1

Vérifiez les points suivants. Je l'obtiens de W3Schools .

<!DOCTYPE html>
<html>
    <head>
        <style>
        .alias {cursor: alias;}
        .all-scroll {cursor: all-scroll;}
        .auto {cursor: auto;}
        .cell {cursor: cell;}
        .context-menu {cursor: context-menu;}
        .col-resize {cursor: col-resize;}
        .copy {cursor: copy;}
        .crosshair {cursor: crosshair;}
        .default {cursor: default;}
        .e-resize {cursor: e-resize;}
        .ew-resize {cursor: ew-resize;}
        .grab {cursor: -webkit-grab; cursor: grab;}
        .grabbing {cursor: -webkit-grabbing; cursor: grabbing;}
        .help {cursor: help;}
        .move {cursor: move;}
        .n-resize {cursor: n-resize;}
        .ne-resize {cursor: ne-resize;}
        .nesw-resize {cursor: nesw-resize;}
        .ns-resize {cursor: ns-resize;}
        .nw-resize {cursor: nw-resize;}
        .nwse-resize {cursor: nwse-resize;}
        .no-drop {cursor: no-drop;}
        .none {cursor: none;}
        .not-allowed {cursor: not-allowed;}
        .pointer {cursor: pointer;}
        .progress {cursor: progress;}
        .row-resize {cursor: row-resize;}
        .s-resize {cursor: s-resize;}
        .se-resize {cursor: se-resize;}
        .sw-resize {cursor: sw-resize;}
        .text {cursor: text;}
        .url {cursor: url(myBall.cur),auto;}
        .w-resize {cursor: w-resize;}
        .wait {cursor: wait;}
        .zoom-in {cursor: zoom-in;}
        .zoom-out {cursor: zoom-out;}
        </style>
    </head>

    <body>
        <h1>The cursor property</h1>
        <p>Mouse over the words to change the mouse cursor.</p>

        <p class="alias">alias</p>
        <p class="all-scroll">all-scroll</p>
        <p class="auto">auto</p>
        <p class="cell">cell</p>
        <p class="context-menu">context-menu</p>
        <p class="col-resize">col-resize</p>
        <p class="copy">copy</p>
        <p class="crosshair">crosshair</p>
        <p class="default">default</p>
        <p class="e-resize">e-resize</p>
        <p class="ew-resize">ew-resize</p>
        <p class="grab">grab</p>
        <p class="grabbing">grabbing</p>
        <p class="help">help</p>
        <p class="move">move</p>
        <p class="n-resize">n-resize</p>
        <p class="ne-resize">ne-resize</p>
        <p class="nesw-resize">nesw-resize</p>
        <p class="ns-resize">ns-resize</p>
        <p class="nw-resize">nw-resize</p>
        <p class="nwse-resize">nwse-resize</p>
        <p class="no-drop">no-drop</p>
        <p class="none">none</p>
        <p class="not-allowed">not-allowed</p>
        <p class="pointer">pointer</p>
        <p class="progress">progress</p>
        <p class="row-resize">row-resize</p>
        <p class="s-resize">s-resize</p>
        <p class="se-resize">se-resize</p>
        <p class="sw-resize">sw-resize</p>
        <p class="text">text</p>
        <p class="url">url</p>
        <p class="w-resize">w-resize</p>
        <p class="wait">wait</p>
        <p class="zoom-in">zoom-in</p>
        <p class="zoom-out">zoom-out</p>
    </body>
</html>

0

il suffit d'utiliser CSS pour définir personnaliser le pointeur du curseur

https://developer.mozilla.org/en-US/docs/Web/CSS/cursor


/* Keyword value */
cursor: pointer;
cursor: auto;

/* URL, with a keyword fallback */
cursor: url(hand.cur), pointer;

/* URL and coordinates, with a keyword fallback */
cursor: url(cursor1.png) 4 12, auto;
cursor: url(cursor2.png) 2 2, pointer;

/* Global values */
cursor: inherit;
cursor: initial;
cursor: unset;

démo

<ul>
  <li>a</li>
  <li>b</li>
  <li>c</li>
</ul>

image de hand.cur

li:hover{
   cursor: url("../icons/hand.cur"), pointer;
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.