Ustaw kursor w dłoni, gdy użytkownik najedzie myszą na element listy


1957

Mam listę i mam moduł obsługi kliknięć dla jej elementów:

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

Jak mogę zmienić kursor myszy na wskaźnik dłoni (np. Gdy najedziesz myszką na przycisk)? W tej chwili wskaźnik zamienia się w wskaźnik zaznaczania tekstu, gdy zatrzymam kursor myszy nad elementami listy.


52
Do Twojej wiadomości zmieniłem tag na twoje pytanie, usuwając „jquery” i dodając „css”, aby dokładniej odzwierciedlić naturę twojego pytania i odpowiedź na nie.
Christopher Parker

4
Dobra lista referencyjna do zmiany kursora na dłoń i inne ikony dostępne w css. javascriptkit.com/dhtmltutors/csscursors.shtml
Neil

3
Jeśli istnieje moduł obsługi kliknięć, który jest dodawany za pomocą JavaScript, należy również dodać css wskaźnika myszy za pomocą JavaScript. Dlatego użytkownik nie sądzi, że mógłby kliknąć tam, gdzie nie jest to możliwe. Do tego dodałem odpowiednią odpowiedź .
Christoph

Próbowałeścursor: grab
devssh

Odpowiedzi:


3251

W świetle upływu czasu, jak wspomnieli ludzie, możesz teraz bezpiecznie po prostu użyć:

li { cursor: pointer; }

212
Warto zauważyć, że samo robienie cursor: pointerjest wystarczające do wszystkiego powyżej IE 5.5: quirksmode.org/css/cursor.html
ripper234

19
To zabawne, jak wskaźnik! = Kursor i ręka! = Wskaźnik, jeszcze bardziej wprowadzając zamieszanie. :)
Henrik Erlandsson

22
Warto zauważyć, quirksmode.org/css/user-interface/cursor.html#note (przywołany we wcześniejszym komentarzu) stwierdza, że ​​ręka musi następować po wskaźniku. Polecam używanie tylko wskaźnika - IE 5.5 jest bardziej martwy niż IE 6.
Iiridayn

2
@EdwardBlack było kiedyś wymagane w przypadku nieparzystych przeglądarek, które nie były zgodne ze standardami, odpowiedź została zaktualizowana dawno temu, aby odzwierciedlić nowy sposób, po prostu pointerto pytanie ma ponad 5 lat.
Aren

W rzeczy samej. Nawet jeśli uruchomisz IE w trybie zgodności z IE5, cursor:pointernadal działa. Więc jeśli kiedykolwiek istniała wymówka cursor:hand, to już jej nie ma.
Pan Lister,

335

Użyj do li:

li:hover {
    cursor: pointer;
}

Zobacz więcej właściwości kursora z przykładami po uruchomieniu opcji fragmentu:

Animacja przedstawiająca kursor najeżdżający na div każdej klasy

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


Off topic, Za pomocą jakiego oprogramowania wykonałeś animację gif? Czekam .. @ Santosh Khalse
fWd82,

3
@ fWd82 sprawdź ShareX - nagraj gif
Ukryty

Czułem, że to przydatne przypomnienie kursorów i dodałem kod jako narzędzie. Oto link do powyższego kodu: spragucm.com/web-css-cursor-pointers
Chris Sprague

1
Niesamowita animacja! @ fWd82 - Peek jest również dobry do nagrywania gifów z obszaru ekranu. github.com/phw/peek
Autumn Leonard

1
ha - to jest niesamowite! dziękuję @ santosh-khalse
sufinawaz

156

Nie potrzebujesz do tego jQuery, po prostu użyj następującej treści CSS:

li {cursor: pointer}

I voila! Poręczny.


1
Poręczny? Hmm ... Widzę, co zrobiłeś tam @ Denis-Alpheus-cahuk
Ozyrys

78

Posługiwać się:

li:hover {
    cursor: pointer;
}

Inne ważne wartości (co handjest nie ) dla aktualnej specyfikacji HTML można obejrzeć tutaj .


13
Nie rozumiem, jakie jest użycie :hoverpseudoklasy w tym przypadku. Czy jest korzyść ze wskazania innego kursora, gdy mysz nie unosi elementu? Przeczytałem również, że li:hovernie działa w IE6.
Robert

1
Przypuszczam, że :hoverdotyczy tylko specyficzności, @Robert. Nie mogę przetestować wsparcia w żadnej wersji MSIE, przepraszam, ale nie zaskoczyłoby mnie to, gdyby nie działało! : P
Alastair

dlaczego znajduje się handw górnej odpowiedzi, mimo że nie działa?
Black

1
@EdwardBlack cursor: handjest przestarzałe i nie ma go w specyfikacji css. jest jak z ery 5-6 lat. używać tylko pointer.
północnoamerykański

43

Posługiwać się

cursor: pointer;
cursor: hand;

jeśli chcesz mieć wynik crossbrowser!


