搜尋

滑鼠游標圖示 cursor

在一個網頁裡,通常只有超連結、選取或調整尺寸時,會出現「游標」圖示不同的狀態,除此之外,也可以透過 cursor 樣式屬性,設定滑鼠與元素互動時的游標圖示,這篇教學會透過 CSS cursor 的關鍵字改變滑鼠游標圖示,還會透過 url() 使用自訂圖片當作游標。

快速導覽:

CSS 教學 - 滑鼠游標 cursor

cursor 關鍵字更換滑鼠游標

cursor 可以設定滑鼠和元素發生互動時的「游標圖案」,具有繼承特性 通常會用「關鍵字」更換游標圖示,撰寫語法如下:

div {
  cursor: 游標關鍵字;
}

下方列出所有 cursor 關鍵字在 Windows 與 Mac 作業系統的呈現方式:

CSS 教學 - 滑鼠游標圖示cursor - cursor 關鍵字在 Windows 與 Mac 作業系統的呈現方式

下方範例會呈現所有 cursor 關鍵字效果,將滑鼠移動到關鍵字上方就可以觀察效果。

線上展示:https://codepen.io/oxxo/pen/XJrpmew

<!-- HTML 程式碼 -->
<div class="default">default</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="zoom-in">zoom-in</div>
<div class="zoom-out">zoom-out</div>
<div class="grab">grab</div>
<div class="grabbing">grabbing</div>
<div class="e-resize">e-resize</div>
<div class="n-resize">n-resize</div>
<div class="ne-resize">ne-resize</div>
<div class="nw-resize">nw-resize</div>
<div class="s-resize">s-resize</div>
<div class="se-resize">se-resize</div>
<div class="sw-resize">sw-resize</div>
<div class="w-resize">w-resize</div>
<div class="nesw-resize">nesw-resize</div>
<div class="nwse-resize">nwse-resize</div>
<div class="col-resize">col-resize</div>
<div class="row-resize">row-resize</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 120px;
    padding: 10px;
    border: 1px solid #000;
    margin: 10px;
    float: left;
  }
  div:hover {background: yellow;}
  .default { cursor: default; }
  .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; }
  .zoom-in { cursor: zoom-in; }
  .zoom-out { cursor: zoom-out; }
  .grab { cursor: grab; }
  .grabbing { cursor: grabbing; }
  .e-resize { cursor: e-resize; }
  .n-resize { cursor: n-resize; }
  .ne-resize { cursor: ne-resize; }
  .nw-resize { cursor: nw-resize; }
  .s-resize { cursor: s-resize; }
  .se-resize { cursor: se-resize; }
  .sw-resize { cursor: sw-resize; }
  .w-resize { cursor: w-resize; }
  .nesw-resize { cursor: nesw-resize; }
  .nwse-resize { cursor: nwse-resize; }
  .col-resize { cursor: col-resize; }
  .row-resize { cursor: row-resize; }
</style>

CSS 教學 - 滑鼠游標 cursor 圖示 - 所有 cursor 關鍵字效果

cursor url 自訂滑鼠游標圖片

除了透過關鍵字可以變更游標圖示,cursor 也可以使用「url」語法讓游標呈現自訂的圖案,語法具有幾種特色:

  • 預設圖片左上角會對齊原本滑鼠游標箭頭的尖端
  • 如果加入 x、y 參數,可以改變圖片位置。
  • x y 參數本身是「像素」單位,不需要加上任何單位
  • x y 參數數值限制在「0~圖片長或寬」,超過範圍就會等於 0 或圖片的長或寬。
  • 設定 x y 參數後圖片會往左和往上移動
  • 支援彩色圖案與游標 cur 檔案。

下方列出兩種撰寫語法:

div {
  cursor: url('圖片網址'), auto;      /* 滑鼠游標箭頭尖端為圖片的左上角 */
  cursor: url('圖片網址') x y, auto;  /* 圖片往左或往上位移多少像素 */
}

下方範例會讓兩個 div 使用 cursorurl 寫法,讓滑鼠呈現自訂游標,因為使用的圖片尺寸為 64x64,所以透過 x y 參數讓圖片中心點對齊滑鼠尖端。

線上展示:https://codepen.io/oxxo/pen/OPLWvvj

<!-- HTML 程式碼 -->
<div class="a">我是地圖游標</div>
<div class="b">我是彩色電話游標</div>


