Предотвращение перетаскивания или выбора изображения без использования JS



кто-нибудь знает способ сделать изображение не перетаскиваемым и не выбираемым-в то же время-в Firefox, не прибегая к Javascript? Кажется тривиальным, но вот вопрос:



1) можно перетащить и выделить в Firefox:



<img src="...">


2) поэтому мы добавляем это, но изображение все еще может быть выделено при перетаскивании:



<img src="..." draggable="false">


3) поэтому мы добавляем это, чтобы исправить проблему выделения, но затем контринтуитивно, изображение становится перетаскиваемым снова. странно, я знаю! Использование FF 16.0.1



<img src="..." draggable="false" style="-moz-user-select: none;">


Итак, кто-нибудь знает, почему добавление "-moz-user-select: none", каким-то образом затмит и отключит "draggable=false"? Конечно, webkit работает так, как ожидалось. Ничего нет там на паутине о this...It было бы здорово, если бы мы могли пролить свет на это вместе.



спасибо!!



Edit:речь идет о сохранении элементов пользовательского интерфейса от непреднамеренного перетаскивания и улучшения юзабилити-не какая-то хромая попытка схемы защиты от копирования: -)

680   7  

7 ответов:

установите следующие свойства CSS для изображения:

user-drag: none; 
user-select: none;
-moz-user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;

Я забыл поделиться своим решением, я не мог найти способ сделать это без использования JS. Есть некоторые угловые случаи ,когда @ Jeffery a Wooden предложил CSS просто не будет покрывать.

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

.unselectable {
    /* For Opera and <= IE9, we need to add unselectable="on" attribute onto each element */
    /* Check this site for more details: http://help.dottoro.com/lhwdpnva.php */
    -moz-user-select: none; /* These user-select properties are inheritable, used to prevent text selection */
    -webkit-user-select: none;
    -ms-user-select: none; /* From IE10 only */
    user-select: none; /* Not valid CSS yet, as of July 2012 */

    -webkit-user-drag: none; /* Prevents dragging of images/divs etc */
    user-drag: none;
}

var makeUnselectable = function( $target ) {
    $target
        .addClass( 'unselectable' ) // All these attributes are inheritable
        .attr( 'unselectable', 'on' ) // For IE9 - This property is not inherited, needs to be placed onto everything
        .attr( 'draggable', 'false' ) // For moz and webkit, although Firefox 16 ignores this when -moz-user-select: none; is set, it's like these properties are mutually exclusive, seems to be a bug.
        .on( 'dragstart', function() { return false; } );  // Needed since Firefox 16 seems to ingore the 'draggable' attribute we just applied above when '-moz-user-select: none' is applied to the CSS 

    $target // Apply non-inheritable properties to the child elements
        .find( '*' )
        .attr( 'draggable', 'false' )
        .attr( 'unselectable', 'on' ); 
};

Это было намного сложнее, чем должно было быть.

можно использовать pointer-events свойство в вашем CSS, и установите его равным 'none'

img {
    pointer-events: none;
}

редактировать

это будет блокировать (нажмите) событие. Так что лучшим решением было бы

<img draggable="false" (dragstart)="false;" class="unselectable">

.unselectable {
  user-drag: none; 
  user-select: none;
  -moz-user-select: none;
  -webkit-user-drag: none;
  -webkit-user-select: none;
  -ms-user-select: none;
}

в зависимости от ситуации, часто бывает полезно сделать изображение фоновое изображение div С помощью CSS.

<div id='my-image'></div>

затем в CSS:

#my-image {
    background-image: url('/img/foo.png');
    width: ???px;
    height: ???px;
}

посмотреть этот JSFiddle для живого примера с кнопкой и другой опцией калибровки.

вы могли бы просто прибегнуть к

<img src="..." style="pointer-events: none;">

вы можете установить изображение в качестве фонового изображения. Так как он находится в div и div undraggable, изображение будет undraggable:

<div style="background-image: url("image.jpg");">
</div>

универсальное решение, особенно для браузера Windows Edge (как-ms-user-select: none; правило CSS не работает):

Comments

    Ничего не найдено.