Обновление CSS через простой JavaScript... как обновить, если свойство использует префиксы поставщика?

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

div {
     cursor: -moz-grabbing;
     cursor: -webkit-grabbing;
     cursor: grabbing;
    }

но, скажем, я хочу реализовать это через JavaScript, но все еще могу охватить все три, как мне это сделать? Я просто назначаю их в трех строках - является ли JavaScript резервным для предыдущего назначения?

document.getElementById('theDiv').style.cursor = '-webkit-grabbing';
document.getElementById('theDiv').style.cursor = '-moz-grabbing';
document.getElementById('theDiv').style.cursor = 'grabbing';

3 ответов


1) Вы можете добавить класс для этой цели, который присваивает все свойства.

2) Если вы попробуете это по-своему, Javascript переназначит свойство 3 раза и в конечном итоге последний будет выполнен как активный, поэтому

    document.getElementById('theDiv').style.cursor = '-webkit-grabbing';
    document.getElementById('theDiv').style.cursor = '-moz-grabbing';
    document.getElementById('theDiv').style.cursor = 'grabbing';

не будет работать.

3) Добавление класса сделает это. например:

    css:-
    .myClass {
      cursor: -moz-grabbing; 
      cursor: -webkit-grabbing; 
      cursor: grabbing; 
     }

и

   js:-

   document.getElementById('theDiv').className += 'myClass';

нет, Javascript переназначит свойство 3 раза и в конечном итоге последний будет выполнен как активный.

вы хотите определить, какой браузер вы используете с javascript, а затем применить соответствующий.

в конце дня ваш JS выполняется на конкретной машине пользователя с определенным браузером, поэтому, обнаружив браузер и применив соответствующий стиль для этого браузера, вы решаете свою проблему.

Pesudo Код:

if(isMozilla) {
    document.getElementById('theDiv').style.cursor = '-moz-grabbing';
}
else if(isChrome OR isSafari) {
    document.getElementById('theDiv').style.cursor = '-webkit-grabbing';
}
else {
    document.getElementById('theDiv').style.cursor = 'grabbing';
}

вероятно, хорошо знать в этом отношении: Если вы пытаетесь установить недопустимое значение, браузер проигнорирует его. Так что как это работает:

function setStyle(element, property, value) {
    var prefix = ['', '-webkit-', '-moz-'];
    var i = 0;
    var style = element.style;
    do {
        style[property] = prefix[i] + value;
        i += 1;
    }
    while(style[property] !== prefix[i] + value && i < prefix.length);
}