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.


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; }

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>


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.


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í .


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!


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;
}

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; }


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í


16

Para un navegador cruzado completo, use:

cursor: pointer;
cursor: hand;

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>


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"



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;".


8

Utilizar:

ul li:hover{
   cursor: pointer;
}

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


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>



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


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>


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>

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;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.