Как можно отключить или запретить выделение изображения?

В версии для ПК всё функционирует корректно, однако в мобильной версии при нажатии на грядку она выделяется. <br/><br/> В качестве альтернативы можно проверить, в какую область пользователь нажал, и создать невидимый элемент поверх изображения. Какие еще варианты решения этой проблемы могут быть предложены? <br/><br/> <pre><code class="html">&lt;!DOCTYPE html&gt;
&lt;html lang="ru"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;link href="https://fonts.googleapis.com/css?family=Open+Sans&amp;display=swap" rel="stylesheet"&gt;
    &lt;title&gt;Мой Кликер&lt;/title&gt;
    &lt;style&gt;
        /* Общие стили */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Open Sans', sans-serif;
            font-weight: bold;
        }

        body {
            font-family: Arial, sans-serif;
            background-color: #1A1A1D;
            color: #ffffff;
        }

        /* Верхняя панель */
        .top-panel {
            display: flex;
            justify-content: space-between; 
            align-items: center;
            padding: 10px 20px;
            background-color: transparent; 
        }

        /* Блок для бонуса */
        .bonus-block {
            display: flex;
            align-items: center;
            padding: 5px 10px; 
            flex-direction: column; /* Разделение на две строки */
        }

        /* Блок для прибыли и настроек */
        .settings-block { 
            display: flex;
            align-items: center;
            background-color: #383838;
            padding: 10px 15px; 
            border-radius: 24px; 
            font-siz
  • 10 сентября 2024 г. 8:23
Ответы на вопрос 2
Для того чтобы отключить выделение изображений на мобильных устройствах, можно использовать CSS. Однако, также можно использовать JavaScript для более точного контроля. Я расскажу о обоих подходах.

### 1. CSS

Можно использовать CSS-свойства `user-select` и `-webkit-user-drag`, чтобы отключить выделение текста и перетаскивание изображений. Добавьте следующие стили в свой CSS:

```css
img {
    user-select: none;  /* Отключить выделение текста/изображений */
    -webkit-user-drag: none; /* Отключить перетаскивание изображений на WebKit */
}
```

### 2. JavaScript

Если вы хотите использовать JavaScript, вы можете перехватить события касания на изображениях или элементах и предотвратить поведение по умолчанию:

```javascript
document.querySelectorAll('img').forEach(img => {
    img.addEventListener('touchstart', function(e) {
        e.preventDefault(); // Отключает выделение изображения
    });
});
```

### 3. Невидимый элемент

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

```html
<div class="image-container" style="position: relative;">
    <img src="your-image.jpg" alt="Your image" style="display: block;">
    <div class="overlay" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: transparent;"></div>
</div>
```

И в CSS:

```css
.overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: transparent; /* Сделать его невидимым */
}
```

### Заключение

Сочетание этих подходов должно помочь решить проблему выделения изображения на мобильных устройствах. Обычно простого добавления CSS-свойств достаточно, но если проблема все еще возникает, можно использовать JavaScript для предотвращения поведения по умолчанию.
Если картинка вообще не должна реагировать на указатель, то явно напишите это 

.your-image {
  pointer-events: none;
}


Или запретить выделение

.your-image {
  user-select: none;
}


Или вообще полностью запретить выделение на странице

body {
  user-select: none;
}
Похожие вопросы