ทำให้เคอร์เซอร์เป็นมือเมื่อผู้ใช้วางเมาส์เหนือรายการ


1957

ฉันมีรายการและมีตัวจัดการคลิกสำหรับรายการ:

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

ฉันจะเปลี่ยนตัวชี้เมาส์เป็นตัวชี้มือได้อย่างไร (เช่นเมื่อวางเมาส์เหนือปุ่ม) ตอนนี้ตัวชี้จะเปลี่ยนเป็นตัวชี้การเลือกข้อความเมื่อฉันวางเมาส์เหนือรายการ


52
ในปีที่แล้วฉันตอบคำถามของคุณอีกครั้งโดยลบ "jquery" และเพิ่ม "css" เพื่อให้สะท้อนลักษณะของคำถามและคำตอบที่ถูกต้องยิ่งขึ้น
Christopher Parker

4
รายการอ้างอิงที่ดีสำหรับการเปลี่ยนเคอร์เซอร์เป็นมือและไอคอนอื่น ๆ ที่มีอยู่ใน css javascriptkit.com/dhtmltutors/csscursors.shtml
Neil

3
หากมีตัวจัดการคลิกที่เพิ่มด้วย JavaScript ก็ควรเพิ่ม css สำหรับตัวชี้เมาส์ด้วย JavaScript ดังนั้นผู้ใช้จึงไม่คิดว่าเขาหรือเธอสามารถคลิกที่มันเป็นไปไม่ได้ ฉันได้เพิ่มคำตอบที่เหมาะสมสำหรับสิ่งนี้
Christoph

คุณลองcursor: grab
devssh

คำตอบ:


3251

เมื่อเวลาผ่านไปตามที่คนอื่นพูดคุณสามารถใช้งานได้อย่างปลอดภัย:

li { cursor: pointer; }

212
เป็นที่น่าสังเกตว่าการทำแบบcursor: pointerนั้นดีพอสำหรับทุกอย่างที่เหนือ IE 5.5: quirksmode.org/css/cursor.html
ripper234

19
มันตลกดีที่ตัวชี้! = เคอร์เซอร์และมือ! = ตัวชี้เพิ่มความสับสนมากยิ่งขึ้น :)
Henrik Erlandsson

22
จากบันทึกย่อquirksmode.org/css/user-interface/cursor.html#note (อ้างอิงในความคิดเห็นก่อนหน้า) ระบุว่ามือต้องมาหลังจากตัวชี้ ฉันแนะนำให้ใช้แค่ตัวชี้ - IE 5.5 เป็นตัวที่ดีกว่า IE 6
Iiridayn

2
@EdwardBlack เคยเป็นที่ต้องการสำหรับเบราว์เซอร์แปลก ๆ ที่ไม่ได้มาตรฐานตามคำตอบที่ได้รับการปรับปรุงมานานแล้วเพื่อสะท้อนให้เห็นถึงวิธีการใหม่ซึ่งเป็นเพียงแค่pointerคำถามนี้มีอายุมากกว่า 5 ปี btw
Aren

จริง แม้ว่าคุณจะรัน IE ในโหมดที่เข้ากันได้กับ IE5 แต่cursor:pointerก็ยังใช้งานได้ ดังนั้นหากมีข้อแก้ตัวในการใช้งานcursor:handจะไม่มีอีกต่อไป
Mr Lister

335

ใช้สำหรับli:

li:hover {
    cursor: pointer;
}

ดูคุณสมบัติเคอร์เซอร์เพิ่มเติมพร้อมตัวอย่างหลังจากเรียกใช้ตัวเลือกตัวอย่าง:

ภาพเคลื่อนไหวที่แสดงเคอร์เซอร์วางตัวอยู่เหนือกองของแต่ละชั้นเรียน

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


ปิดหัวข้อการใช้ซอฟต์แวร์ใดที่คุณทำ gif animation? กำลังรอ .. @ Santosh Khalse
fWd82

3
@ fWd82 ตรวจสอบ ShareX - บันทึก gif
ซ่อน

ฉันรู้สึกว่านี่เป็นเครื่องมือเตือนความจำที่มีประโยชน์เกี่ยวกับเคอร์เซอร์และเพิ่มรหัสเป็นเครื่องมือ นี่คือลิงก์ไปยังรหัสด้านบน: spragucm.com/web-css-cursor-pointers
Chris Sprague

