admin / 15.02.2018
Содержание
Модераторы:TRAHOMOTO, tuareg, Gennady
Вернуться в Вопросы от совсем новичков
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Cuprum » 11 апр 2013, 23:58
В большинстве решений, которые я видел при клике на элементе его текущая видимость определяется на основе проверки .is(‘:visible’)/is(‘:hidden’). Но я решил сделать чуть по-другому и видимость "кликнутого" элемента определяется путем чтения состояния из куки (т.к. кука с текущими состояниями элементов ставиться сразу при вызове плагина). Вот и думаю, какой способ надежнее…
zandroid » 12 апр 2013, 11:16
Cuprum » 12 апр 2013, 13:41
zandroid писал(а):В абстрактном случае надёжнее, конечно, проверять видимость непосредственно у элемента, т.к. его могут скрыть/показать из другого кода, а не только из вашего плагина и тогда реально состояние элемента и сохранённое в куки окажется рассинхронизировано.
Да, этот вариант я как-то упустил из виду. Пожалуй, перепишу
Cuprum » 07 май 2013, 22:51
Перейти к: навигация, поиск
<< Рецепты
Если вам нужно определить, какие элементы попадают в данный момент в видимую область окна браузера, следует использовать информацию о позиции интересующих элементов на странице и размер горизонтальной прокрутки:
После добавления этой функции в скрипт вашей страницы, можно будет найти все div-элементы класса box таким образом:
В jQuery получить координаты элемента можно относительно всего документа и относительно родительского слоя, при помощи функций jQuery.offset() и jQuery.position() соответственно.
Функция возвращает переменную типа объект с координатами относительно документа (свойства и ).
Функция возвращает переменную типа объект с координатами элемента относительно родительского слоя (свойства и ).
Есть 2 слоя, родительский и дочерний.
Задача получить координаты обоих слоев.
Онлайн-пример получения координат.
При нажатии на кнопку Координаты родительского слоя появится примерно следующий результат.
При нажатии на кнопку Координаты дочернего слоя появится примерно следующий результат.
В разных браузерах может быть разный результат.
Перейти к: навигация, поиск
<< Манипуляции
.offset() .position()
С помощью этих функций, можно узнавать координаты элемента на странице. Кроме этого, с помощью offset(), можно изменить координаты элемента. Имеется несколько вариантов использования функций:
.offset() .position():integer1.2
.offset(value):jQuery1.4
изменяет координаты всех выбранных элементов делая их равными value.
Значение value должен быть объектом с двумя полями — .
.offset(function(index, value)):jQuery1.4
устанавливает новое значение координат элементов, которое возвращает пользовательская функция. Функция вызывается отдельно для каждого из выбранных элементов. При вызове ей передаются следующие параметры: index — позиция элемента в наборе, value — текущие координаты элемента.
Примеры использования:
$(«div.content»).offset() | возвратит координаты первого div-элемента с классом content, относительно начала страницы. |
$(«div.content»).position() | возвратит координаты первого div-элемента с классом content, относительно ближайшего родителя с заданным позиционированием. |
$(«.content»).offset({top:30, left:100}) | устанавливает координаты относительно начала страницы, равные (100, 30) для всех элементов с классом content.
[Javascript] Проверка реальной видимости элемента в html |
Замечание 1: при изменении координат с помощью функции , все выбранные элементы, у которых не задан тип позиционирования (то есть position = static), автоматически изменят позиционирование на относительное (relative).
Замечание 2: важно отметить, что используя метод вы получите позицию только первого элемента из всех выбранных. Если вам нужны значения координат всех элементов, то следует использовать конструкции типа или .
Первый элемент из списка опустим на 30 пикселей.
~lt~!DOCTYPE html~gt~ ~lt~html~gt~ ~lt~head~gt~ ~lt~script src=»https://steptosleep.ru/wp-content/uploads/2018/06/75411.jpg»~gt~~lt~/script~gt~ ~lt~style~gt~ ul{ margin: 10px; } .item{ float: left; height:20px; width:80px; margin: 1px; padding: 3px; background-color: #eee; list-style-type:none; } ~lt~/style~gt~ ~lt~/head~gt~ ~lt~body~gt~ ~lt~ul id=»list»~gt~ ~lt~li class=»item»~gt~ Выше ~lt~/li ~gt~ ~lt~li class=»item»~gt~ Быстрее ~lt~/li ~gt~ ~lt~li class=»item»~gt~ Сильнее ~lt~/li ~gt~ ~lt~/ul~gt~ ~lt~script~gt~ $(«.item:first»).offset(function(i,val){ return {top:val.top + 30, left:val.left}; }); ~lt~/script~gt~ ~lt~/body~gt~ ~lt~/html~gt~
FILED UNDER : IT