Haga que el cursor sea una mano cuando un usuario se desplace sobre un elemento de la lista

1959

Tengo una lista y tengo un controlador de clics para sus elementos:

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

¿Cómo puedo cambiar el puntero del mouse en un puntero de mano (como al pasar el mouse sobre un botón)? En este momento, el puntero se convierte en un puntero de selección de texto cuando paso el mouse sobre los elementos de la lista.

usuario246114
fuente
52
Para su información, volví a etiquetar su pregunta eliminando "jquery" y agregando "css" para reflejar con mayor precisión la naturaleza de su pregunta y la respuesta.
Christopher Parker
44
Una buena lista de referencia para cambiar el cursor a una mano y otros íconos disponibles en CSS. javascriptkit.com/dhtmltutors/csscursors.shtml
Neil
3
Si hay un controlador de clics que se agrega con JavaScript, también se debe agregar css para el puntero del mouse con JavaScript. Por lo tanto, el usuario no cree que pueda hacer clic donde no es posible. Agregué una respuesta apropiada para esto.
Christoph
¿Lo intentastecursor: grab
Devssh

Respuestas:

3253

A la luz del paso del tiempo, como la gente ha mencionado, ahora puede usar con seguridad:

li { cursor: pointer; }
Aren
fuente
212
Vale la pena señalar que solo hacer cursor: pointeres lo suficientemente bueno para todo lo que está por encima de IE 5.5: quirksmode.org/css/cursor.html
ripper234
19
Es curioso cómo puntero! = Cursor y mano! = Puntero, lo que agrega aún más a la confusión. :)
Henrik Erlandsson
22
Es de destacar que quirksmode.org/css/user-interface/cursor.html#note (mencionado en un comentario anterior) establece que la mano debe ir después del puntero. Recomiendo usar solo el puntero: IE 5.5 es más sordo que IE 6.
Iiridayn
2
@EdwardBlack solía ser necesario para navegadores extraños que no cumplían con los estándares, la respuesta se actualizó hace mucho tiempo para reflejar la nueva forma, que es simplemente que pointeresta pregunta tiene más de 5 años por cierto.
Aren
En efecto. Incluso si ejecuta IE en modo de compatibilidad IE5, cursor:pointeraún funciona. Entonces, si alguna vez hubo una excusa para usar cursor:hand, ya no la hay.
Sr. Lister el
336

Usar para li:

li:hover {
    cursor: pointer;
}

Vea más propiedades de cursor con ejemplos después de ejecutar la opción de fragmento:

Una animación que muestra un cursor sobre un div de cada clase

.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
fuente
Fuera de tema, ¿Utilizando qué software hiciste esa animación gif? Esperando .. @ Santosh Khalse
fWd82
3
@ fWd82 comprueba ShareX - graba un gif
Oculto
Sentí que este era un recordatorio útil de los cursores y agregué el código como herramienta. Aquí hay un enlace al código anterior: spragucm.com/web-css-cursor-pointers
Chris Sprague
1
Increíble animación! @ fWd82 - Peek también es bueno para grabar gifs de un área de tu pantalla. github.com/phw/peek
Autumn Leonard
1
ja - esto es asombroso! gracias @ santosh-khalse
sufinawaz
156

No necesita jQuery para esto, simplemente use el siguiente contenido CSS:

li {cursor: pointer}

¡Y voilá! Práctico.

Denis 'Alfeo' Cahuk
fuente
1
¿Práctico? Hmm ... veo lo que hiciste allí, @ denis-alpheus-cahuk
osiris
78

Utilizar:

li:hover {
    cursor: pointer;
}

Otros valores válidos (que handes no ) para la especificación HTML actual se pueden ver aquí .

Alastair
fuente
13
No entiendo cuál es el uso de la :hoverpseudo clase en este caso. ¿Hay alguna ventaja para especificar un cursor diferente cuando el mouse no pasa el elemento por encima? También leí que li:hoverno funciona en IE6.
Robert
1
Supongo que :hoveres solo por especificidad, @Robert. No puedo probar el soporte en ninguna versión de MSIE, lo siento, ¡pero no me sorprendería si no funcionara! : P
Alastair
¿Por qué está handen la respuesta principal, a pesar de que no funciona?
Negro
1
@EdwardBlack cursor: handestá en desuso y no está en la especificación css. es como de la era ie5-6. solo uso pointer.
norteamericano
43

Utilizar

cursor: pointer;
cursor: hand;

si quieres tener un resultado crossbrowser!

biancardi
fuente
77
Esto es 2018, y el cursor: la mano ya no es necesaria para el desarrollo entre navegadores, ¿verdad?
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; }

También puede hacer que el cursor sea una imagen:

.img-cur {
   cursor: url(images/cursor.png), auto;
}
Khaja Md Sher E Alam
fuente
77
No es una respuesta a la pregunta.
99
Esta quizás no sea la respuesta directa a la pregunta, pero esta es una muy buena guía. ¡por cierto, gracias!
chitcharonko
20

