[jquery] 요소의 하단 및 오른쪽 위치 가져 오기

다음과 같이 창 내에서 요소의 위치를 ​​얻으려고합니다.

var link = $(element);

var offset = link.offset();
var top = offset.top;
var left = offset.left;
var bottom = $(window).height() - link.height();
bottom = offset.top - bottom;
var right = $(window).width() - link.width();
right = offset.left - right;

그런데 -아래와 오른쪽이 앞에 있는데 … 왜 이래요? 숫자가 정확하기 때문에 마이너스가 아니어야합니다.



답변

대신에

var bottom = $(window).height() - link.height();
bottom = offset.top - bottom;

왜 안하는거야

var bottom = $(window).height() - top - link.height();

편집 : 당신의 실수는 당신이하고 있다는 것입니다

bottom = offset.top - bottom;

대신에

bottom = bottom - offset.top; // or bottom -= offset.top;


답변

var link = $ (element);
var offset = link.offset ();

var top = offset.top;
var left = offset.left;

var bottom = top + link.outerHeight ();
var right = left + link.outerWidth ();


답변

// Returns bottom offset value + or - from viewport top
function offsetBottom(el, i) { i = i || 0; return $(el)[i].getBoundingClientRect().bottom }

// Returns right offset value
function offsetRight(el, i) { i = i || 0; return $(el)[i].getBoundingClientRect().right }

var bottom = offsetBottom('#logo');
var right = offsetRight('#logo');

그러면 뷰포트의 상단과 왼쪽에서 요소의 정확한 가장자리까지의 거리를 찾을 수 있습니다. 따라서 로고가 350px이고 왼쪽 여백이 50px라고 가정하면 변수 ‘right’는 400의 값을 유지합니다. 이는 더 많은 패딩이 있더라도 요소의 가장자리에 도달하는 데 걸린 실제 거리 (픽셀 단위)이기 때문입니다. 또는 오른쪽 여백.

box-sizing CSS 속성이 border-box로 설정된 경우 기본 콘텐츠 상자로 설정된 것처럼 계속 작동합니다.


답변

이를 위해 .position () 을 사용할 수 있습니다.

var link = $(element);
var position = link.position(); //cache the position
var right = $(window).width() - position.left - link.width();
var bottom = $(window).height() - position.top - link.height();


답변

나는 생각한다

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<div>Testing</div>
<div id="result" style="margin:1em 4em; background:rgb(200,200,255); height:500px"></div>
<div style="background:rgb(200,255,200); height:3000px; width:5000px;"></div>

<script>
(function(){
    var link=$("#result");

    var top = link.offset().top; // position from $(document).offset().top
    var bottom = top + link.height(); // position from $(document).offset().top

    var left = link.offset().left; // position from $(document).offset().left
    var right = left + link.width(); // position from $(document).offset().left

    var bottomFromBottom = $(document).height() - bottom;
    // distance from document's bottom
    var rightFromRight = $(document).width() - right;
    // distance from document's right

    var str="";
    str+="top: "+top+"<br>";
    str+="bottom: "+bottom+"<br>";
    str+="left: "+left+"<br>";
    str+="right: "+right+"<br>";
    str+="bottomFromBottom: "+bottomFromBottom+"<br>";
    str+="rightFromRight: "+rightFromRight+"<br>";
    link.html(str);
})();
</script>

결과는

top: 44
bottom: 544
left: 72
right: 1277
bottomFromBottom: 3068
rightFromRight: 3731

내 크롬 브라우저에서.

문서를 스크롤 할 수있는 경우 스크롤에서 $(window).height()일부가 숨겨져있는 문서의 너비가 아닌 브라우저 뷰포트의 높이를 반환합니다. http://api.jquery.com/height/를 참조하십시오 .


답변

다음은 페이지의 모든 클래스 또는 ID의 객체를 반환하는 jquery 함수입니다.

var elementPosition = function(idClass) {
            var element = $(idClass);
            var offset = element.offset();

            return {
                'top': offset.top,
                'right': offset.left + element.outerWidth(),
                'bottom': offset.top + element.outerHeight(),
                'left': offset.left,
            };
        };


        console.log(elementPosition('#my-class-or-id'));


답변

바닐라 자바 ​​스크립트 답변

var c = document.getElementById("myElement").getBoundingClientRect();
var bot = c.bottom;
var rgt = c.right;

명확하게하기 위해 요소는 ID를 할당하는 한 무엇이든 될 수 있습니다 <img> <div> <p>.

예를 들면

<img
    id='myElement'
    src='/img/logout.png'
    className='logoutImg img-button'
    alt='Logout'
/>