Недавно столкнулся с такой задачей. Необходимо было при вызове поп-апа затемнить остальной фон сайта. При этом затемнение должно было быть прозрачным. Эта проблема решается довольно просто. К нам на выручку, опять же, придет библиотека jQuery. С начала расскажу теоретически всю физику процесса, а потом покажу код и объясню как он работает.
С начала к странице подключаем библиотеку jQuery. Затем через скрипты добавляем в тело документа (в тег BODY) один блочный элемент, допустим DIV. Для него, через CSS, должны быть прописаны правила, обеспечивающие фон этого элемента определенного цвета, допустим черного, слой должен находиться выше всех остальных слоев страницы и он должен занимать все доступное пространство в окне браузера. После этого настраивается прозрачность данного элемента до определенной величины, кому как нравится. Настроив фон, можно вывести попап. Здесь самое главное чтоб попап оказался выше затемненого DIVа. Теперь как это выглядит в коде.
JAVASCRIPT:
$(function(){
$('button').bind('click', function(event){
black_fon=document.createElement('div');
black_fon.className='black_fon';
$('body').append(black_fon);
$('.black_fon').fadeTo(0, 0.4);
$('.popup').fadeIn('slow');
});
});
Здесь 'button' – кнопка на веб-странице, к которой присоединяется обработчик 'click'. При щелчке на ней оператор append добавляет в конец тега BODY елемент DIV с классом black_fon. В следующей строчке настраивается прозрачность этого DIVа. Оператор fadeTo говорит что прозрачности нужно присвоить значение 0.4 (или 40%) и сделать это за 0 милисекунд, тоесть мгновенно. Дальше организуем постепенное появление попапа.
Код CSS:
.body{ height:100%; padding:0; margin:0;}
.black_fon {
background:#333;
display:block;
position: fixed;
width:100%;
height:100%;
left: 0px;
top: 0px;
z-index:10;
}
.popup {
position: absolute;
z-index:20;
display:none;
background:#fff;
width:200px;
height:200px;
left:50%;
margin-left:-100px;
top:50%;
margin-top:-100px;
}
Для эмуляции свойства position: fixed, через conditional comments в отдельный файл для internet explorer 6.0 пропишем:
*html .black_fon{
top: expression($('.black_fon').scrollTop + "px");
position:absolute;
}
Тестовая страница.
Вот так, очень примитивно, можно настроить появление поп-апа, при этом затемнив весь остальной фон веб-страницы. Этот вариант работает во всех браузерах за исключением некоторых версий OPERA, где затемнение происходит на 100%.
Rss-подписка
Email
Re: Как при вызове поп-апа затемнить остальной фон сайта
Спасибца ;)
Re: Как при вызове поп-апа затемнить остальной фон сайта
Пожалуйста :)
Re: Как при вызове поп-апа затемнить остальной фон сайта
Хорошее красивое решение.
Re: Как при вызове поп-апа затемнить остальной фон сайта
$('.popup).fadeIn('slow') - помарка, забыли закрыть popup
Re: Как при вызове поп-апа затемнить остальной фон сайта
$('.black_fon).fadeTo(0, 0.4); - аналогично
Re: Как при вызове поп-апа затемнить остальной фон сайта
$('body').append(‘’); при копировании ’ - не заработает, нужно заменять на '
Re: Как при вызове поп-апа затемнить остальной фон сайта
.black_fon {
background-color:#333;
display:block;
position: fixed;
width:100%;
height:100%;
left: 0px;
top: 0px;
right: 0px;
bottom:0
z-index:10;
}
Забыли точку с запятой после боттом
Re: Как при вызове поп-апа затемнить остальной фон сайта
right: 0px;
bottom:0
- зачем? есть же top и left
Re: Как при вызове поп-апа затемнить остальной фон сайта
Евгений, большое спасибо. Замечания были по существу. Видимо я поспешил :). Код немного поправил и добавил тестовую страницу, где все можно проверить в действии.
Re: Как при вызове поп-апа затемнить остальной фон сайта
Можете подсказать!?а если есть необходимость вернуть все назад, то есть после нажатия на какую либо кнопку убрать затемнение, без перезагрузки страницы? очень надо:(
Re: Как при вызове поп-апа затемнить остальной фон сайта
а все, пасиб, разобрался:
$('.black_fon').remove();