Переполнение скрытых элементов - PullRequest
3 голосов
/ 06 февраля 2010

Мне интересно, как я могу получить доступ к переполненным элементам. Я хотел бы скопировать их содержимое в другой div или что-то еще. Допустим, у меня есть ul с 5 элементами li, но видны только два. Итак ... Как я могу получить другие 3 элемента в другом div?

1 Ответ

4 голосов
/ 06 февраля 2010

Вы должны вычислить, является ли что-то видимым или нет, и для этого вы должны делать предположения. Ниже приведен простой пример этого. Предполагается, что список является традиционным списком (в котором каждый элемент находится ниже следующего). Затем он использует вычисление, чтобы определить, больше ли offsetTop, чем высота контейнера. Вы можете настроить это, чтобы увидеть, является ли что-то частично видимым или полностью видимым.

return this.offsetTop + $(this).height() > height;

означает применить эффект, если элемент не полностью виден. Чтобы не перемещать частично видимые элементы, измените его на:

return this.offsetTop > height;

Полный пример:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
  var height = $("#container").height();
  $("#container li").filter(function() {
    return this.offsetTop + $(this).height() > height;
  }).wrapAll("<ul>").parent().appendTo("#overflow");
});
</script>
<style type="text/css">
div, ul, li { border: 0 none; padding: 0; margin: 0; }
#container { background: yellow; margin-bottom: 20px; height: 50px; overflow: hidden; }
#overflow { background: #CCC; }
</style>
</head>
<body>
<div id="container">
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
<li>five</li>
</div>
<div id="overflow">
</div>
</body>
</html>

Более общее решение было бы гораздо более утомительным. Вам придется обслуживать предметы, которые находятся слева, справа, над или под «окном просмотра».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...