Предотвращение использования jQuery Scientific Notation в $ .Animate ()? - PullRequest
0 голосов
/ 22 декабря 2018

Как я могу запретить jQuery использовать научную запись - 1.2e + 07 вместо 12 000 000 в функции jQuery.animate ()?

Использование: $('body').css({ backgroundPositionX: 12000000 + 'px' });


Преобразование в: background-position-x: 1.2e+07px;

Желаемые результаты: background-position-x: 12000000px;

enter image description here

Это начинается, как только число достигает 1 миллиона (1 000 000):

enter image description here

Это, в свою очередь, заставляет мое приложение вести себя странно.Я хочу чистые, простые целые числа - ничего из этой научной чепухи!Я посмотрел вокруг, но я не могу найти ничего, связанного с библиотекой jQuery.Только чистые функции JS.

Примечание 1: Это не только анимация, но и $ .css ().Я предполагаю, что другие функции jQuery также похожи.

Примечание 2: Я не думаю, что это делает браузер, потому что если я ввожу значение вручную, оно будет работать нормально, пока вы не наберете обычное максимальное 32-битное целое число


Почему это проблема:

12000321 преобразуется в: 1.20003e + 07

Когда я затем преобразовываю 1.20003e + 07 обратно в целое число, я получаю: 12000300

Когда вы переходите в Scientific Notation, размер шага находится в100 с, а не 1 с и недостаточно конкретны.


Спасибо, что рассмотрели мой вопрос

1 Ответ

0 голосов
/ 22 декабря 2018

Ничего себе ... это заняло у меня много времени, но мне наконец удалось найти способ сделать это.

После многих испытаний я заметил, что передача прямой строки в $ .attr () непреобразуйте числа в научную нотацию.

Я создал собственную анимацию и вручную установил атрибут стиля в виде строки.

Кажется, что работает и поднимается в одной цифре, а не в 100 с !!1007 *

enter image description here

$({
    x: this.x,
    y: this.y
}).animate({
    x: x,
    y: y
}, {
    easing: this.motion_type,
    duration: this.duration,
    step: function(now, fx) {

        var current_styles = $('.area').attr('style'),
            current_styles = string = current_styles.split(" ");

        var x = parseFloat(current_styles[1].replace('px', '').replace(';', ''));
        var y = parseFloat(current_styles[2].replace('px', '').replace(';', ''));

        if ('x' === fx.prop) {
            x = now;
        } else if ('y' === fx.prop) {
            y = now;
        }

        $('.area').attr({ style: 'background-position: ' + x + 'px ' + y + 'px;' });

    },
    complete: function() {
        t.stopNow();
    }
});
...