Цвет курсора в поле input и кроссбраузерность

Однажды я верстал страницу, на которой присутствовало текстовое поле поисковой формы. Ее особенность состояла в том, что фон был темно-серого цвета (с текстом белого цвета), с чем я встретился впервые за всю свою практику.

И я с удивлением обнаружил, что в большинстве браузеров курсор, стоящий в таком поле, просто-напросто не видно из-за того, что цвет самого курсора совпадает с цветом поля.

Смотрите сами:

Несмотря на то, что тексту явно задан белый цвет, курсор данному параметру почему-то не поддается. Белый курсор виден только в 3-х браузерах: FireFox 3, Safari и Chrome (проверял также в IE6, IE7, IE8b2, FireFox 2, Opera 9.6).

В связи с этим хотелось бы узнать у спецов: существует ли способ кроссбраузерного изменения цвета курсора в текстовом поле?

Случай хоть и очень редкий по моей практике, но решение не было бы лишним, если, конечно, оно вообще существует.

Комментарии (28)

  1. Andy
    12 октября 2008 г. в 20:22

    Андрей с кроссом то похоже про одно и то же говорят. только не про то, что что Dimox. Ты ведь про текстовый курсор? А люди явно про мышиный.

  2. Imqer
    12 октября 2008 г. в 20:39

    По-моему через CSS так сделать нельзя. Но может поможет утилита Aml Maple? Лежит тут http://www.amlpages.com/Rus/download.htm#amlmaple. Меняет цвет текстового курсора в зависимости от языка, может показывать флаг в мышином курсоре и в текстовом. Все настраиваемо. Пишу кстати сейчас в Opera она прекрасно и в ней прямо в этом поле ввода все это дело отображает. У меня Опера и IE, в них она прекрасно работает. Судя по скриншотам на сайте и Firefox и этот пресловутый Chrome тоже поддерживаются. Может автор Aml Maple что-то может подсказать!?! Он же в браузерах как то меняет цвет того же самого курсора, как-то же он это вытворяет!?!

  3. DomiNatoR
    12 октября 2008 г. в 23:37

    Cross, а можно на аяксе сделать когда курсор входит в заданное поле – иконка курсора подгружается с другого файла?

  4. Andrey
    13 октября 2008 г. в 07:24

    Andy, да, ты прав. Я перепутал.. Спасибо, что уточнил :)
    тогда, действительно, решения лежащего не поверхности не видно.. (

  5. 13 октября 2008 г. в 10:55

    2Николай Громов (nicothin):

    собственно, если не грузить со страницей свой файл курсора – способов нет.

    Честно говоря, я даже не представляю, как это выглядит на практике =) Ни разу не сталкивался с применением курсоров через CSS.

    реальный выход из ситуации – менять фон поля при получении им фокуса.

    Да, судя по всему, это является самым разумным вариантом.

    2Andy:

    Андрей с кроссом то похоже про одно и то же говорят. только не про то, что что Dimox. Ты ведь про текстовый курсор? А люди явно про мышиный.

    Да, я говорю НЕ про мышиный курсор, а курсор который мигает в текстовом поле, когда в него тыкаешь курсором мыши.

    Imqer, это совсем не то, что нужно. В вашем примере другой цвет курсора видите только вы, лишь поставив программу. А нужно, чтобы цвет курсора был кроссбраузерным независимо от программного обеспечения посетителя.

  6. 13 октября 2008 г. в 12:55

    Ну а если сделать через Jquery просто через Append добавлять знак | или же смещать фоновую картинку курсора в зависимости от количества введенных символов…

  7. 13 октября 2008 г. в 15:21

    Attlant, по-моему, Jquery – это слишком. Лучше уж тогда просто сделать цвет фона более светлым.

  8. Вадим Шешунов
    13 октября 2008 г. в 18:07

    думаю, идея с “припечатыванием” дополнительного символа в конец строчки ввода вполне благоразумная – раз другого системного решения нет. Кстати, JQuery там особо и не нужен – все можно на стандартном ДжС написать. А если к этому делу привесить таймер, то можно и мигание воспроизвести.

  9. 13 октября 2008 г. в 18:57

    В принципе, согласен, стандартный JavaScript можно для этого использовать. Хотя, если к сайту уже будет прикручен jQuery, то можно данную вещицу сделать и его средствами.

  10. ATimofeev
    14 октября 2008 г. в 12:33

    А почему не подкладывать рисованый курсор как bacground-image для input. Ну и наверное сдвигать его яваскриптом при изменениии количества символов в поле. Хотя с отключенными картинками работать уже не будет.

  11. 14 октября 2008 г. в 12:59

    ATimofeev, видимо, использование JavaScript – самый подходящий вариант.

  12. 20 октября 2008 г. в 12:26

    Если мы загружаем изображение можно использовать data:URL, хотя я думаю он скорее всего не подойдет, вариант конечно не идеальный, IE будет как всегда лигаться и брыкаться, но и на него управа есть (подробнее об data:URL тут “webo.in”), если не поможет отпишитесь мне интересно :)

  13. 20 октября 2008 г. в 12:58

    AFenics, IE в пролете, поэтому вариант не подходящий. Проще сменить цвет фона на более светлый, чем ради этого для IE использовать костыль, предлагаемый на webo.in.

  14. mobile
    30 октября 2008 г. в 16:22

    а зачем задавать такой цвет контролов, чтобы не было видно курсора, а затем это проблему решать? с точки зрения юзабилити это зло, реально лучший способ – это подсветка контрола при наведении курсора.

  15. 30 октября 2008 г. в 18:38

    а зачем задавать такой цвет контролов, чтобы не было видно курсора, а затем это проблему решать?

    Такой вопрос лучше задавать либо заказчику дизайна, либо дизайнеру.

  16. Blaster
    4 ноября 2008 г. в 16:15

    Мгу предложить извращенный, но реальный способ.
    На JS написать скрипт, который бы “мигал” символом “|” в конце строчки… Естесственно, этот символ будет такой же как и текст.
    Других вариантов я не вижу.

  17. Семен
    12 декабря 2008 г. в 04:03

    Мда завал с этим IE, придется оставлять поля белыми.

  18. kanifas
    1 мая 2009 г. в 22:14

    Может быть нарисовать курсор и при собтии mousedown перехватить событие mousemove и позиционировать курсор в обработчике mousemove соответственно координатам, которые получить из объекта event – короче текущ. коорд. курсора. +- пикселы?

  19. katerinkadar
    3 февраля 2010 г. в 16:57

    Вся фигня именно в этом цвете. #818181;
    т.к. ie инвертирует курсор, а не берет его из стилией.
    Если взять похожий цвет, но чуть темнее. Курсор будет виден.
    не #818181; а хотябы #717171;

  20. Артём
    12 марта 2014 г. в 18:10

    Цвет курсора меняет свой цвет вместе с цветом шрифта иначе CSS не умеет

Ваш комментарий

Жирный текст

Ссылка

Цитата

Внутристрочный код

CSS-код

HTML-код

JavaScript-код

PHP-код