繁体   English   中英

如何查明元素是否溢出(使用jQuery)?

[英]How to find out if an element overflows (with jQuery)?

布局如下所示:

在此输入图像描述

基本上我只想知道ELEMENT是否超出了PAGE :)

我所知道的是页面宽度,固定为@ 900像素...

计算元素的width ,然后得到它的left ,最后将它减去页面的width ,你就会得到溢出。

 var pageWidth = $(".page").width(); var elementWidth = $(".element").width(); var elementLeft = $(".element").position().left; if (pageWidth - (elementWidth + elementLeft) < 0) { alert("overflow!"); } else { alert("doesn't overflow"); } 
 .page { overflow: hidden; width: 200px; height: 200px; position: relative; background: black; } .element { width: 100px; height: 100px; position: absolute; background: blue; top: 10px; left: 150px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="page"> <div class="element"> </div> </div> 

示例: http//jsfiddle.net/jackJoe/Q5FdG/

假设您的页面上有一些<div id="elem"></div> ,您可以判断它是否在视口之外,如下所示:

var $elem = $('#elem'),
    top = $elem.offset().top,
    left = $elem.offset().left,
    width = $elem.width(),
    height = $elem.height();

if (left + width > $(window).width()) {
    alert('Off page to the right');
}

if (top + height > $(window).height()) {
    alert('Off page to the bottom');
}

这里的所有答案都没有检查元素是否在top: negative valueleft: negative value

所以这就是为什么,我在这里给出一个更正确或更准确的答案。

 var pageWidth = $(".page").width(); var pageHeight = $(".page").height(); var pageTop = $(".page").offset().top; var pageLeft = $(".page").offset().left; var elementWidth = $(".element").width(); var elementHeight = $(".element").height(); var elementTop = $(".element").offset().top; var elementLeft = $(".element").offset().left; if ((elementLeft >= pageLeft) && (elementTop >= pageTop) && (elementLeft + elementWidth <= pageLeft + pageWidth) && (elementTop + elementHeight <= pageTop + pageHeight)) { // Its inside alert('Inside'); } else { // alert('Outside'); } 
 .page { overflow: hidden; width: 200px; height: 200px; position: relative; background: black; } .element { width: 100px; height: 100px; position: absolute; background: blue; top: -10px; left: -10px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <div class="page"> <div class="element"> </div> </div> 

检查小提琴

您是否尝试过使用CSS来防止它发生?

pre { word-wrap:break-word; }

迭代遍历页面上的每个元素似乎过多,并且在繁忙的页面上需要一些时间。 这是可能的但不完全实用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM