2017-01-06 7 views
0

У меня есть сценарий, где мне нужно назначать значения для style.left, но все borwsers преобразуют целые числа в обозначения экспонентов, если они превосходят 1e + 06 для браузера webkit и превосходят 1e + 07 для других. Любая экспоненциальная нотация не отображается в атрибуте стиля (например, для левого, правого, для перевода и т. Д.).Javascript - предотвращение экспоненциальной нотации в стиле

Например, если я назначу на DIV этот стиль вручную:

div.style.left = 1000000+'px'; 
// or 
div.style.left = '1000000px'; 

Оба возвращаются в браузере (Google Chrome, например)

<div style="left: 1e+06px;"></div> 

И эта запись не работает, чтобы сделать свойство стиля. Весьма странно, что все браузеры конвертируют целое число, превосходящее 1 000 000 (или 10 000 000) в экспоненциальную нотацию в атрибуте стиля, который не поддерживает экспоненциальную нотацию ... Я попытался использовать .toPrecision() .toFixed(), и т. д., но все браузеры обрабатывают значение css после назначения значения.

Есть ли способ предотвратить такое поведение?

+0

Почему вы используете такое большое количество? Нет изображений с миллионом пикселей. – Barmar

+0

На экране UHD и с карусели можно легко достичь 1000000px (100-200 слайдов). Или это то же самое с небольшими номерами .... – freaky

ответ

0

Любопытно, почему вы должны использовать такие огромные цифры, но это работает, как предполагалось

div.setAttribute('style', 'left: 1000000px') 
+1

Это удалит любые другие стили, которые имеет элемент. – Barmar

+0

Здравствуйте, спасибо за ваш ответ. Он правильно форматирует стиль, но по-прежнему прерывает все браузеры после определенного значения. На дисплеях UHD и с карусели, например, 100-150 слайдов, можно легко добраться. есть много примеров, когда этот вид ценности может быть достигнут (особенно с небольшим числом). Таким образом, кажется, что все браузеры перестают отображаться под и до определенного значения ... независимо от формата нотации ... – freaky

+0

В этом случае вы должны изменить свой макет. Расположите внутренний 'div' относительно в множестве широких внешних div. Или лучшим решением может быть удаление элемента из DOM полностью после того, как он достигнет определенного расстояния и сохранит его в памяти. Трудно представить, сколько памяти будет потреблено, если на странице будет отображаться 100 полноэкранных слайдов. – bobo

 Смежные вопросы

  • Нет связанных вопросов^_^