当前位置:首页 > JavaScript

js实现游标

2026-04-03 19:56:35JavaScript

游标的基本概念

游标(Cursor)在JavaScript中通常指代用户在界面上的指针位置或文本选择的光标位置。根据应用场景不同,游标的实现方式也有所差异。

获取输入框游标位置

通过selectionStartselectionEnd属性可以获取或设置输入框中的游标位置:

const input = document.getElementById('myInput');
// 获取游标位置
const cursorPos = input.selectionStart;
// 设置游标位置
input.setSelectionRange(5, 5);

获取页面中的鼠标游标位置

通过监听mousemove事件获取鼠标在页面中的坐标:

document.addEventListener('mousemove', (event) => {
  const x = event.clientX;
  const y = event.clientY;
  console.log(`Cursor position: (${x}, ${y})`);
});

自定义游标样式

通过CSS修改鼠标指针样式:

body {
  cursor: url('custom-cursor.png'), auto;
}
.clickable {
  cursor: pointer;
}

文本编辑器中的游标控制

在可编辑元素(contentEditable)中控制游标:

const editor = document.getElementById('editor');
const range = document.createRange();
const node = editor.firstChild;
range.setStart(node, 5);
range.setEnd(node, 5);

const sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);

游标位置恢复技巧

保存并恢复输入框的游标位置:

function saveCursorPosition(input) {
  return {
    start: input.selectionStart,
    end: input.selectionEnd,
    value: input.value
  };
}

function restoreCursorPosition(input, saved) {
  if (input.value === saved.value) {
    input.setSelectionRange(saved.start, saved.end);
  }
}

跨浏览器兼容方案

处理不同浏览器间的游标API差异:

function getCursorPosition(input) {
  if ('selectionStart' in input) {
    return input.selectionStart;
  } else if (document.selection) {
    input.focus();
    const sel = document.selection.createRange();
    sel.moveStart('character', -input.value.length);
    return sel.text.length;
  }
  return 0;
}

虚拟游标实现

在Canvas等非DOM环境中实现虚拟游标:

js实现游标

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
let cursorPos = { x: 0, y: 0 };

function drawCursor() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.fillStyle = 'black';
  ctx.fillRect(cursorPos.x, cursorPos.y, 2, 20);
  requestAnimationFrame(drawCursor);
}
drawCursor();

这些方法涵盖了JavaScript中游标操作的主要场景,包括输入框游标控制、鼠标位置跟踪、自定义样式以及复杂环境下的游标实现。根据具体需求选择合适的方法即可。

标签: 游标js
分享给朋友:

相关文章

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…