JS властивість CSSStyleDeclaration.userSelect


Загальний опис

element.style.userSelect - це властивість CSS, яку можна використовувати через JavaScript для контролю можливості користувача виділяти текст всередині HTML-елемента. Властивість userSelect дозволяє запобігати або дозволяти виділення тексту, що може бути корисним для різних випадків використання, таких як запобігання копіюванню контенту або покращення взаємодії з користувачем на веб-сторінках.

Значення цієї властивості можуть бути наступними: none, auto, text, all, contain. Значення none забороняє будь-яке виділення тексту всередині елемента. Значення auto дозволяє браузеру визначати, чи можна виділяти текст. Значення text дозволяє виділення лише тексту. Значення all дозволяє виділення всього вмісту елемента одним клацанням. Значення contain обмежує виділення лише межами елемента.

Розглянемо декілька прикладів використання властивості userSelect через JavaScript.

Приклад 1: Запобігання виділенню тексту у певному елементі. Це може бути корисним, коли ви хочете запобігти копіюванню контенту або перешкодити випадковому виділенню тексту під час інтерактивної взаємодії з елементом.

var element = document.getElementById('noSelectElement');
element.style.userSelect = 'none';

У цьому прикладі текст всередині елемента з id noSelectElement не може бути виділений користувачем.

Приклад 2: Дозволити виділення всього вмісту елемента одним клацанням. Це може бути корисним для елементів, які містять важливу інформацію, яку користувачам може знадобитися скопіювати.

var element = document.getElementById('selectAllElement');
element.style.userSelect = 'all';

У цьому прикладі весь вміст елемента з id selectAllElement може бути виділений одним клацанням миші.

Приклад 3: Обмеження виділення тексту лише межами елемента. Це може бути корисним для елементів, які містять текст, що не повинен впливати на навколишній текст при виділенні.

var element = document.getElementById('containSelectElement');
element.style.userSelect = 'contain';

У цьому прикладі текст всередині елемента з id containSelectElement може бути виділений, але виділення обмежено межами цього елемента.

Використання властивості userSelect допомагає краще контролювати взаємодію користувачів з текстом на веб-сторінці, дозволяючи або забороняючи виділення вмісту залежно від потреб вашого додатку. Це особливо важливо для покращення користувацького досвіду та захисту контенту від небажаного копіювання.

автор: Bond

Порада

Якщо у вас є складені елементи, що містять вкладені елементи з різними потребами у виділенні тексту, використовуйте userSelect на кожному вкладеному елементі окремо. Це дозволить точно контролювати, де можна виділяти текст, а де це заборонено, що може бути важливо для складних інтерфейсів користувача.

автор: Bond
Порада

Якщо у вас є специфічні елементи, такі як кнопки або інші інтерактивні елементи, де виділення тексту небажане, використовуйте userSelect разом з подіями миші для покращення взаємодії користувача. Це дозволить уникнути випадкового виділення тексту під час натискання кнопок і покращить користувацький досвід.

автор: Bond
Порада

Для забезпечення кращої доступності вашого веб-сайту, переконайтеся, що ви не випадково забороняєте виділення тексту в областях, де користувачі можуть хотіти копіювати інформацію. Важливо балансувати між захистом контенту і забезпеченням зручності для користувачів.

автор: Bond

Синтаксис

element.style.userSelect

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
54 69 3* 41 79 10*
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
54 54 79 3*

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі запобігається виділення тексту на всій сторінці під час перетягування елемента. Це особливо корисно для інтерактивних веб-додатків або ігор, де перетягування елементів може призвести до випадкового виділення тексту, що заважає взаємодії користувача.

HTML

<div id="draggable">Демонстраційний елемент</div>

JS

var draggableElement = document.getElementById('draggable');
var body = document.body;

// Запобігання виділенню тексту під час перетягування
draggableElement.addEventListener('mousedown', function() {
  body.style.userSelect = 'none';
});

draggableElement.addEventListener('mouseup', function() {
  body.style.userSelect = 'auto';
});
автор: Bond

Цей приклад демонструє, як можна динамічно дозволяти або забороняти виділення тексту в елементі при натисканні кнопки. Це корисно для випадків, коли потрібно надати користувачам можливість копіювати текст тільки за певних умов або в певний час, наприклад, для захисту конфіденційної інформації.

HTML

<div id="selectableText">Демонстраційний елемент</div>
<select id="toggleSelectButton">
    <option value="1">перший</option>
    <option value="2">другий</option>
</select>

JS

var textElement = document.getElementById('selectableText');
var toggleButton = document.getElementById('toggleSelectButton');

toggleButton.addEventListener('click', function() {
  if (textElement.style.userSelect === 'none') {
    textElement.style.userSelect = 'text';
    toggleButton.textContent = 'Заборонити виділення';
  } else {
    textElement.style.userSelect = 'none';
    toggleButton.textContent = 'Дозволити виділення';
  }
});
автор: Bond

Цей приклад дозволяє користувачам взаємодіяти з елементом тексту, змінюючи можливість виділення тексту за допомогою кнопки. Спочатку текст не можна виділяти, але після натискання кнопки виділення стає можливим, і навпаки. Це надає корисний інтерфейс для демонстрації того, як можна контролювати виділення тексту на веб-сторінці.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід