Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.02.2014, 14:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Находится ли блок в видимой части
Макет показывающий насколько виден блок
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   #test{
      background-color:  #FF0000;
       height: 250px;
       width:  250px;
       position: relative;
       top: 300px;
       left: 500px;
    }
   #show{
       background-color:  #F4A460;
       width:  200px;
       position:  fixed;
       top: 15px;
       left: 300px;
       z-index: 100;
   }
  body{
    height: 5000px;
    width:  5000px;
  }
  </style>
    <script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
    <script>
jQuery(function () {
    var checkViewport = function (el) {
        var minTop = jQuery(document).scrollTop(),
            minLeft = jQuery(document).scrollLeft(),
            maxTop = minTop + jQuery(window).height(),
            maxLeft = minLeft + jQuery(window).width(),
            $myElement = $(el),
            elementOffset = $myElement.offset(),
            elementHeight = $myElement.height(),
            elementWidth = $myElement.width(),
            heightUp = elementOffset.top > minTop ? 0 : minTop - elementOffset.top > elementHeight ? elementHeight : minTop - elementOffset.top,
            heightDn = elementOffset.top + elementHeight < maxTop ? 0 : elementOffset.top + elementHeight - maxTop > elementHeight ? elementHeight : elementOffset.top + elementHeight - maxTop,
            widthLeft = elementOffset.left > minLeft ? 0 : minLeft - elementOffset.left > elementWidth ? elementWidth : minLeft - elementOffset.left,
            widthRight = elementOffset.left + elementWidth < maxLeft ? 0 : elementOffset.left + elementWidth - maxLeft > elementWidth ? elementWidth : elementOffset.left + elementWidth - maxLeft,
            heightHide = Math.round(100 * (heightUp + heightDn) / elementHeight),
            widthHide = Math.round(100 * (widthLeft + widthRight) / elementWidth);
            (heightHide == 100 || widthHide == 100) && (heightHide = widthHide = "");
            heightHide = heightHide ? "элемент скрыт на " + heightHide + "% по высоте<br>" : "";
            widthHide = widthHide ? "элемент скрыт на " + widthHide + "% по ширине" : "";

        if (elementOffset.top > minTop && elementOffset.top + elementHeight < maxTop && (elementOffset.left > minLeft && elementOffset.left + elementWidth < maxLeft)) $("#show").html("элемент полностью виден");
        else $("#show").html( heightHide + widthHide ||'элемент полностью скрыт')
    };
    jQuery.fn.scroll_resize_Complete = function (fn, ms) {
        var timer = null;
        this.resize(function () {
            if (timer) clearTimeout(timer);
            timer = setTimeout(fn, ms)
        });
        this.scroll(function () {
            if (timer) clearTimeout(timer);
            timer = setTimeout(fn, ms)
        })
    };
    jQuery(window).scroll_resize_Complete(function () {
        checkViewport("#test")
    }, 50)
    checkViewport("#test")
});
    </script>
</head>

<body>
<div id="show"></div>
<div id="test"></div>
</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Находится ли блок в видимой части quizzer Javascript под браузер 6 26.02.2014 02:50
Копирование блоков в блок maximus Events/DOM/Window 1 14.09.2013 19:40
как скрыть блок div по ключевому слову Sacred13 Элементы интерфейса 6 06.08.2013 19:13
Нахождение элемента в видимой части контейнера со скроллом kidar2 Events/DOM/Window 0 21.05.2010 10:50
высота видимой части окна alex-crimea Общие вопросы Javascript 9 15.03.2010 20:16