Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

var elt = $("#sprite"); // Элемент, который требуется переместить

var position = elt.offset; // Получить текущие координаты

position.top += 100; // Изменить координату У

elt.offset(position); // Переместить элемент в новую позицию

// Переместить все элементы <h1> вправо на расстояние, зависящее от их

// положения в документе

$('h1').offset(function(index,curpos) {

return {left: curpos.left + 25*index, top:curpos.top};

}):

Метод

position
похож на метод
offset,
за исключением того, что он позволяет только читать координаты и возвращает координаты элемента не относительно начала документа, а относительно его родителя. В разделе 15.8.5 мы узнали, что каждый элемент имеет свойство
offsetParent
, ссылающееся на родительский элемент, относительно которого определяются координаты. Позиционируемые элементы всегда играют роль начала координат для своих потомков, но некоторые броузеры дают эту роль и некоторым другим элементам, таким как ячейки таблицы. Роль начала координат в библиотеке jQuery могут играть только позиционируемые элементы, и метод
offsetParent
объекта
jQuery
отображает каждый элемент на ближайший позиционируемый вмещающий элемент или на элемент
<body>
. Следует отметить не совсем удачный выбор имен этих методов:
offset
возвращает абсолютные координаты элемента относительно начала документа, а метод
position
возвращает смещение элемента относительно его ближайшего предка
offsetРаrent .

Существует также три метода чтения, позволяющие получить ширину, и три метода чтения, позволяющие получить высоту элемента. Методы

width
и
height
возвращают базовые значения ширины и высоты, не включающие отступы, рамки и поля. Методы
innerWidth
и
innerHeight
возвращают ширину и высоту элемента с отступами (слово «inner» (внутренний) указывает на тот факт, что эти методы возвращают ширину и высоту внутри рамки). Методы
outerWidth
и
outerHeight
по умолчанию возвращают размеры элемента с отступами и рамкой. Если этим методам передать значение true, они добавят размеры полей элемента. Следующий фрагмент демонстрирует, что для элемента можно получить четыре разные ширины:

var body = $("body");

var contentWidth = body.width;

var paddingWidth = body.innerWidth;

var borderWidth = body.outerWidth;

var marginWidth = body.outerWidth(true);

var padding = paddingWidth-contentWidth; // сумма левого и правого отступов

var borders = borderWidth-paddingWidth; // сумма толщины левой и правой рамки

var margins = marginWidth-borderWidth; // сумма левого и правого полей

Методы

width
и
height
обладают свойствами, отсутствующими у других четырех методов (методов inner и outer). Во-первых, если первый элемент в объекте
jQuery
является объектом
Window
или
Document
, эти методы вернут размер видимой области окна или полный размер документа. Другие методы работают только с элементами, не являющимися окнами или документами.

Другая особенность методов

width
и
height
заключается в том, что они являются также методами записи. Если передать значение этим методам, они установят ширину или высоту
всех элементов в объекте
jQuery
. (Обратите, однако, внимание, что они не могут изменять ширину или высоту объектов
Window
и
Document
.) Если аргумент имеет числовое значение, он будет интерпретироваться как число пикселов. Если передать строку, она будет использоваться как значение CSS-ат-рибута
width
или
height
, благодаря чему в ней можно указывать любые единицы измерения, предусматриваемые стандартом CSS. Наконец, как и другие методы записи, они могут принимать функцию, которая будет вызываться для вычисления значения ширины или высоты.

Между ролями чтения и записи методов

width
и
height
существует маленькое несоответствие. При использовании в качестве методов чтения они возвращают размеры элемента по содержимому, исключая отступы, рамки и поля. Однако при использовании в качестве методов записи они просто устанавливают CSS-атрибуты
width
и
height
. По умолчанию эти атрибуты также определяют размеры по содержимому. Но если элемент имеет CSS-атрибут
box-sizing
(раздел 16.2.3.1), установленный в значение
border-box
, методы
width
и
height
будут устанавливать размеры, включающие ширину отступов и рамок. Для элемента е, использующего блочную модель «content-box», вызов $(е).width(x).width вернет значение х. Однако для элемента, использующего блочную модель «border-box», этот же вызов в общем случае вернет другое значение.

Последняя пара методов объекта

jQuery
, имеющих отношение к геометрии элементов, - это методы
scrollTop
и
scrollLeft,
позволяющие получить позиции полос прокрутки для элемента или множество позиций полос прокрутки для всех элементов. Эти методы могут применяться и к элементам документа, и к объекту
Window
, а при вызове для объекта
Document
они возвращают или устанавливают позиции полос прокрутки объекта
Window
, хранящего документ. В отличие от других методов записи, методам
scrollTop
и
scrollLeft
нельзя передавать функции.

Метод

scrollTop
как метод чтения и записи можно использовать в паре с методом
height,
чтобы на их основе определить метод, прокручивающий окно на указанное число страниц:

// Прокручивает окно на n страниц, n может быть дробным и отрицательным числом

function page(n) {

var w = $(window); // Обернуть окно объектом jQuery

var pagesize = w.height; // Получить размер страницы

var current = w.scrollTop; // Текущие позиции полос прокрутки

w.scrollTop(current + n*pagesize); // Установить новые позиции

} // полос прокрутки

19.2.7. Чтение и запись данных в элементе

Библиотека jQuery определяет метод чтения/записи с именем

data,
который возвращает или устанавливает данные, связанные с любым элементом документа или с объектами
Document
и
Window
. Возможность связывать данные с любыми элементами является одной из наиболее важных и мощных особенностей: она лежит в основе механизма регистрации обработчиков событий и последовательностей визуальных эффектов в библиотеке jQuery, и в определенных случаях метод
data
может оказаться полезным в ваших сценариях.

Поделиться:
Популярные книги

Рождественский детектив (сборник рассказов)

Полякова Татьяна Викторовна
Детективы:
прочие детективы
6.00
рейтинг книги
Рождественский детектив (сборник рассказов)

Гримуар темного лорда III

Грехов Тимофей
3. Гримуар темного лорда
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Гримуар темного лорда III

Иной. Том 1. Школа на краю пустыни

Amazerak
1. Иной в голове
Фантастика:
боевая фантастика
рпг
аниме
5.75
рейтинг книги
Иной. Том 1. Школа на краю пустыни

Двойник короля 19

Скабер Артемий
19. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 19

Золушка вне правил

Шах Ольга
Любовные романы:
любовно-фантастические романы
6.83
рейтинг книги
Золушка вне правил

Гримуар темного лорда IX

Грехов Тимофей
9. Гримуар темного лорда
Фантастика:
попаданцы
альтернативная история
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда IX

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Убивать чтобы жить 5

Бор Жорж
5. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 5

Двойник Короля 5

Скабер Артемий
5. Двойник Короля
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Двойник Короля 5

Три `Д` для миллиардера. Свадебный салон

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Три `Д` для миллиардера. Свадебный салон

Черный Маг Императора 12

Герда Александр
12. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 12

Бастард Императора. Том 12

Орлов Андрей Юрьевич
12. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 12

Второгодка. Книга 4. Подавать холодным

Ромов Дмитрий
4. Второгодка
Фантастика:
героическая фантастика
альтернативная история
сказочная фантастика
5.00
рейтинг книги
Второгодка. Книга 4. Подавать холодным

Т. 03 Гражданин Галактики

Хайнлайн Роберт Энсон
3. Отцы-основатели. Весь Хайнлайн
Фантастика:
научная фантастика
7.00
рейтинг книги
Т. 03 Гражданин Галактики