Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sp_lr3.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
390.14 Кб
Скачать

1.2 Открытие и закрытие лайтбокса

Итак, у нас настроен вид элементов и позиционирование всего на странице, но как мы будем открывать и закрывать лайтбокс?

Наверняка вы очень хорошо знаете, как ссылаться на элементы на той же странице с помощью атрибута ID (<a href="#lightbox-about">, где lightbox-about - идентификатор элемента). Однако вы можете не знать, что ссылка на элемент, который скрыт на странице, вызывает "вытягивание" элемента в область просмотра, а содержимое окна опускается под него.

Таким образом, мы изменяем значение href в наших ссылках на значения ID лайтбоксов и создаем новый элемент #close, который является ссылкой на кнопку для закрытия:

<ul id="lightboxes">

<li id="close"></li>

<li id="lightbox-about">

<div class="box">

<a href="#close" class="close" title="Закрыть окно">x</a> <h3>Заголовок подтемы</h3>

Вы не сможете протестировать страницу в данный момент, потому что пустой элемент #close располгается выше #container, не дает нажимать ни на какие другие элементы. Однако, если вы добавите ‘#lightbox-about’ в адресную строку браузера, то появится наш лайтбокс, а изменение на '#close' - уберет лайтбокс с экрана.

Теперь нам надо удалить фоновый цвет с элемента #close, чтобы он выглядел так, как будто здесь ничего нет, и позиционировать его позади элемента #container, чтобы мы могли нажимать на ссылки в #container.

Помните, что элемент #container позиционируется между элементами лайтбокса? Вот в чем заключается причина.

Следующий кусок CSS нужно добавить к стилю элемента #close:

#lightboxes #close {

background-color: transparent;

z-index: -1;}

Ещё в лайтбокс надо дообавить элемент с идентификатором "close" (выделен жирным шрифтом):

<ul id="lightboxes">

<li id="close"></li>

<li id="lightbox-about">

<div class="box">

<h3>Заголовок подтемы</h3>

Теперь можно открывать и закрывать лайтбокс.

Как это работает? Если вы не установите z-index для элемента, то он будет располагаться в зависимости от своего положения в коде. Следовательно, элементы лайтбокса <li> автоматически появляются выше контейнера, так как они располагаются дальше в разметке. Однако, задавая одному из них отрицательное значения z-index, мы размещаем его позади любого элемента, который ему предшествует в разметке.

Необязательная часть, т.к. лайтбоксы уже работают:

в данный момент в нашем контейнере не так много контента, таким образом он весь выводится на одну страницу и все прекрасно работает. Однако, если вы добавите несколько страниц контента, то обнаружите, что мы еще не все сделали. Появляется полоска прокрутки, которая позволяет прокручивать контент за границу лайтбокса и его перекрывающего слоя. Так происходит потому, что документ может прокручиваться, но лайтбокс имеет только 100% высоты окна, а не документа. Элемент #container также имеет 100% высоты окна, поэтому простым решением является переполнение контейнера, так что он будет прокручиваться вместо документа. Добавляем к стилю элемента #container:

overflow: auto;

Если теперь посмотреть на наш документ в Internet Explorer, то будет видно две полосы прокрутки. Одна для #container и недоступная полоса прокрутки для документа. Это легко поправить, добавив следующий код CSS в раздел для IE:

html {

overflow-y: auto;}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]