function offsetBottom(el, i) { i = i || 0; return $(el)[i].getBoundingClientRect().bottom }
function offsetRight(el, i) { i = i || 0; return $(el)[i].getBoundingClientRect().right }
var bottom = offsetBottom('#logo');
var right = offsetRight('#logo');
Это найдет расстояние от верхнего и левого края вашего окна просмотра до точного края вашего элемента и ничего сверх этого. Скажем, ваш логотип был 350 пикселей и у него было левое поле 50 пикселей, переменная right будет содержать значение 400, потому что это фактическое расстояние в пикселях, которое потребовалось, чтобы добраться до края вашего элемента, независимо от того, есть ли у вас больше отступов. или поле справа от него.
Если для вашего CSS-свойства box-sizing установлено значение 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();
источник
windows.width()
и аналогичные для дальнейших расчетов.я думаю
<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
в моем браузере Chrome.
Когда документ прокручивается,
$(window).height()
возвращает высоту окна просмотра браузера, а не ширину документа, некоторые части которого скрыты при прокрутке. См. Http://api.jquery.com/height/ .источник
Вот функция 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'));
источник
Ответ Vanilla Javascript
var c = document.getElementById("myElement").getBoundingClientRect(); var bot = c.bottom; var rgt = c.right;
Чтобы было ясно, элемент может быть любым, если вы присвоили ему идентификатор и
<img>
<div>
<p>
т. Д.например
<img id='myElement' src='/img/logout.png' className='logoutImg img-button' alt='Logout' />
источник