布局大致如下:
我想知道的就是元素是否超出了页面范围 :)
我只知道页面宽度是固定的,为 900 像素……
布局大致如下:
我想知道的就是元素是否超出了页面范围 :)
我只知道页面宽度是固定的,为 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>
left: -10px;
怎么办? - rhitzvar $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 value
或left: 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; }
遍历页面上的每个元素似乎过于冗长,而在繁忙的页面上需要花费一些时间。虽然这是可能的,但并不完全实际。
<pre>
元素,有时可能会有更长的行,它们超出了页面范围。页面上可以有多个这样的元素。 - Alex