1
แอนิเมชันที่ยอดเยี่ยม! @ fWd82 - Peek นั้นดีสำหรับการบันทึก gif ของพื้นที่หน้าจอของคุณ github.com/phw/peek
ฤดูใบไม้ร่วง Leonard

1
ฮ่า - นี่มันสุดยอดมาก! ขอบคุณ @ santosh-khalse
sufinawaz

156

คุณไม่ต้องการ jQuery สำหรับสิ่งนี้เพียงใช้เนื้อหา CSS ต่อไปนี้:

li {cursor: pointer}

และvoilà! มีประโยชน์


1
ที่มีประโยชน์? อืม ... ฉันเห็นสิ่งที่คุณทำที่นั่น @ denis-alpheus-cahuk
โอซิริส

78

ใช้:

li:hover {
    cursor: pointer;
}

ค่าที่ถูกต้องอื่น ๆ (ซึ่งhandเป็นไม่ได้ ) สำหรับสเปค HTML ปัจจุบันสามารถดูได้ที่นี่


13
ฉันไม่เข้าใจว่าการใช้:hoverคลาสหลอกในกรณีนี้คืออะไร มีประโยชน์สำหรับการระบุเคอร์เซอร์ที่แตกต่างกันเมื่อเมาส์ไม่ได้เลื่อนองค์ประกอบ? นอกจากนี้ฉันอ่านที่li:hoverไม่ทำงานใน IE6
Robert

1
ฉันคิดว่า:hoverเป็นเพียงเพื่อความจำเพาะ @Robert ฉันไม่สามารถทดสอบการสนับสนุนใน MSIE เวอร์ชันใด ๆ ขออภัย แต่จะไม่ทำให้ฉันประหลาดใจถ้ามันไม่ทำงาน! : P
Alastair

ทำไมถึงอยู่handในคำตอบที่ดีที่สุดถึงแม้ว่ามันจะไม่ทำงานก็ตาม
Black

1
@EdwardBlack cursor: handเลิกใช้แล้วและไม่ได้อยู่ในข้อมูลจำเพาะ css มันเหมือนจากยุค ie5-6 pointerใช้เพียง
northamerican

43

ใช้

cursor: pointer;
cursor: hand;

หากคุณต้องการมีผล crossbrowser!


7
นี่คือ 2018 และเคอร์เซอร์: ไม่จำเป็นต้องใช้มือในการพัฒนาข้ามเบราว์เซอร์อีกต่อไปใช่ไหม?
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; }

คุณสามารถมีเคอร์เซอร์เป็นรูปภาพได้:

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

7
มันไม่ได้เป็นคำตอบสำหรับคำถาม

9
นี่อาจไม่ใช่คำตอบสำหรับคำถามโดยตรง แต่นี่เป็นแนวทางที่ดีมาก ขอบคุณโดยวิธี!
chitcharonko

20

ฉันคิดว่ามันจะฉลาดที่จะแสดงเฉพาะเคอร์เซอร์มือ / ตัวชี้เมื่อมีจาวาสคริปต์ ดังนั้นผู้คนจะไม่รู้สึกว่าพวกเขาสามารถคลิกที่สิ่งที่ไม่สามารถคลิกได้

เพื่อให้บรรลุว่าคุณสามารถใช้ JavaScript libary jQuery เพื่อเพิ่ม CSS ให้กับองค์ประกอบเช่นนั้น

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

หรือโยงโดยตรงกับตัวจัดการคลิก

หรือเมื่อใช้modernizerร่วมกับการ<html class="no-js">ใช้ CSS จะมีลักษณะเช่นนี้:

.js li { cursor: pointer; }




12

เพียงแค่ทำสิ่งนี้:

li { 
  cursor: pointer;
}

ฉันใช้มันในรหัสของคุณเพื่อดูว่ามันทำงานอย่างไร:

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

หมายเหตุ:นอกจากนี้อย่าลืมว่าคุณสามารถมีเคอร์เซอร์มือพร้อมเคอร์เซอร์ที่กำหนดเองคุณสามารถสร้างไอคอนมือที่ชอบเช่นนี้:

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

สำหรับความสามารถในการทำทุกอย่างเพื่อให้ได้รับการ "mousechange" คุณสามารถเพิ่มคลาส CSS ได้:

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

ฉันจะไม่บอกว่าจะใช้cursor:handเพราะมันใช้ได้เฉพาะกับ Internet Explorer 5.5 และด้านล่างและ Internet Explorer 6 มาพร้อมกับ Windows XP (2002) ผู้คนจะได้รับคำใบ้ในการอัปเกรดเมื่อเบราว์เซอร์หยุดทำงาน นอกจากนี้ใน Visual Studio จะมีการขีดเส้นใต้สีแดงของรายการนั้น มันบอกฉัน:

