Тек­сто­вый кур­сор

Я уже пи­сал о том, что на все ак­тив­ные эле­мен­ты нуж­но ве­шать cur­sor:pointer. Если крат­ко, то сме­на кур­со­ра долж­на озна­чать, что с эле­мен­том под ним мож­но что-то сде­лать, а не то, что эле­мент под кур­со­ром несёт ка­кую-то се­ман­ти­ку (ска­жем, яв­ля­ет­ся ссыл­кой, а не кноп­кой).

Ос­нов­ная при­чи­на для это­го —еди­но­об­ра­зие. Поль­зо­ва­те­ли долж­ны знать, что если кур­сор —рука, зна­чит, мож­но на этот эле­мент на­жать, что­бы что-то про­изо­шло. А уж о том что имен­но про­изой­дёт дол­жен уже го­во­рить сам элемент.

И тут я на­ты­ка­юсь на та­кую вещь, как cur­sor:text. И вижу от­сут­ствие еди­но­об­разия.

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

За­чем ну­жен этот кур­сор-ка­рет­ка над тек­стом? Что­бы дать по­нять, что его мож­но вы­де­лить. Тон­кий кур­сор-ка­рет­ка об­лег­ча­ет эту за­да­чу: он по­чти неза­ме­тен меж­ду бук­ва­ми, с по­мо­щью него лег­ко вы­де­лять ров­но те бук­вы и сло­ва, что нужно.

Но как толь­ко мы смот­рим на неак­тив­ное поле вво­да, мы всё рав­но ви­дим там этот тек­сто­вый кур­сор (даже ко­гда поле пу­стое).

У меня воз­ник­ло несколь­ко во­про­сов: как ча­сто, ко­гда мы ви­дим фор­му, мы хо­тим что-то вы­де­лить в её тек­сто­вых по­лях? А как ча­сто мы хо­тим что-то там на­пи­сать, ак­ти­ви­ро­вав поле, то есть, пе­ре­ме­стив в него фо­кус? Яв­ля­ет­ся ли пе­ре­нос фо­ку­са дей­стви­ем? Не сто­ит ли, ради еди­но­об­ра­зия, де­лать для тек­сто­вых по­лей вво­да вот так?

in­put[type=text], in­put[type=pass­word], textarea {
    cur­sor: pointer;
}
in­put[type=text]:fo­cus, in­put[type=pass­word]:fo­cus, textarea:fo­cus {
    cur­sor: text;
}

По­нят­ное дело, что вме­сто in­put[type=text] бу­дет или класс, или пе­ре­чис­ле­ние всех воз­мож­ных тек­сто­вых по­лей.

Здесь cur­sor:pointer по­лу­чат толь­ко неак­тив­ные поля вво­да, но, как толь­ко где-то по­яв­ля­ет­ся фо­кус, эле­мент пе­ре­ста­ёт быть ак­ти­ви­ру­е­мым, и мы уже ожи­да­ем, что поль­зо­ва­те­ли мо­гут там вы­де­лять текст. Кро­ме того, тек­сто­вый кур­сор го­раз­до ме­нее за­ме­тен, чем рука: он тон­кий, и им слож­нее по­пасть по полю вво­да, ко­гда это нужно.

Ко­неч­но, это очень спор­ное ме­сто, по­доб­ное из­ме­не­ние ру­шит поль­зо­ва­тель­ские при­выч­ки, но не бу­дет ли по­доб­ное по­ве­де­ние, в ито­ге, луч­ше? Ведь так мы по­лу­чим до­ста­точ­но чёт­кую ло­ги­ку: если есть кур­сор-по­ин­тер, зна­чит, мы мо­жем что-то с этим эле­мен­том сде­лать; если есть кур­сор-текст —мы мо­жем в этом эле­мен­те вы­де­лить текст; если де­фолт­ный кур­сор —клик на это ме­сто ни­че­го не даст.

Это, в том чис­ле, ло­жит­ся и в кон­цеп­цию осталь­ных кур­со­ров, та­ких как re­size и drag —они го­во­рят имен­но о том, что мож­но сде­лать с эле­мен­том, а не о том, чем этот эле­мент яв­ля­ется.

Ко­неч­но же, я не ре­ко­мен­дую пря­мо сей­час идти и де­лать имен­но так, но если кто-то по­про­бу­ет про­ве­сти A/​​B-те­сти­ро­ва­ние и ска­зать, из­ме­нит­ся ли кли­ка­бель­ность/​​за­пол­ня­е­мость по­лей, —бу­дет кру­то. Лю­бые за­ме­ча­ния и мыс­ли по это­му по­во­ду я та­к­же при­вет­ствую —пи­шите!