<!-- CSS 程式碼 -->
<style>
  div {
    width: 200px;
    height: 200px;
    border: 1px solid #000;
    margin: 10px;
  }
  .a {
    cursor: url('https://steam.oxxostudio.tw/download/css/cursor-demo.png') 32 32, auto;
  }
  .b {
    cursor: url('https://steam.oxxostudio.tw/download/css/cursor-color-demo.png') 32 32, auto;
  }
</style>

CSS 教學 - 滑鼠游標 cursor 圖示 - cursor url 自訂滑鼠游標圖片

小結

過去要讓滑鼠使用自訂圖案,往往會透過 JavaScript 來操作,由於瀏覽器幾乎都支援 CSS cursor 自訂圖案,透過 CSS 來實現這種效果會更加高效又便利,如果有相關需求不妨改用 CSS 操作吧。

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

CSS 教學

基本介紹

認識 CSS 開始使用 CSS CSS 語法規則 CSS 命名原則 CSS 常用樣式屬性

CSS 選擇器

認識 CSS 選擇器 優先順序 ( 權重 ) 樣式繼承與聯集 使用巢狀結構語法 元素選擇器 ID 和 Class 選擇器 屬性選擇器 文件結構選擇器 虛擬類別選擇器 ( 結構 ) 虛擬類別選擇器 ( 類型 ) 虛擬類別選擇器 ( 輸入 ) 虛擬類別選擇器 ( 行為 ) 虛擬類別選擇器 ( 超連結 ) 虛擬類別選擇器 ( 邏輯 ) 虛擬類別選擇器 ( 其他 ) 虛擬元素選擇器 群組與組合選擇器

數值與單位

關鍵字與文字數值 長度與角度單位 位置名稱與時間單位

規則與定義

變數 ( Variables ) 媒體查詢 ( @media ) 容器查詢 ( @container ) 自訂屬性值 ( @property ) 匯入樣式 ( @import ) 分層優先順序 ( @layer )

函式類型

數學計算 文字與清單計數 形狀與線段 路徑 ( path ) 生成內容與引號

顏色與濾鏡

顏色單位 色彩模型 漸層色 影像濾鏡 ( filter ) 背景濾鏡 ( backdrop-filter ) 混合模式 ( mix-blend-mode )

文字與段落

設定字型 ( font-family ) 使用外部字型 定義字型 ( @font-face ) 文字尺寸 文字樣式 ( 常用 ) 文字樣式 ( 其他實用 ) 文字樣式 ( 特殊用途 ) 文字換行 文字空白與 Tab 大小 文字行高與縮排 文字水平與垂直對齊 文字書寫方向 文字自動分欄

元素容器

容器顯示類型 ( display ) 元素 display 對照表 盒子模型 ( Box Model ) 寬度與高度 內邊距 ( padding ) 外邊界 ( margin ) 邊框 ( border ) 邊框圓角 ( border-radius ) 影像邊框 ( border-image ) 輪廓 ( outline ) 內容溢出與裁切 ( overflow ) 內容範圍 ( contain ) 可見性與透明度

背景與陰影

背景顏色 背景圖 ( 定位、尺寸 ) 背景圖 ( 固定、重複 ) 背景圖 ( 多重背景、混合 ) 背景縮寫 ( background ) 容器陰影 ( box-shadow )

清單與表格

清單樣式 清單計數器 定義計數規則 表格基本樣式 表格邊框樣式 表格內容寬度與對齊

基本排版與定位

元素排版方式 浮動 ( float ) 浮動形狀 定位 ( position )

Flexbox 彈性排版

Flexbox 彈性盒子 Flexbox 對齊方式 Flexbox 彈性伸縮

Grid 網格排版

Grid 網格容器與格線 Grid 網格空間與命名 Grid 網格流向與間距 Grid 排列網格項目 Grid 項目對齊與順序

轉場與動畫

轉場 ( transition ) 轉場觸發事件 動畫 ( animation ) 自訂動畫路徑 ( offset ) 動畫觸發事件 多重動畫的權重與順序

變形、裁切與遮罩

裁切路徑 ( clip-path ) 影像遮罩 ( mask ) 物件填滿方式與定位 轉換函式 ( transform ) 平移、旋轉與縮放 3D 轉換與透視 3D 正多面體

視窗與使用者行為

捲軸樣式 ( scrollbar ) 滑鼠游標圖示 ( cursor ) 滑鼠事件 ( pointer-events ) 使用者選取 ( user-select ) 捲動行為 ( scroll、overscroll )

範例效果

CSS 圓餅圖 CSS 跑馬燈 Google 載入動畫 漸層色的轉場與動畫 電子時鐘數字 不規則形狀動畫