การตรวจสอบความถูกต้อง (CSS 3.0): "hand" ไม่ใช่ค่าที่ถูกต้องสำหรับคุณสมบัติ "เคอร์เซอร์"



9

คำตอบอื่น ๆ ทั้งหมดแนะนำให้ใช้ตัวชี้ CSS มาตรฐานอย่างไรก็ตามมีสองวิธี:

  1. ใช้คุณสมบัติ CSS cursor:pointer;กับองค์ประกอบ (นี่เป็นรูปแบบเริ่มต้นเมื่อเคอร์เซอร์วางอยู่เหนือปุ่ม)

  2. ใช้คุณสมบัติ CSS cursor:url(pointer.png);โดยใช้กราฟิกที่กำหนดเองสำหรับตัวชี้ของคุณ สิ่งนี้อาจเป็นที่ต้องการมากกว่าถ้าคุณต้องการให้แน่ใจว่าประสบการณ์ผู้ใช้เหมือนกันในทุกแพลตฟอร์ม (แทนที่จะอนุญาตให้เบราว์เซอร์ / ระบบปฏิบัติการตัดสินว่าเคอร์เซอร์ตัวชี้ของคุณควรมีลักษณะอย่างไร) โปรดทราบว่าอาจมีการเพิ่มตัวเลือกสำรองในกรณีที่ไม่พบรูปภาพรวมถึง URL รองหรือตัวเลือกอื่น ๆ เช่นcursor:url(pointer.png,fallback.png,pointer);

ของหลักสูตรเหล่านี้อาจถูกนำไปใช้กับรายการในลักษณะนี้li{cursor:pointer;}เป็นชั้นเรียนหรือเป็นค่าสำหรับแอตทริบิวต์รูปแบบของแต่ละองค์ประกอบ.class{cursor:pointer;}style="cursor:pointer;"


8

ใช้:

ul li:hover{
   cursor: pointer;
}

สำหรับเหตุการณ์ของเมาส์มากขึ้นตรวจสอบคุณสมบัติเคอร์เซอร์ CSS


คำตอบซ้ำ ควรเพิ่มลิงก์เป็นการแก้ไขคำตอบอื่น ๆ ลงวันที่ 21 ธันวาคม 2014 โดยผู้ใช้ 3776645
vapcguy

5

คุณสามารถใช้วิธีใดวิธีหนึ่งต่อไปนี้:

li:hover
{
 cursor: pointer;
}

หรือ

li
{
 cursor: pointer;
}

ตัวอย่างการทำงาน 1:

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

ตัวอย่างการทำงาน 2:

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



3

สำหรับสัญลักษณ์มือพื้นฐาน:

ลอง

cursor: pointer 

หากคุณต้องการสัญลักษณ์มือเช่นลากบางรายการและวางมันลอง:

cursor: grab


2

ใช้แฮ็ค HTML

หมายเหตุ: ไม่แนะนำให้ทำเช่นนี้เพราะถือว่าเป็นการปฏิบัติที่ไม่ดี

การห่อเนื้อหาในแท็กจุดยึดที่มีhrefแอตทริบิวต์จะทำงานโดยไม่ต้องใช้cursor: pointer;คุณสมบัติอย่างชัดเจนด้วยผลข้างเคียงของคุณสมบัติจุดยึด (แก้ไขด้วย CSS):

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


1
นี้จะไม่ทำงาน แท็ก Anchor มีเคอร์เซอร์ตัวชี้ที่มีขีดเส้นใต้และสีอื่นถ้ามี href
Artyer

1
"ฉันจะทำให้เคอร์เซอร์เป็นมือได้อย่างไรเมื่อผู้ใช้เลื่อนผ่านรายการต่างๆ" - สำหรับคำถามนี้โดยเฉพาะ แต่ตามที่ระบุโดย @sandrooco ไม่ใช่วิธีปฏิบัติที่ดี
Rohit Nair

1

ตรวจสอบดังต่อไปนี้ ฉันได้รับมันจาก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

เพียงแค่ใช้ CSS เพื่อตั้งค่าตัวชี้เคอร์เซอร์เอง

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;

การสาธิต

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

ภาพ hand.cur

li:hover{
   cursor: url("../icons/hand.cur"), pointer;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.