Creo que sería inteligente mostrar solo el cursor de mano / puntero cuando JavaScript esté disponible. Por lo tanto, las personas no tendrán la sensación de que pueden hacer clic en algo que no se puede hacer clic.

Para lograrlo, puede usar la biblioteca JavaScript jQuery para agregar el CSS al elemento así

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

O encadenarlo directamente al controlador de clics.

O cuando se usa el modernizador en combinación con <html class="no-js">, el CSS se vería así:

.js li { cursor: pointer; }
Christoph
fuente
18
li:hover {cursor: hand; cursor: pointer;}
Xedret
fuente
17

Solo para completar:

cursor: -webkit-grab;

También le da una mano, la que conoce cuando mueve la vista de una imagen.

Es bastante útil si desea emular el comportamiento de captura mediante jQuery y mousedown.

Ingrese la descripción de la imagen aquí

Kai Noack
fuente
16

Para un navegador cruzado completo, use:

cursor: pointer;
cursor: hand;
Erich Toven
fuente
12

Simplemente haz algo como esto:

li { 
  cursor: pointer;
}

Lo aplico en su código para ver cómo funciona:

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

Nota: Además, no olvide que puede tener cualquier cursor de mano con cursor personalizado, puede crear un icono de mano favorito como este, por ejemplo:

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
fuente
11

Para poder hacer que cualquier cosa reciba el tratamiento "mousechange", puede agregar una clase CSS:

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

No diría que lo use, cursor:handya que solo era válido para Internet Explorer 5.5 y versiones posteriores, e Internet Explorer 6 vino con Windows XP (2002). Las personas solo recibirán la pista para actualizar cuando su navegador deje de funcionar para ellos. Además, en Visual Studio, se subrayará en rojo esa entrada. Me dice:

Validación (CSS 3.0): "mano" no es un valor válido para la propiedad "cursor"

vapcguy
fuente
10
ul li:hover{
   cursor: pointer;
}
usuario3776645
fuente
9

Todas las otras respuestas sugieren usar el puntero CSS estándar, sin embargo, hay dos métodos:

  1. Aplica la propiedad CSS cursor:pointer;a los elementos. (Este es el estilo predeterminado cuando un cursor se desplaza sobre un botón).

  2. Aplique la propiedad CSS cursor:url(pointer.png);utilizando un gráfico personalizado para su puntero. Esto puede ser más deseable si desea asegurarse de que la experiencia del usuario sea idéntica en todas las plataformas (en lugar de permitir que el navegador / SO decida cómo debería ser el cursor del puntero). Tenga en cuenta que se pueden agregar opciones de reserva en caso de que no se encuentre la imagen, incluidas las URL secundarias o cualquiera de las otras opciones, es decircursor:url(pointer.png,fallback.png,pointer);

Por supuesto, esto puede aplicarse a los elementos de la lista de esta manera li{cursor:pointer;}, como una clase .class{cursor:pointer;}o como un valor para el atributo de estilo de cada elemento style="cursor:pointer;".

Andrés
fuente
8

Utilizar:

ul li:hover{
   cursor: pointer;
}

Para más eventos del mouse, verifique la propiedad del cursor CSS .

Masoud Mustamandi
fuente
Respuesta duplicada Debería haber agregado el enlace como una edición a la otra respuesta del 21 de diciembre de 2014 por el usuario3776645.
vapcguy
5

Puede usar uno de los siguientes:

li:hover
{
 cursor: pointer;
}

o

li
{
 cursor: pointer;
}

Ejemplo de trabajo 1:

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

Ejemplo de trabajo 2:

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

Willy Wonka
fuente
3

Puedes usar el siguiente código:

li:hover { cursor: pointer; }

Capitán JK
fuente
3

Para un símbolo de mano básico:

Tratar

cursor: pointer 

Si desea un símbolo de mano como arrastrar algún elemento y soltarlo, intente:

cursor: grab
Nalan Madheswaran
fuente
3

También puede usar el siguiente estilo:

li {
    cursor: grabbing;
}
Ankit Misra
fuente
2

Usando un Hack HTML

Nota: esto no se recomienda ya que se considera una mala práctica.

Ajustar el contenido en una etiqueta de anclaje que contenga un hrefatributo funcionará sin aplicar explícitamente la cursor: pointer;propiedad con el efecto secundario de las propiedades de anclaje (modificado con CSS):

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

Rohit Nair
fuente
1
Esto no funciona Las etiquetas de anclaje solo tienen un cursor puntero con subrayado y un color diferente si tienen un href.
Artyer
1
"¿Cómo puedo hacer que el cursor sea una mano cuando un usuario se desplaza sobre un elemento de la lista?" - Para esta pregunta en particular, lo hace. Pero como señaló @sandrooco, no es una buena práctica.
Rohit Nair el
1

Comprueba lo siguiente. Lo obtengo 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
fuente
0

simplemente usando CSS para configurar personalizar el puntero del cursor

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;

manifestación

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

imagen hand.cur

li:hover{
   cursor: url("../icons/hand.cur"), pointer;
}
xgqfrms
fuente