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.

user246114
la source
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; }
Aren
la source
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>

Santosh Khalse
la source
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.

Denis 'Alpheus' Cahuk
la source
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 .

Alastair
la source
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!

biancardi
la source
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;
}
Khaja Md Sher E Alam
la source
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; }
Christoph
la source
18
li:hover {cursor: hand; cursor: pointer;}
Xedret
la source
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

Kai Noack
la source
16

Pour un navigateur croisé complet, utilisez:

cursor: pointer;
cursor: hand;
Erich Toven
la source
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>

Alireza
la source
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"

vapcguy
la source
10
ul li:hover{
   cursor: pointer;
}
user3776645
la source
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;".

Andrew
la source
8

Utilisation:

ul li:hover{
   cursor: pointer;
}

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

Masoud Mustamandi
la source
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>

Willy Wonka
la source
3

Vous pouvez utiliser le code ci-dessous:

li:hover { cursor: pointer; }

Capitaine JK
la source
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
Nalan Madheswaran
la source
3

Vous pouvez également utiliser le style suivant:

li {
    cursor: grabbing;
}
Ankit Misra
la source
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>

Rohit Nair
la source
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>
Y. Joy Ch. Singha
la source
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;
}
xgqfrms
la source