Подтвердить что ты не робот

Использование свойства css transform в jQuery

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

Вот код, который я использую для Firefox, но я даже не могу заставить его работать. Я думаю, это потому, что нет способа сказать, какая трансформация – масштаб, поворот, перекос – для использования.

$(".oSlider-rotate").slider({
     min: 10,
     max: 74,
     step: .01,
     value: 24,
     slide: function(e,ui){
                 $('.user-text').css('transform', ui.value)

            }                
  });
4b9b3361

Ответ 1

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

$('.user-text').css('transform', 'scale(' + ui.value + ')');

Во-вторых, поддержка браузеров улучшается, но вам, вероятно, все равно придется использовать префиксы поставщиков следующим образом:

$('.user-text').css({
  '-webkit-transform' : 'scale(' + ui.value + ')',
  '-moz-transform'    : 'scale(' + ui.value + ')',
  '-ms-transform'     : 'scale(' + ui.value + ')',
  '-o-transform'      : 'scale(' + ui.value + ')',
  'transform'         : 'scale(' + ui.value + ')'
});

jsFiddle с примером: http://jsfiddle.net/jehka/230/

Ответ 2

Настройка префикса -vendor, который не поддерживается в старых браузерах, может вызвать их исключение с помощью .css. Вместо этого сначала определите поддерживаемый префикс:

// Start with a fall back
var newCss = { 'zoom' : ui.value };

// Replace with transform, if supported
if('WebkitTransform' in document.body.style) 
{
    newCss = { '-webkit-transform': 'scale(' + ui.value + ')'};
}
// repeat for supported browsers
else if('transform' in document.body.style) 
{
    newCss = { 'transform': 'scale(' + ui.value + ')'};
}

// Set the CSS
$('.user-text').css(newCss)

Это работает в старых браузерах. Я сделал scale здесь, но вы могли бы заменить его любым другим преобразованием, которое вы хотели.

Ответ 3

Если вы используете jquery, jquery.transit - это очень простая и мощная библиотека, которая позволяет вам делать свою трансформацию при работе с кросс-браузером для вас. Это может быть так просто: $("#element").transition({x:'90px'}).

Возьмите его по этой ссылке: http://ricostacruz.com/jquery.transit/

Ответ 4

Я начал использовать "prefix-free" Script, доступный в http://leaverou.github.io/prefixfree, поэтому мне не нужно заботиться о префиксы поставщиков. Он аккуратно выполняет настройку правильного префикса поставщика за кулисами для вас. Кроме того, доступен плагин jQuery, поэтому можно использовать метод jQuery.css() без изменений кода, поэтому предлагаемая строка в сочетании с префиксом-свободным будет все, что вам нужно:

$('.user-text').css('transform', 'scale(' + ui.value + ')');

Ответ 5

$(".oSlider-rotate").slider({
     min: 10,
     max: 74,
     step: .01,
     value: 24,
     slide: function(e,ui){
                 $('.user-text').css('transform', 'scale(' + ui.value + ')')

            }                
  });

Это решит проблему