User select none что это

Выделение и CSS

Навык выделения текста и других объектов сформировался у пользователей компьютеров много лет назад. Мы выделяем содержимое веб-страниц по разным причинам. Возможно, нужно скопировать текст и где-то его процитировать, возможно — кому-то просто легче читать текст, выделяя его фрагменты. На мобильных устройствах, правда, выделять что-либо сложнее. Меня, например, это раздражает. Мне не нравится выделять содержимое веб-страниц на телефоне. Эта операция кажется какой-то «неправильной».

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Основы

На MDN можно узнать о том, что псевдоэлемент ::selection позволяет применить стили к части документа, который был выделен пользователем (например, с помощью мыши).

Для использования ::selection достаточно воспользоваться следующей конструкцией:

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Вот пример, с которым можно поэкспериментировать.

Свойства, поддерживаемые ::selection

Настройка собственных эффектов выделения

Что если нам нужно, чтобы выделение выглядело бы по-особенному? Например, чтобы выделение имело бы определённую высоту или некий интересный фон? Взгляните на следующий рисунок.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Пример особой настройки выделения

Это возможно, хотя и потребует приложения некоторых усилий. Вот как сделано выделение, показанное выше:

Об этой методике я узнал здесь.

На следующем рисунке показано разъяснение этой методики.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Реализация градиентного выделения

Надеюсь, я смог понятно объяснить эту идею. Вот рабочий пример.

Анимирование выделения

Работая над предыдущим примером, я задался следующим вопросом: «Реально ли анимировать выделение?». Например, в процессе выделения текста высота выделения составляет 50%. А когда указатель мыши уводят в сторону, высота выделения увеличивается до 80%. Как это сделать? А вот так:

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Текст в процессе выделения

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Текст после завершения выделения

Вот видео, в котором демонстрируется анимированное выделение.

Многострочный текст

После этого элементы надо стилизовать. Затем к каждому из них надо добавить псевдоэлемент:

Если посмотреть на эту конструкцию в деле, то окажется, что она работает, но не совсем так, как можно ожидать. Ниже показан пример выделения многострочного текста. Можно заметить, что выделение выглядит неоднородным.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

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

Тут с таким выделением можно поэкспериментировать.

Креативный подход к использованию ::selection и text-shadow

▍Выделение с длинными тенями

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Выделенный текст отбрасывает длинные тени

Вот как реализовать этот эффект:

▍Эффект контурного текста

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Выделенный текст становится контурным

Эту идею я нашёл в данной статье. Речь идёт о том, что с помощью свойства text-shadow можно сымитировать эффект контурного текста.

▍Эффект размытия

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Выделенный текст выглядит размытым

Уверен, что вы сами сможете придумать ещё очень много примеров применения text-shadow для стилизации выделений. Это свойство даёт нам безграничные возможности.

▍Тени текстов и производительность

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Использование очень сложных стилей при настройке выделения текста

Представленный здесь неоновый эффект очень сложен. Обратите внимание на то, что при выделении этого текста заметна задержка между моментом выделения текста и моментом применения стилизации. Кроме того, обратите внимание на то, что сверху и слева появляется то, что появляться не должно. Поэтому прошу вас использовать text-shadow осмотрительно.

Выделяются ли элементы форм?

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

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Содержимое внутри полей ввода выделяется

Исследование свойства user-select

Сценарии использования user-select

▍Текст и иконка

Если в элементе есть текст и иконка — в виде символа или значка, взятого из какого-нибудь шрифта, то при выделении текста будет выделяться и эта иконка. Рассмотрим пример, представленный на следующем рисунке.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Кнопка с текстом и иконкой

Вот код этой кнопки:

При выделении этого элемента он выглядит так, как показано ниже.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

▍Флажки

Меня раздражает такое поведение флажков, когда, устанавливая или снимая флажок, я случайно выделяю текст его описания. Вот как это выглядит.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Текст описания флажка выделен случайно

Решить эту проблему можно, стилизовав элемент следующим образом:

▍Выделение всего текста

Фрагмент текста, оформленный таким стилем, можно выделить одним щелчком мыши по нему.

Веб-приложения

Веб-приложение должно восприниматься пользователем как настоящее приложение. Можно ли выделять текст кнопок в обычных приложениях? Нет, нельзя. Важно, чтобы веб-приложения отражали привычные черты обычных приложений, делая это даже с учётом того, что они созданы с использованием HTML и CSS.

Рассмотрим несколько примеров из жизни.

▍Slack

В Slack можно выделять метки и поля ввода. Однако тексты кнопок не выделяются.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Подписи кнопок не выделяются

Вот ещё один пример.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Подпись в заголовке модального окна выделяется

А дату чата выделить нельзя.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Дату выделить нельзя

▍Notion

Подход к выделению элементов, реализованный в Notion, мне нравится больше. Это веб-приложение больше похоже на реальное приложение, а не на веб-сайт, любую часть интерфейса которого можно выделить.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

То, что не должно выделяться, не выделяется

Ни один фрагмент текста с этого рисунка не выделяется. Это — именно то, чего можно ожидать от приложения.

Не используйте глобальное отключение выделения

Не рекомендуется отключать выделение глобально. Когда вы пользуетесь отключением выделения — постарайтесь, чтобы оно отключалось бы лишь у элементов, для которых оно не имеет смысла. Для этого можно создать вспомогательный класс. Например — такой:

Нехороший паттерн

Есть один UX-паттерн, который мне крайне не нравится. Он заключается в показе предупреждения при попытке выделения текста. Это раздражает и создаёт у пользователя такое ощущение, будто его взаимодействием с сайтом пытаются управлять. Пример этого паттерна показан ниже.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Запрет выделения с показом уведомления

