Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.01.2014, 17:58
Новичок на форуме
Отправить личное сообщение для slon_js Посмотреть профиль Найти все сообщения от slon_js
 
Регистрация: 04.01.2014
Сообщений: 3

Выбор текущего (при прокрутке) элемента
Добрый день!

Делаю онлайн-читалку книги. Застрял на функции добавления закладки.
Идея такова: на текущем положении полосы прокрутки выбрать элемент и его запомнить.

Вот с выбором элемента, который сейчас на экране и проблема...

Просьба направить, у кого есть мысли?
Ответить с цитированием
  #2 (permalink)  
Старый 04.01.2014, 18:06
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Если элементы разной высоты то только поочередным опросом element.getBoundingClientRect() и проверкой входит ли его rect в видимую область (viewport).
Если элементы одинаковые по высоте, то все сводится к простой арифметике.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 04.01.2014, 18:48
Новичок на форуме
Отправить личное сообщение для slon_js Посмотреть профиль Найти все сообщения от slon_js
 
Регистрация: 04.01.2014
Сообщений: 3

Сообщение от Rise Посмотреть сообщение
Какой элемент? Запоминай скролл от верха да и всё...
Скролл всегда разный, так как юзер мог поменять размер шрифта.
Ответить с цитированием
  #4 (permalink)  
Старый 04.01.2014, 18:49
Новичок на форуме
Отправить личное сообщение для slon_js Посмотреть профиль Найти все сообщения от slon_js
 
Регистрация: 04.01.2014
Сообщений: 3

Сообщение от danik.js Посмотреть сообщение
Если элементы разной высоты то только поочередным опросом element.getBoundingClientRect() и проверкой входит ли его rect в видимую область (viewport).
Если элементы одинаковые по высоте, то все сводится к простой арифметике.
Спасибо огромное! Натолкнули куда нужно!
Еще немного гугла, и получилось вот что:

function inWindow(s){
var scrollLeft = $(window).scrollLeft();
var windowWidth = $(window).width();
var currentEls = $(s);
var result = [];
currentEls.each(function(){
var el = $(this);
var offset = el.offset();
if(scrollLeft <= offset.left && (el.width() + offset.left) < (scrollLeft + windowWidth))
result.push(this);
});
return $(result);
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размера элемента при клике Derekovich Элементы интерфейса 25 05.12.2013 20:45
Как сохранить обработчики элемента, при изменения положения элемента в dom-дереве ? Danxil Events/DOM/Window 5 08.11.2013 23:33
Как реализовать анимацию при прокрутке sabano jQuery 3 24.08.2013 11:52
Изменение стиля родительского элемента при :hover дочернего lanzs Элементы интерфейса 2 16.10.2010 13:28
раскрывать/скрывать <td> при выборе определенного элемента списка zip Элементы интерфейса 2 19.01.2009 13:58