7
Jest rok 2018 i kursor: ręka nie jest już potrzebna do programowania w różnych przeglądarkach, prawda?
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; }

Możesz także ustawić kursor jako obraz:

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

7
To nie jest odpowiedź na pytanie.

9
może nie jest to bezpośrednia odpowiedź na pytanie, ale jest to bardzo dobra wskazówka. dzięki przy okazji!
chitcharonko

20

Myślę, że rozsądnie byłoby pokazywać kursor ręki / wskaźnika tylko wtedy, gdy JavaScript jest dostępny. Aby ludzie nie mieli wrażenia, że ​​mogą kliknąć coś, czego nie można kliknąć.

Aby to osiągnąć, możesz użyć biblioteki jQuery JavaScript, aby dodać CSS do elementu w ten sposób

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

Lub połącz go bezpośrednio z modułem obsługi kliknięć.

Lub gdy używany jest modernizator w połączeniu z <html class="no-js">, CSS wygląda następująco:

.js li { cursor: pointer; }


17

Dla kompletności:

cursor: -webkit-grab;

Daje także rękę, którą znasz, gdy przesuwasz widok obrazu wokół.

Jest to bardzo przydatne, jeśli chcesz emulować zachowanie grab przy użyciu jQuery i mousedown.

Wpisz opis zdjęcia tutaj



12

Po prostu zrób coś takiego:

li { 
  cursor: pointer;
}

Stosuję go w kodzie, aby zobaczyć, jak to działa:

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

Uwaga: Również NIE zapomnieć można mieć dowolny kursor ręki z niestandardowego kursora, można utworzyć ikonę fav ręki jak ten na przykład:

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

Aby móc cokolwiek uzyskać leczenie za pomocą myszy, możesz dodać klasę CSS:

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

Nie powiedziałbym, aby używać, cursor:handponieważ był on ważny tylko dla Internet Explorera 5.5 i niższych, a Internet Explorer 6 był dostarczany z Windows XP (2002). Ludzie otrzymają wskazówkę dotyczącą aktualizacji tylko wtedy, gdy ich przeglądarka przestanie dla nich działać. Dodatkowo w programie Visual Studio czerwony podkreślenie tego wpisu. Mówi mi:

Walidacja (CSS 3.0): „ręka” nie jest prawidłową wartością dla właściwości „kursor”



9

Wszystkie pozostałe odpowiedzi sugerują użycie standardowego wskaźnika CSS, jednak istnieją dwie metody:

  1. Zastosuj właściwość CSS cursor:pointer;do elementów. (Jest to domyślny styl, gdy kursor przesuwa się nad przyciskiem).

  2. Zastosuj właściwość CSS cursor:url(pointer.png);za pomocą niestandardowej grafiki wskaźnika. Może to być bardziej pożądane, jeśli chcesz upewnić się, że wrażenia użytkownika są identyczne na wszystkich platformach (zamiast pozwalać przeglądarce / systemowi operacyjnemu decydować, jak powinien wyglądać kursor wskaźnika). Pamiętaj, że w przypadku nie znalezienia obrazu można dodać opcje rezerwowe, w tym dodatkowe adresy URL lub dowolne inne opcje, npcursor:url(pointer.png,fallback.png,pointer);

Oczywiście można je zastosować do elementów listy w ten sposób li{cursor:pointer;}, jako klasę .class{cursor:pointer;}lub jako wartość atrybutu stylu każdego elementu style="cursor:pointer;".



5

Możesz użyć jednej z następujących opcji:

li:hover
{
 cursor: pointer;
}

lub

li
{
 cursor: pointer;
}

Przykład roboczy 1:

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

Przykład roboczy 2:

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



3

Dla podstawowego symbolu ręki:

Próbować

cursor: pointer 

Jeśli chcesz symbol ręki, taki jak przeciągnij jakiś przedmiot i upuść go, spróbuj:

cursor: grab


2

Korzystanie z hacka HTML

Uwaga: nie jest to zalecane, ponieważ jest uważane za złą praktykę

Zawijanie zawartości w tagu kotwicy zawierającym hrefatrybut będzie działał bez jawnego zastosowania cursor: pointer;właściwości z efektem ubocznym właściwości kotwicy (zmienionym CSS):

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


1
To nie działa Znaczniki kotwicy mają kursor wskaźnika z podkreśleniem i innym kolorem, jeśli mają href.
Artyer,

1
„Jak mogę ustawić kursor w dłoni, gdy użytkownik najeżdża kursorem na element listy?” - Tak jest w przypadku tego konkretnego pytania. Ale jak wskazał @sandrooco, nie jest to dobra praktyka.
Rohit Nair,

1

Sprawdź następujące. Dostaję to od 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

po prostu używając CSS, aby ustawić niestandardowy wskaźnik kursora

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;

próbny

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

obraz hand.cur

li:hover{
   cursor: url("../icons/hand.cur"), pointer;
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.