2012-11-20 1 views
0

어떻게 변수에 JQuery가 아닌 자바 스크립트 내에서 DIV 상자의 높이, 너비 및 위치 값을 저장할 수 있습니까?자바 스크립트에서 너비 높이 및 위치 값 저장 jquery가 아닌

더 구체적으로 : I 1600 폭의 화면 해상도 내 페이지를 설계하고

. 그래서 모든 div 태그가 원래 설계된 페이지 폭으로 클라이언트가 페이지에 액세스하는 현재 화면 크기의 비율에 비례하여 크기가 조정되는 스크립트를 작성하고 있습니다.

다른 말로하면 모든 div 태그의 높이 값과 위치 값을 모두 동적으로 가져온 다음이 비율을 곱하여 모든 비율의 크기와 위치를 다시 조정해야합니다.

하지만 지금까지이 값을 올바르게 저장할 수없는 것 같습니다.

이 내가 지금까지 쓴 것입니다 :

<script type=text/javascript> 
availW = window.screen.availWidth; 
availH = window.screen.availHeight; 

perNum = availW/1600; 

allDivs = document.getElementsByTagName("div"); 

allDivsLength = allDivs.length; 

for (var i=0; i<allDivsLength; i++) { 
    allDivsTop = []; 
    allDivsBottom = []; 
    allDivsLeft = []; 
    allDivsRight = []; 
    allDivsWidth = []; 
    allDivsHeight = []; 
    changeAllDivs(i); 
} 

function changeAllDivs(k) { 
    var i=k; 
    allDivsTop[i] = allDivs[i].currentStyle.getProperyValue("top"); 
    allDivsBottom[i] = allDivs[i].clientBottom; 
    allDivsLeft[i] = allDivs[i].clientLeft; 
    allDivsRight[i] = allDivs[i].clientRight; 
    allDivsWidth[i] = allDivs[i].clientWidth; 
    allDivsHeight[i] = allDivs[i].clientHeight; 
    allDivs[i].style.width = perNum*allDivsWidth[i]+"px"; 
    allDivs[i].style.height = perNum*allDivsHeight[i]+"px"; 
    allDivs[i].style.top = perNum*allDivsTop[i]+"px"; 
    allDivs[i].style.bottom = perNum*allDivsBottom[i]+"px"; 
    allDivs[i].style.left = perNum*allDivsLeft[i]+"px"; 
    allDivs[i].style.right = perNum*allDivsRight[i]+"px"; 
} 
<script/> 
+1

이 왜 처음부터 퍼센트의 모든 CSS 값을 쓰지 않는다 더 잘 작동하면 코드가 약간 볼 수정 한? –

+0

... 그것에 대해 생각하지 않았습니다 .. 감사합니다 :) – cursez

+0

하지만 만약 내가 비율로 곱셈과 같은 선형 변환을하고 싶지 않았어 ..하지만 CSS로 그것을 할 좋은 생각입니다 시작, 대부분은 자바 스크립트와 DOM 레벨 방법에 연습하고 싶습니다. – cursez

답변

1

왜 CSS의 백분율 값을 사용하지에 몸 WidthHeight를 얻을? 가로 세로 비율 때문에?

고정 된 종횡비의 컨테이너가 있고 클라이언트 창의 크기에 따라 하나의 컨테이너 크기를 조정하면됩니다. 컨테이너 내의 모든 내용은 정상적인 CSS 백분율 값을 사용하여 배치 할 수 있습니다 ... 나중에 두통을 줄여야합니다.

지금 나는

availW = window.screen.availWidth; 
availH = window.screen.availHeight; 

perNum = availW/1600; 

allDivs = document.getElementsByTagName("div"); 

scaleProperties = ['clientTop', 'clientBottom'] //and so on 

for (var i=0; var l = allDivs.length; i < l; i++) { 
    var currDiv = allDivs[i]; 

    for(var p in scaleProperties) 
     currDiv[p] = (currDiv[p] * perNum) + "px"; 
} 
+0

실제로 이것은 나의 첫 번째 웹 페이지에 대한 나의 첫 번째 시도이며, 일반적으로 나는 ' t는 많은 것을 고려했다. .. 나는 자동 페이지 크기 조정 (나는 그와 같은 용어가 있는지 나는 모른다)을하는 가장 바람직하고 안전한 방법이 무엇인지 모르겠다. 나는 자바 스크립트로 한 번만 연습하고있다. 몇 자습서와 두 달 .. 코드 접근에 대해 대단히 감사합니다.이 접근법에 대해 생각할 것입니다. – cursez

+0

JS를 배우는 중이라면 시스템에 대한 우수 사례를 얻고 실행 컨텍스트를 읽는 것이 좋습니다. 전역 범위를 오염시키지 않도록이 코드와 같은 함수를 분리하십시오 :) – user1568528

+0

예 글로벌 변수를 많이 유지하는 것이 좋지 않으며 모든 것을 함수 내에 유지하는 것이 더 좋습니다. 위 코드는 jus입니다. t는 테스트 스크립트 안의 유일한 것입니다. 그런데 javascript를 사용하여 CSS 값을 저장하는 방법에 대한 좋은 문서가 있습니다. 원인은 테두리 크기와 같은 스타일에 액세스하는 데 문제가 있습니다. 테두리 색상 ... 사용할 노드 .. – cursez

0

사용이 대부분의 브라우저

var availW ; 
var availH ; 
if(typeof(window.innerWidth == 'number')){ 
    availW = window.innerWidth; 
    availH = window.innerHeight; 
} 
else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)){ 
    availW = document.documentElement.clientWidth; 
    availH = document.documentElement.clientHeight; 
} 
else if(document.body && (document.body.clientWidth || document.body.clientHeight)){ 
    availW = document.body.clientWidth; 
    availH = document.body.clientHeight; 
} 
+0

덕분에 브라우저 간 호환성을 어떻게 처리해야할지 모르겠다. – cursez