Назначить цвет курсору мыши с помощью CSS

Как назначить цвет курсору мыши на веб-странице?

Может ли кто-нибудь предложить мне способ сделать это, используя любую из технологий, например. HTML, CSS, JavaScript?

Ответы

Ответ 1

Использовать изображение вместе с свойством CSS cursor, я не вижу необходимости в JavaScript...

Демо

div {
   cursor: url(YOUR_IMAGE_URL), auto;
}

Как я уже говорил, я использовал auto, который не что иное, как default cursor, просто заставляет ваше изображение не загружаться, точно так же, как мы объявляем несколько семейств шрифтов.

Ответ 2

Просто добавьте возможность динамически добавлять курсор, не предоставляя изображение, но генерируя его на клиенте с помощью JavaScript и Canvas.

Демо содержит простой курсор, нарисованный с помощью фигур, но это может быть так же легко, как изображения, видео и т.д. (все, что поддерживает холст).

Fiddle (обновлено 5/2016 для Firefox - перемещено из документа в элемент).

Примечание. У FireFox есть проблема, когда курсор изменяется так часто, как в этой демонстрации - обновляется, чтобы меняться только один раз в секунду. FF очищает курсор при установке нового изображения, но поскольку новое изображение необходимо декодировать, оно показывает значение по умолчанию в среднем времени. Chrome ждет, пока изображение не будет декодировано до переключения.

В любом случае просто показать, что это можно сделать, используя демонстрацию canvas-test с помощью Chrome и не меняйте так часто: -).

Цикл анимации, который здесь изменяет цвет случайным образом, чтобы продемонстрировать:

function loop() {

    var color = 'rgb(' + ((255 * Math.random())|0) + ','
                       + ((255 * Math.random())|0) + ','
                       + ((255 * Math.random())|0) + ')';
    makeCursor(color);

    setTimeout(loop, 1000);
}

Создатель курсора:

function makeCursor(color) {

    // create off-screen canvas
    var cursor = document.createElement('canvas'),
        ctx = cursor.getContext('2d');

    cursor.width = 16;
    cursor.height = 16;

    // draw some shape for sake of demo
    ctx.strokeStyle = color;

    ctx.lineWidth = 2;
    ctx.moveTo(2, 10);
    ctx.lineTo(2, 2);
    ctx.lineTo(10, 2);
    ctx.moveTo(2, 2);
    ctx.lineTo(30, 30)    
    ctx.stroke();

    // set image as cursor (modern browsers can take PNGs as cursor).
    element.style.cursor = 'url(' + cursor.toDataURL() + '), auto';
}

Ответ 4

Я использовал свой собственный курсор до сегодняшнего дня. Синяя версия стандартной стрелки. PNG файл с альфа-прозрачной тенью. Я люблю это. Но теперь я обновился до 4K, и PNG логически не будет масштабироваться, поэтому он выглядит крошечным. Любое решение для этого? Пока я использую перекрестие, потому что я не могу выдержать этот ручной курсор.

Если бы это: cursor: url (img/pointer_blue.png), auto;

Теперь это: cursor: crosshair;