2017-01-06 5 views
0

저는 style.left에 값을 할당해야하는 스크립트가 있습니다.하지만 모든 borwsers는 웹킷 브라우저의 경우 1e + 06보다 우수하고 다른 사람들의 경우 1e + 07보다 우수한 경우 지수를 표기법으로 변환합니다. 모든 지수 표기법은 스타일 속성에서 렌더링되지 않습니다 (예 : 왼쪽, 오른쪽, 번역 등).자바 스크립트 - 스타일의 지수 표기법을 방지합니다.

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

브라우저에서 모두 반환 (예를 들어, 구글 크롬)

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

그리고이 표기법을 렌더링하기 위해 작동하지 않습니다 내가 사업부에 수동으로이 스타일을 할당하는 경우 예를 들어

스타일 속성 모든 브라우저가 지수 표기법을 지원하지 않는 스타일 속성에서 지수 표기법으로 1 000 000 (또는 10,000 000) 이상의 정수를 변환하는 것은 이상합니다 ... .toPrecision() .toFixed()를 사용하려고했습니다. etc ...하지만 모든 브라우저는 값이 할당 된 후 CSS 값을 처리합니다.

이 동작을 방지하는 방법이 있습니까?

+0

의도? 백만 픽셀의 디스플레이가 없습니다. – Barmar

+0

UHD 화면과 캐 러셀이있는 경우 1000000px에 쉽게 도달 할 수 있습니다 (100-200 슬라이드). 또는 작은 숫자와 동일합니다 .... – freaky

답변

0

호기심 왜 그런 엄청난 숫자를 사용해야하지만,이로 작동 왜 그런 큰 수를 사용하는

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

그러면 요소에있는 다른 스타일이 제거됩니다. – Barmar

+0

안녕하세요, 답변 해 주셔서 감사합니다. 스타일을 올바르게 형식화하지만 특정 값 다음에 모든 브라우저가 손상됩니다. UHD 디스플레이 및 100-150 슬라이드의 예를 들어 회전 장치를 사용하면 쉽게 도달 할 수 있습니다. 이런 종류의 가치에 도달 할 수있는 예가 많이 있습니다 (특히 소수의 경우도 마찬가지 임). 그래서, 모든 브라우저가 특정 값 아래에서 렌더링하기를 멈춘 것처럼 보입니다 ... 어떤 형식의 표기 형식이든 ... – freaky

+0

그런 경우 레이아웃을 변경해야합니다. 내부 div를 넓은 outer div에 상대적으로 배치하십시오. 또는 더 나은 해결책은 특정 거리에 도달 한 후 DOM에서 요소를 완전히 제거하고 메모리에 저장하는 것입니다. 한 페이지에 100 개의 전체 화면 슬라이드를 유지하여 메모리 사용량을 상상하기 어렵습니다. – bobo