Tornar o cursor uma mão quando um usuário passa o mouse sobre um item da lista

1958

Eu tenho uma lista e tenho um manipulador de cliques para seus itens:

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

Como posso mudar o ponteiro do mouse para ponteiro de mão (como passar o mouse sobre um botão)? No momento, o ponteiro se transforma em um ponteiro de seleção de texto quando passo o mouse sobre os itens da lista.

user246114
fonte
52
Para sua informação, retomei sua pergunta removendo "jquery" e adicionando "css" para refletir com mais precisão a natureza da sua pergunta e a resposta.
Christopher Parker
4
Uma boa lista de referência para alterar o cursor para uma mão e outros ícones disponíveis em css. javascriptkit.com/dhtmltutors/csscursors.shtml
Neil
3
Se houver um manipulador de cliques adicionado com JavaScript, também o css do ponteiro do mouse deverá ser adicionado com JavaScript. Portanto, o usuário não acha que pode clicar onde não é possível. Eu adicionei uma resposta apropriada para isso.
Christoph
Você tentoucursor: grab
devssh

Respostas:

3252

À luz da passagem do tempo, como as pessoas mencionaram, agora você pode usar com segurança apenas:

li { cursor: pointer; }
Aren
fonte
212
É importante notar que apenas fazendo cursor: pointeré bom o suficiente para tudo acima IE 5.5: quirksmode.org/css/cursor.html
ripper234
19
É engraçado como ponteiro! = Cursor e mão! = Ponteiro, aumentando ainda mais a confusão. :)
Henrik Erlandsson /
22
De notar, quirksmode.org/css/user-interface/cursor.html#note (mencionado em um comentário anterior) afirma que a mão deve vir após o ponteiro. Eu recomendo usar apenas ponteiro - IE 5.5 é mais morto do que o IE 6.
Iiridayn
2
@ EdwardBlack costumava ser necessário para navegadores estranhos que não eram compatíveis com os padrões, a resposta foi atualizada há muito tempo para refletir a nova maneira, que é simplesmente que pointeressa pergunta tenha mais de 5 anos de idade.
Aren
De fato. Mesmo se você executar o IE no modo de compatibilidade IE5, cursor:pointerainda funcionará. Portanto, se alguma vez houve uma desculpa para usar cursor:hand, não existe mais.
Sr. Lister
336

Use para li:

li:hover {
    cursor: pointer;
}

Veja mais propriedades do cursor com exemplos após executar a opção de trecho:

Uma animação mostrando um cursor pairando sobre uma div de cada 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
fonte
Fora do tópico, usando qual software você fez aquela animação gif? Esperando .. @ Santosh Khalse
fWd82
3
@ fWd82 check ShareX - record a gif
Escondido
Eu senti que este era um lembrete útil de cursores e adicionei o código como uma ferramenta. Aqui está um link para o código acima: spragucm.com/web-css-cursor-pointers #
Chris Sprague
1
Animação incrível! @ fWd82 - O Peek também é bom para gravar gifs de uma área da sua tela. github.com/phw/peek
Autumn Leonard
1
ha - isso é incrível! obrigado @ santosh-khalse
sufinawaz
156

Você não precisa do jQuery para isso, basta usar o seguinte conteúdo CSS:

li {cursor: pointer}

E voilà! Handy.

Denis 'Alpheus' Cahuk
fonte
1
Handy? Hmm ... Eu vejo o que você fez lá, @ denis-alpheus-cahuk
Osiris
78

Usar:

li:hover {
    cursor: pointer;
}

Outros valores válidos (que handé não ) para a especificação HTML atual pode ser visto aqui .

Alastair
fonte
13
Eu não entendo qual é o uso da :hoverpseudo classe neste caso. Existe alguma vantagem em especificar um cursor diferente quando o mouse não passa o mouse pelo elemento? Também li que li:hovernão funciona no IE6.
Robert
1
Suponho que :hoverseja apenas por especificidade, @Robert. Não posso testar o suporte em nenhuma versão do MSIE, desculpe, mas não me surpreenderia se não funcionasse! : P
Alastair
por que está handna resposta superior, mesmo que não esteja funcionando?
Preto
1
@EdwardBlack cursor: handestá obsoleto e não está na especificação css. é como da era ie5-6. use apenas pointer.
Northamerican
43

Usar

cursor: pointer;
cursor: hand;

se você deseja obter um resultado de navegador cruzado!

biancardi
fonte
7
Estamos em 2018, e cursor: hand não é mais necessário para o desenvolvimento entre navegadores, certo?
Haramoz 14/05
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; }

Você também pode fazer com que o cursor seja uma imagem:

.img-cur {
   cursor: url(images/cursor.png), auto;
}
Khaja Md Sher E Alam
fonte
7
Não é uma resposta para a pergunta.
9
talvez essa não seja a resposta direta à pergunta, mas essa é uma orientação muito boa. por falar nisso, agradeço!
chitcharonko
20