Пожалуйста, не делайте так.

Выделение на мобильных устройствах

Стили ::selection тоже не работают.

А свойство user-select: none работает так, как ожидается.

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что это

Вместе с полезным текстом скопировано и (listen)

Итоги

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

Уважаемые читатели! Как вы настраиваете выделение текстов в своих проектах?

Источник

Если вы знаете о том, что WebKit умеет изменять вид тэга SPAN на кнопку, или на поле ввода, или если вы знаете каким свойством можно диктовать поведение элемента в момент тапа по нему, то вам не сюда.

И так, есть несколько очень интересных свойств, которые присущи движкам WebKit. Например, есть свойство

-webkit-touch-callout

Это свойство позволяет вам диктовать поведение браузера в момент тапа и удержания пальца на ссылке. По умолчанию в браузерах всплывает окно, содержащее информацию о ссылке. По умолчанию у этого свойства выставлено значение default, но установив значение none окошко с информацией всплывать не будет.

Это свойство полезно применять в тех случаях когда на ссылку повешен какой-либо JavaScript/AJAX.

-webkit-user-drag

Свойство указывает на то, что во время перетаскивания блока двигаться должен именно блок, а не содержимое внутри него.

-webkit-appearance

Задавая это свойство элементу вы можете определять то, как будет выглядеть элемент SPAN. Например, как radio button:

Всего таких значений около 50. Весь список можно посмотреть тут.

-webkit-text-security

Оказывается, маску при вводе пароля можно изменять. Например, вместо кружков можно отображать квадраты.

-webkit-user-select

Определяет что пользователь может выбирать внутри элемента.

На этом все. Это был вольный перевод данной статьи.

UPD. Уточнение по свойству -webkit-touch-callout.

Источник

Как запретить копирование с сайта с помощью CSS

Ранее были рассмотрены два варианта того, как запретить копирование контекста с сайта: с помощью JavaScript (легко обходится отключением JS в браузере) и с помощью прозрачного блока CSS на весь экран, который перекрывает доступ до элементов страницы (легко обходится, удалением этого элемента со страницы с помощью инструментов разработчика браузера). В этой статье расскажу про ещё один способ того, как усложнить жизнь тем, кто ворует чужой контент с помощью CSS свойства user-select и на этом пожалуй остановлюсь. Нет идеальной защиты. На крайней случай, можно всегда нанять секретаршу, которая всё перепечатает (если конечно нет нормального сисадмина, разбирающегося в том, как работают сайты, в штате).

CSS свойство user-select что оно умеет и для чего предназначено

CSS свойство user-select управляет поведением выделения текста и других элементов на странице, в частности, позволяет запретить выделение текста. Нормальным применением этого свойства будет запретить выделение текста на тех элементах страницы, которые служат указателями, например, в панели вкладок на странице с аккордеоном. Этого же можно добиться, заменив текст картинками, но зачем усложнять и утяжелять страницу? CSS свойство user-select не влияет на поведение поисковых роботов, поэтому его также применяют на сайтах для обеспечения защиты текста от копирования.

Сделать это можно так:

Как обойти блокировку копирования CSS свойством user-select

Как разрешить копировать лишь часть контента

Для того, чтобы можно было хоть что-то скопировать, можно задать дополнительный CSS-класс, в котором отключить запрет на выделение:

Тогда, можно управлять тем, что поддаётся выделению (и копированию) и тем, что стандартными средствами выделить в браузере не получится (даже при отключенном в браузере JavaScript). Например,

Выводы

Таким образом с помощью CSS свойства user-select можно дополнительно усложнить жизнь тем, кто ворует контент и защитить сайт от копирования текста, но решения о том, как развидеть то, что уже показано на мониторе пользователя просто не существует. Если показали, — значит дали шанс использовать. А уж как поведёт себя пользователь с полученной информацией, предсказать невозможно.

Источник

CSS свойство user-select

User select none что это. Смотреть фото User select none что это. Смотреть картинку User select none что это. Картинка про User select none что это. Фото User select none что этоНедавно обратил внимание на одно интересное свойство в CSS, которое позволяет исключить выделение текста на элементах страницы. Опишу ситуацию, проблема была с блоком, который имел скроллинг рабочей области. Рабочая область содержала текст и другие элементы. При скроллинге иногда возникала неприятная вещь: некоторые элементы блока а так же текст в нём произвольно выделялись, что в действительности выглядело не очень. В итоге был поиск, и нашлось решение, оно пожалуй, было одним из простых — это воспользоваться свойством user-select в CSS. После этого всё что находится в блоке просто перестанет выделяться курсором мыши, это в принципе и было нужно.

Пример CSS:

Стоит понимать, что данное свойство может не работать в некоторых браузерах, особенно, что касается старых IE. Официально оно пока не поддерживается, однако многие полезные свойства, которые уже сегодня расписаны в стандарты, начинали своё существование подобным образом. Во всяком случае, я воспользовался CSS-свойством user-select.

Браузеры которые поддерживают:

ChromeSafariFirefoxOperaIEAndroidiOS
всевсевсе27+10+4.1+7.1+

Теперь что касается всеми любимого IE, то здесь немного всё иначе, делается таким образом в коде html:

Посредством специального атрибута onselectstart, запрещаем выделение текста элемента. Для запрета выделения текста ключевым стало свойство user-select, данное свойство не кроссбраузерно, однако в каждом браузере есть своя реализация, которая работает. Собрав всё в кучу, мы получили запись, указанную выше.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *