2016-10-26 7 views
1

고정 된 위치에 "고정"요소가 있습니다. 클라이언트가 화면 크기를 조정하거나 DOM이 변경된 후 고정 (상대) 위치를 다시 정의해야합니다.고정 요소에서 (정적) 오프셋 가져 오기

요소가 고정 된 위치 (이 스틱), 나는 단순히 상대에 요소의 위치를 ​​변경가의 오프셋 얻고 위치를 재설정가있는 경우 :이 작품을

if (self.isStick) { 
    elemOffset = $element.css('position', 'relative').offset(); 
    $element.css('position', 'fixed'); 
} else { 
    elemOffset = $element.offset(); 
} 

하지만, 그것은 일종의 해키 느낀다. 더 나은 성능으로 대안이 있는지 궁금합니다. 어떤 아이디어?

+0

'elemOffset = self.isStick? $ element.clone() .css ('position', 'relative'). offset() : $ element.offset();' –

답변

2

다음은 JQuery .clone()을 사용하여 요소를 복사하는 예입니다. 한 줄에 요소 오프셋 가져 오기

elemOffset = self.isStick ? $element.clone().css('position', 'relative').offset() : $element.offset(); 
+0

좋은 oneliner이지만,'.clone()'은 요소의 깊은 사본과 그것의 아이들. 나는 이것이 주어진 코드보다 나쁘다고 생각한다. 내가 틀렸다면 나를 바로 잡아라. – JasonK

+0

메모리 누수가 발생합니다. –