Eu acho que seria inteligente mostrar apenas o cursor de mão / ponteiro quando o JavaScript estiver disponível. Para que as pessoas não sintam que podem clicar em algo que não é clicável.

Para conseguir isso, você pode usar o jQuery da biblioteca JavaScript para adicionar o CSS ao elemento da seguinte maneira

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

Ou encadeie-o diretamente no manipulador de cliques.

Ou quando o modernizador em combinação com <html class="no-js">for usado, o CSS ficará assim:

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

Apenas para completar:

cursor: -webkit-grab;

Também oferece uma mão, aquela que você conhece ao mover a visualização de uma imagem.

É bastante útil se você deseja imitar o comportamento de agarrar usando jQuery e mousedown.

Digite a descrição da imagem aqui

Kai Noack
fonte
16

Para um navegador cruzado completo, use:

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

Basta fazer algo assim:

li { 
  cursor: pointer;
}

Aplico-o no seu código para ver como ele funciona:

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

Nota: Além disso, não esqueça que você pode ter qualquer cursor de mão com cursor personalizado, você pode criar um ícone de mão favorito como este, por exemplo:

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

Para poder fazer com que qualquer coisa obtenha o tratamento "mousechange", você pode adicionar uma classe CSS:

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

Eu não diria que o uso cursor:handera válido apenas para o Internet Explorer 5.5 e inferior, e o Internet Explorer 6 veio com o Windows XP (2002). As pessoas só terão a dica de atualizar quando o navegador parar de funcionar para elas. Além disso, no Visual Studio, ele sublinhará em vermelho essa entrada. Diz-me:

Validação (CSS 3.0): "mão" não é um valor válido para a propriedade "cursor"

vapcguy
fonte
10
ul li:hover{
   cursor: pointer;
}
user3776645
fonte
9

Todas as outras respostas sugerem o uso do ponteiro CSS padrão, no entanto, existem dois métodos:

  1. Aplique a propriedade CSS cursor:pointer;aos elementos. (Esse é o estilo padrão quando um cursor passa o mouse sobre um botão.)

  2. Aplique a propriedade CSS cursor:url(pointer.png);usando um gráfico personalizado para o ponteiro. Isso pode ser mais desejável se você quiser garantir que a experiência do usuário seja idêntica em todas as plataformas (em vez de permitir que o navegador / SO decida como deve ser o cursor do ponteiro). Observe que as opções de fallback podem ser adicionadas caso a imagem não seja encontrada, incluindo URLs secundários ou qualquer outra opção, por exemplocursor:url(pointer.png,fallback.png,pointer);

Obviamente, eles podem ser aplicados aos itens da lista dessa maneira li{cursor:pointer;}, como uma classe .class{cursor:pointer;}ou como um valor para o atributo de estilo de cada elemento style="cursor:pointer;".

Andrew
fonte
8

Usar:

ul li:hover{
   cursor: pointer;
}

Para mais eventos do mouse, verifique a propriedade do cursor CSS .

Masoud Mustamandi
fonte
Resposta duplicada. Deveria ter adicionado o link como uma edição à outra resposta datada de 21 de dezembro de 2014 pelo usuário3776645.
vapcguy 21/04
5

Você pode usar um dos seguintes:

li:hover
{
 cursor: pointer;
}

ou

li
{
 cursor: pointer;
}

Exemplo de trabalho 1:

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

Exemplo de trabalho 2:

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

Willy Wonka
fonte
3

Você pode usar o código abaixo:

li:hover { cursor: pointer; }

Capitão JK
fonte
3

Para um símbolo básico da mão:

Tentar

cursor: pointer 

Se você quiser um símbolo de mão como arrastar um item e soltá-lo, tente:

cursor: grab
Nalan Madheswaran
fonte
3

Você também pode usar o seguinte estilo:

li {
    cursor: grabbing;
}
Ankit Misra
fonte
2

Usando um corte em HTML

Nota: isso não é recomendado, pois é considerado uma má prática

O agrupamento do conteúdo em uma marca de âncora que contém um hrefatributo funcionará sem aplicar explicitamente a cursor: pointer;propriedade com o efeito colateral das propriedades da âncora (emendada com CSS):

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

Rohit Nair
fonte
1
Isso não funciona. As tags âncora só têm um cursor de ponteiro com sublinhado e uma cor diferente se tiverem um href.
Artyer 06/04
1
"Como posso transformar o cursor em uma mão quando um usuário passa o mouse sobre um item da lista?" - Para esta questão em particular, é verdade. Mas, como apontado por @sandrooco, não é uma boa prática.
precisa
1

Verifique o seguinte. Eu o recebo do 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
fonte
0

apenas usando CSS para definir personalizar o ponteiro do 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;

demonstração

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

imagem de hand.cur

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