Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Один слой поверх другого..
 
 автор: Jaroslav   (04.07.2014 в 15:33)   письмо автору
3.8 Кб
 
 

Подскажите, как реализовано наложение одного слоя поверх другого, например, "вконтакте"?
Когда кликаем, например, по рисункам, видео.. и.т.д. Задняя область затемняется, поверх выводится какая-то информация. При этом если информации много, то появляется вертикальная полоса прокрутки. Давайте сделаем какое-то универсальное решение? Прикрепляю свой пример. Минус в том, что если окно большое, то не закрывается при клике по нижним областям... Может, предложите какие-то другие более хорошие варианты.

  Ответить  
 
 автор: elenaki   (04.07.2014 в 20:48)   письмо автору
 
   для: Jaroslav   (04.07.2014 в 15:33)
 

Зачем изобретать велосипед? Все уже давно придумано - lightbox, litebox, thickbox, highslide и пр.

  Ответить  
 
 автор: Jaroslav   (04.07.2014 в 21:05)   письмо автору
 
   для: elenaki   (04.07.2014 в 20:48)
 

Мда? Как в lightbox закрыть окно про клике по любой области вне контента? Как настроить отступ сверху? Будет ли вертикальная полоса прокрутки если область большая по высоте?
___
речь не про фотогалереи и увеличение рисунков..

  Ответить  
 
 автор: iggipop   (04.07.2014 в 23:03)   письмо автору
 
   для: Jaroslav   (04.07.2014 в 21:05)
 



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
<style>
.over {
display:none;
top:0;
left:0;
background: rgba(0, 0, 0, 0.6);
height:100%;
position:fixed;
overflow:auto;
width: 100%;
z-index:1000;
}
.c {
    margin:auto;
    width:500px;
    height:2000px;
    border:1px solid red;
}
</style>
</head>

<body>
<div class="show">ЖМИ</div>
<div class="over">
  <div class="c"></div>
</div>
<script>
$(function() {
 $('.show').click(function(){
     
   $('body').css('overflow','hidden');     
   $('.over').css('display', 'block');
     
  });     
});
$(function() {
 $('.over').click(function(){
     
   $('body').css('overflow','auto');     
   $('.over').css('display', 'none');
     
  });     
});
</script>
</body>
</html>


  Ответить  
 
 автор: Jaroslav   (05.07.2014 в 10:19)   письмо автору
 
   для: iggipop   (04.07.2014 в 23:03)
 

Как просто. Большое спасибо, этот вариант получше моего ))
_____
"background" - лучше задавать в виде: background: #cccccc;
Или указать прозрачный фоновый рисунок png. Иначе в IE8.0 - не работает.

А не подскажите, как сделать так, чтобы при клике внутри слоя "<div class="c"></div> " - окно не закрывалось?

  Ответить  
 
 автор: iggipop   (05.07.2014 в 15:27)   письмо автору
 
   для: Jaroslav   (05.07.2014 в 10:19)
 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
<style>
.over {
display:none;
position:fixed;
top:0;
left:0;
height:100%;
width: 100%;
background: rgb(0, 0, 0);
opacity:0.6;
filter: alpha(opacity=60);
overflow:auto;
z-index:1000;
}
.c {
margin:auto;
width:500px;
padding:15px;
background:#FFF;
}
</style>
</head>

<body>
<div class="show">ЖМИ</div>
<div class="over">
  <div class="c">
