2017-01-06 2 views
0

Ich habe ein Skript, wo ich Werte für style.left zuweisen müssen, aber alle borwsers konvertieren Ganzzahlen in Exponentialschreibweise, wenn besser als 1e + 06 für Webkit-Browser und besser als 1e + 07 für andere. Jede exponentielle Notation wird nicht in einem Stilattribut dargestellt (wie für links, rechts, translate, etc ...).Javascript - Exonotial Notation in Stil zu verhindern

Zum Beispiel, wenn ich zu einem div zuweisen diese Art manuell:

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

Beide Rückkehr im Browser (Google Chrome zum Beispiel)

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

Und diese Notation nicht funktioniert zu machen eine Stileigenschaft Es ist ziemlich seltsam, dass alle Browser eine Ganzzahl, die höher als 1 000 000 (oder 10 000 000) ist, in Exponentialschreibweise in ein Stilattribut umwandeln, das keine Exponentialschreibweise unterstützt ... Ich habe versucht, .toPrecision() .toFixed() zu verwenden. etc ... aber alle Browser behandeln css-Wert, nachdem der Wert zugewiesen wurde.

Gibt es eine Möglichkeit, dieses Verhalten zu verhindern?

+0

Warum sind Sie so eine große Zahl mit? Es gibt keine Displays mit einer Million Pixel. – Barmar

+0

Auf UHD-Bildschirm und mit einem Karussell kann 1000000px leicht erreicht werden (100-200 Objektträger). Oder das gleiche mit kleinen Zahlen .... – freaky

Antwort

0

Neugierig, warum haben Sie eine so große Zahlen zu verwenden, aber das funktioniert wie beabsichtigt

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

Dies wird alle anderen Stile entfernen, die das Element hat. – Barmar

+0

Hallo, danke für deine Antwort. Es formatiert den Stil korrekt, aber es bricht immer noch alle Browser nach einem bestimmten Wert. Auf UHD-Displays und mit einem Karussell von beispielsweise 100-150 Dias ist es leicht erreichbar. Es gibt viele Beispiele, wo diese Art von Wert erreicht werden kann (besonders bei kleinen Zahlen). So scheint es, dass alle Browser aufhören, unter und vor einem bestimmten Wert zu rendern ... was auch immer das Notationsformat ... – freaky

+0

In diesem Fall sollten Sie Ihr Layout ändern. Positionieren Sie das innere 'div' relativ in einem Satz breiter äußerer divs. Oder eine bessere Lösung könnte sein, das Element vollständig aus DOM zu entfernen, nachdem es eine bestimmte Entfernung erreicht hat, und es im Speicher zu speichern. Es ist schwer vorstellbar, wie viel Speicher verbraucht wird, wenn 100 Vollbild-Folien auf einer Seite aktiv bleiben. – bobo

Verwandte Themen