2011-11-20 3 views

답변

3

당신이 뭔가를 할 수 있습니다.

+0

감사합니다. 임시 요소를 만든 다음 속성을 읽는 것 같습니다. 따라서 스타일 시트에서 직접 읽는 것은 불가능합니다. –

+1

이 예제에서는 새 요소를 만들지 않습니다. 먼저 계산 된 높이 값을 저장하고 요소의 높이 스타일을 재설정하여 CSS 값을 가져 와서 수정하기 전에 값을 해당 값으로 복원합니다. 왜 새로운 요소를 만들고 싶지 않니? 이 솔루션은 실행 중에 디스플레이에 약간의 변화를 일으킬 것이기 때문에 사용자 경험 관점에서 좋지 않을 것입니다. – melihcelik

+0

스타일 시트에서 값을 읽으 려 할 때 DOM을 변경하는 것이 비효율적이기 때문에 새로운 요소를 만드는 것을 피하고 싶었습니다. 하지만 내가해야 할 것처럼 보입니다. 나는 원래 요소의 크기를 재빨리 재조정 할 수는 없다 : 그것은 게임에서 캐릭터이며 발이 화면에서 사라지면 DIV를 줄인다. 그렇지 않으면 페이지의 크기가 변경되고 잘못 보인다. –

1

아니요, CSS에서 속성을 읽을 수 없습니다.

style을 요소에 적용하는 대신 CSS 파일에서 height을 변경할 수있는 것보다 CSS 파일을 JavaScript에서 직접 변경할 수있는 백엔드 API를 만들 수 있습니다.

+1

올바르게 해석한다면 그는 다른 요소에 의해 변경되었을 수있는 기존 요소의 계산 스타일이 아니라 스타일 시트에 선언 된 스타일 속성을 읽는 방법을 묻는 것입니다. – BoltClock

+0

당신은 서버 측을 의미합니까? 나는 오프라인에서 실행할 수있는 간단한 게임을 만들고있다. 사람들은 온라인에서 플레이하거나 파일을 구매하여 로컬에서 실행할 수 있기 때문에 서버 코드는 옵션이 아니다. –

2

높이 변경이 알려진 원인에 의해 시작되면 가능합니다.

먼저 현재의 인라인 높이/클래스 이름을 저장하십시오. 그런 다음 class/height 속성을 다시 설정하십시오. 그런 다음 window.getComputedStyle 메서드를 사용하여 현재 높이를 읽습니다. 마지막으로 클래스/높이 속성을 복원합니다. 높이가 인라인 height 속성을 설정하여 변경되기 때문에 클래스 이름을 제거 할 필요가 없다고 가정 해 봅시다. 다음 :

내가 jsfiddle.net에 대한 예제를 만들어
var myDiv = $("#myId"); 
alert('initial height from css is: ' + myDiv.css("height")); 

myDiv.css("height","50px"); 
alert('height modified by js is: ' + myDiv.css("height")); 

// store modified height value 
var height = myDiv.css("height"); 

// set height to an invalid value 
myDiv.css("height",""); 

alert('height is now retrieved from css again: ' + myDiv.css("height")); 

// restore height value 
myDiv.css("height",height); 

, 당신이 그것을 here를 볼 수 있습니다

function getCSSheight(elem) { 
    var style = window.getComputedStyle(elem, null); 
    return style.getPropertyValue("height"); //Returns 222px; 
    // Optionally: Use parseFloat to convert the `22px` to `22`. 
} 
+0

이것은 몇 초 동안이라도 높이를 재설정해야한다는 것을 의미합니까? 내 DIV 개체는 고정 된 크기의 화면 하단에 있습니다. 나는 스크린의 크기를 강제 변경하지 않기 위해 높이를 줄인다. 최대 높이까지 임시 크기 조정조차도 문제를 일으킬 수 있습니다. –

관련 문제