Представители рода — наземные травянистые растения с колючим стеблем и листьями.
<p>
Многочисленные придаточные корни развиваются прямо в пазухах листьев, поглощая скапливающуюся там влагу.
</p>
<p>
Листья мясистые суккулентные (запасающие влагу), широколинейные, по краям колючезубчатые, длиной до 80 см[1], покрыты толстой эпидермой. Под эпидермой размещается слой крупных клеток водозапасающей ткани, в которой в период дождей накапливается влага. Внутри листа находится сеть воздушных каналов, окружённых хлорофиллоносными клетками. Таким образом, процессы газообмена у ананаса могут происходить даже при закрытых устьицах[2].
</p>
Когда розетка листьев сформирована, точка роста образует цветонос длиной до 60 см, густо покрытый обоеполыми цветками. Цветение длится 15—20 дней, и в результате образуется похожее на шишку мощное золотисто-жёлтое соплодие, представляющее собой множество завязей, сросшихся с прицветниками (кроющими листьями цветков) и осью соцветия[1]. На верхушке всегда развивается группа вегетативных листьев — «хохолок»[2]. 
Представители рода — наземные травянистые растения с колючим стеблем и листьями.
<p>
Многочисленные придаточные корни развиваются прямо в пазухах листьев, поглощая скапливающуюся там влагу.
</p>
<p>
Листья мясистые суккулентные (запасающие влагу), широколинейные, по краям колючезубчатые, длиной до 80 см[1], покрыты толстой эпидермой. Под эпидермой размещается слой крупных клеток водозапасающей ткани, в которой в период дождей накапливается влага. Внутри листа находится сеть воздушных каналов, окружённых хлорофиллоносными клетками. Таким образом, процессы газообмена у ананаса могут происходить даже при закрытых устьицах[2].
</p>
Когда розетка листьев сформирована, точка роста образует цветонос длиной до 60 см, густо покрытый обоеполыми цветками. Цветение длится 15—20 дней, и в результате образуется похожее на шишку мощное золотисто-жёлтое соплодие, представляющее собой множество завязей, сросшихся с прицветниками (кроющими листьями цветков) и осью соцветия[1]. На верхушке всегда развивается группа вегетативных листьев — «хохолок»[2].
Представители рода — наземные травянистые растения с колючим стеблем и листьями.
<p>
Многочисленные придаточные корни развиваются прямо в пазухах листьев, поглощая скапливающуюся там влагу.
</p>
<p>
Листья мясистые суккулентные (запасающие влагу), широколинейные, по краям колючезубчатые, длиной до 80 см[1], покрыты толстой эпидермой. Под эпидермой размещается слой крупных клеток водозапасающей ткани, в которой в период дождей накапливается влага. Внутри листа находится сеть воздушных каналов, окружённых хлорофиллоносными клетками. Таким образом, процессы газообмена у ананаса могут происходить даже при закрытых устьицах[2].
</p>
Когда розетка листьев сформирована, точка роста образует цветонос длиной до 60 см, густо покрытый обоеполыми цветками. Цветение длится 15—20 дней, и в результате образуется похожее на шишку мощное золотисто-жёлтое соплодие, представляющее собой множество завязей, сросшихся с прицветниками (кроющими листьями цветков) и осью соцветия[1]. На верхушке всегда развивается группа вегетативных листьев — «хохолок»[2]. 
  </div>
</div>
<script>
$('.c').click(function(event) {
event.stopPropagation();
});
$(function() {
 $('.show').click(function(){
     
   $('body').css('overflow','hidden');     
   $('.over').css('display', 'block');
     
  });     
});
$(function() {
 $('.over').click(function(){
     
   $('body').css('overflow','auto');     
   $(this).css('display', 'none');
     
  });     
});
</script>
</body>
</html> 

  Ответить  
 
 автор: Jaroslav   (05.07.2014 в 17:08)   письмо автору
 
   для: iggipop   (05.07.2014 в 15:27)
 

Благодарю.

  Ответить  
 
 автор: iggipop   (04.07.2014 в 23:23)   письмо автору
 
   для: Jaroslav   (04.07.2014 в 21:05)
 

и кстати там тоже во всяких плагинах есть css и еще настройки есть.

  Ответить  
 
 автор: Jaroslav   (05.07.2014 в 10:23)   письмо автору
 
   для: iggipop   (04.07.2014 в 23:23)
 

знаю, что есть. Но они неудобные )) Да и не хочется разную ерунду подключать.
Ваш пример (выше) замечательный. То, что надо.

  Ответить  
 
 автор: confirm   (07.07.2014 в 02:42)   письмо автору
 
   для: Jaroslav   (05.07.2014 в 10:23)
 

Пример выше безграмотный, не повторяйте таких глупостей. Изучайте, для "просто написать", это не сложно.

  Ответить  
 
 автор: iggipop   (07.07.2014 в 03:45)   письмо автору
 
   для: confirm   (07.07.2014 в 02:42)
 

обоснуйте

  Ответить  
 
 автор: confirm   (07.07.2014 в 03:48)   письмо автору
 
   для: iggipop   (07.07.2014 в 03:45)
 

А что обосновывать? По ссылке, изучать, вникать, а не писать конструкции, о которых у вас весьма поверхностные понятия, судя по вашему коду.

  Ответить  
 
 автор: iggipop   (07.07.2014 в 04:19)   письмо автору
 
   для: confirm   (07.07.2014 в 03:48)
 

уважаемый
вместо того чтоб "отсылать" вникать во все что не поподя особенно если не "иметь" системы представлений, а представления у всех различны, шину можно накачать используя легкие, ручной нанос, гидравлическую систему....

могли быт и написать что-то хотя бы вроде этого

$(function() {
 $('.show').click(function(){
  $('.over').css('display', 'block');
});     
});
$('.over').click(function(e){
    if ($(e.target).parents().filter('.over:visible').length != 1) {
        $('.over').hide();
    }
});

  Ответить  
 
 автор: confirm   (07.07.2014 в 04:48)   письмо автору
 
   для: iggipop   (07.07.2014 в 04:19)
 

Хотите писать код? Будьте добры изучать язык. Жить на подсказках, это не лучший метод, а читать и изучать предмет, это не унижение.

Вы влепили в страницу целую портянку, которая будучи обрамленная тегом PRE делает этот пост трудно читаемым, а хватило бы и одного символа в строках. Не из приятных читать такие посты и разбираться в них. Я просто вижу, что вместо кода у вас простое перечисление конструкций, отсюда и замечание. Что вы там пытаетесь вторым кодом сделать, мне не ведомо, а вот его то бы надо было как раз и форматировать.

  Ответить  
 
 автор: iggipop   (07.07.2014 в 05:12)   письмо автору
 
   для: confirm   (07.07.2014 в 04:48)
 

реализовать закрытие блока можно по-разному.
как обработать нажатие сугубо на самом элементе (который закрывают не задействовав дочерний) так и тупо отменить распространения события при нажатии на дочерний (stopPropagation())

не понимаю в чем ваша блин проблема....!
давайте поспорим что первый мною указанный вариант "перечисление конструкций", любитель вы наш написания кода.... а давайте класс забабацаем на все случаи жизни, а?
давайте еще расскажите как не хорошо .css использовать в jq и все прочее
простой пример - нажали на элемент - показали блок - нажали на блок - скрыли блок - нажали на дочерний - игнорировали событие.
демогог блин.

  Ответить  
 
 автор: confirm   (07.07.2014 в 05:20)   письмо автору
 
   для: iggipop   (07.07.2014 в 05:12)
 

Вот что "демагог" - дважды объявлять $(function() { });, это либо глупость, либо полное непонимание, что это такое. И при этом, при двойном объявлении, навешивать обработчик ВНЕ onload, ну это вообще...

Это что код по вашему? Это просто незнание предмета и полная безграмотность. Все остальные рассуждения о CSS и прочем, это уже просто базар на фоне таких ляпов (в JS нет классов, да будь это вам известно).

  Ответить  
 
 автор: iggipop   (07.07.2014 в 07:28)   письмо автору
 
   для: confirm   (07.07.2014 в 05:20)
 

дважды объявлять $(function() { });, это либо глупость, либо полное непонимание, что это такое.

да ладна http://www.learningjquery.com/2006/09/multiple-document-ready/
ну соглашусь что избыточно, и поправимо
можете считать, что подгружаются несколько js с .ready
и у вас какие то крайности - либо дурак либо тупой. я даже не знаю что выбрать.

навешивать обработчик ВНЕ onload

а вот здесь по подробнее.

  Ответить  
 
 автор: confirm   (07.07.2014 в 12:04)   письмо автору
 
   для: iggipop   (07.07.2014 в 07:28)
 

Ну если вы не дурак, то значит сами способны проанализировать, то чего написали.

  Ответить  
 
 автор: iggipop   (07.07.2014 в 12:40)   письмо автору
 
   для: confirm   (07.07.2014 в 12:04)
 

мне не понятна формулировка "вне onload"
напишите уже

  Ответить  
 
 автор: confirm   (07.07.2014 в 13:31)   письмо автору
 
   для: iggipop   (07.07.2014 в 12:40)
 

А вы еще хотели, чтобы я обосновал.

Клиент дело тонкое, Петруха, и уж коли хотите писать, то полезно бы знать, что jQuery, это не подмена JS, и написана не специально для "тупых", а для понимающих процессы на клиенте, и знание первоисточника, это более даже, чем желательно.
Мне, дураку, видимо не получится объяснить, а посему изучайте:
http://javascript.ru/tutorial/events
http://jquery.page2page.ru/index.php5/%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA_%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%B0_DOM

И когда изучите, тогда и попробуйте для себя обосновать, почему сперва установка обработчика прописана вне события загрузки документа, что может работать только при определенных условиях, а далее каждая установка "любовно" обрамлена этим. Я лишь могу оценивать это как непонимание того, что вы написали. Все.

  Ответить  
 
 автор: iggipop   (07.07.2014 в 13:46)   письмо автору
 
   для: confirm   (07.07.2014 в 13:31)
 

мдэ.........................
это что-то из серии "почему без шапки".

сами знаете function(){} который у меня аж 2 раза! = .ready()
так же код вставлен в футер страницы из известных соображений не касающихся jq

Замечание: конечно, если подготовительные действия требуют наличия таких элементов как картинки, правильным будет полагаться на событие load. Однако, имейте ввиду, что одновременное использование .ready() и <body onload="..."> приведет к ошибке. Если вам необходимо использовать оба события, используйте метод библиотеки jQuery .load(), вместо <body onload="...">. 


свое " может работать только при определенных условиях" оставьте себе.особенно отталкиваясь от "описания" задачи ТС.
работать оно будет всегда.
такое ощущение что вы пытаетесь поднимать свой авторите за счет опускания других.
извините но такое ощущение.... реально "почему без шапки"..... если знаете этот анекдот.
успехов.

  Ответить  
 
 автор: confirm   (07.07.2014 в 13:51)   письмо автору
 
   для: iggipop   (07.07.2014 в 13:46)
 

Изучайте, а не порите чепухи, а тем более не предлагайте такой бред кому либо.

  Ответить  
 
 автор: iggipop   (07.07.2014 в 14:01)   письмо автору
 
   для: confirm   (07.07.2014 в 13:51)
 

я то смотрю 2/3 инета кишит такой "чушью"
отродясь onload в jq не видел
расскажите еще что мой обработчик в конце файла загрузится раньше чем див с надписью "нажать"
вы приколист.
ищите дальше свои "специальные" условия в которых оно типа только и работает.
вы жёсткий педант очевидно же.
скажите, а вас не беспокоит когда предметы лежать не симметрично ? когда числа не заканчиваются на 0 и 5 ?

  Ответить  
 
 автор: confirm   (07.07.2014 в 14:10)   письмо автору
 
   для: iggipop   (07.07.2014 в 14:01)
 

>отродясь onload в jq не видел

Это потому, что вы даже понятия не имеете, что такое jQuery.

>вы приколист.

Воистину нужно быть приколистом, чтобы писать код так, как вы его пишите. И аргументы ваши при этом, это пустота. Читая понос словесный, что вы тут пишите о симметричности и ..., могу лишь предположить, что вы еще дитя.

Учите Javascript и только потом беритесь за jQuery и прочите библиотеки. Пишите код как логическую структуру, а не как песнь чукчи. Короче, нужно изучать и понимать, иначе не предлагайте бедлама, это как минимум смешно.

Я это говорю не потому, чтобы вас пригвоздить, и не растопыриваю пальчики, что вы тут делаете, а потому, что это в ваших же интересах.

  Ответить  
 
 автор: iggipop   (07.07.2014 в 14:24)   письмо автору
 
   для: confirm   (07.07.2014 в 14:10)
 

если вы не уяснили - мне понятно о чем речь и как "нужно"
далее...
могли бы писать примеры в "идеале" и не стоит разводить панику изза отсутсвия некоторых мелочей.
вообще хорошо было бы чтоб задающие вопросы вообще хоть что-то понимали в предмете вопросаrnи если им не написали все с рюшечками - извините - на копировали вставили - работает - пусть вникают. а людей которые "создают" используя тупо "как подсказали" - никто не уважает.

у вас подход примерно такой - 1 раз и навсегда - вы вообще чем зарабатываете?
написанием "охренных сайтов" по всем правилам???
забавно.
видимо вы работаете в студии артемия лебедева чей слоган все объясняет "долго - дорого - ох... но"
клиент платит не за логистику в коде. люди пишут порталы - "как умеют" - люди покупают движки - "как сделали" - и получают деньги за предоставления информации или торговлю.
послушав вас - главное это не результат и прибыль - а искусно преподнести код, который нафиг никому ненужен. вы наверно себя сравниваете с художником - наслаждаясь каждой строкой своего кода.....

ну чтож удачи.
PS и реально уважаемый Вы очень долго будете искать ту ситуацию при которой обработчик загрузится ранее DOM элементов.... более того в документации все объяснено когда что используют. поэтому лечить меня что это "не рабочий" код не надо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования