Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   модальное окно div'ом (https://javascript.ru/forum/misc/29161-modalnoe-okno-div%27om.html)

codingfighter 17.06.2012 22:34

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

Deff 17.06.2012 22:39

codingfighter,
На время всплытия окна запретите scroll для body

document.body.style.overflow="hidden"

codingfighter 17.06.2012 23:05

Сделал. Но если наш всплывающий div не помещается в рабочую область, сролл не образуется. Как это исправить, то есть как сделать скролл только на наше модальное окно?

melky 17.06.2012 23:10

Цитата:

Сообщение от Deff (Сообщение 182167)
codingfighter,
На время всплытия окна запретите scroll для body

document.body.style.overflow="none"

Возможно, Вы имели в виду hidden.
http://htmlbook.ru/css/overflow

Deff 17.06.2012 23:10

codingfighter,
Цитата:

Сообщение от codingfighter
Сделал. Но если наш всплывающий div не помещается в рабочую область, сролл не образуется. Как это исправить, то есть как сделать скролл только на наше модальное окно?

Не понял - поясните на примере -эскизе

Deff 17.06.2012 23:11

Цитата:

Сообщение от melky
озможно, Вы имели в виду hidden.

Спс - поправил

codingfighter 17.06.2012 23:21

ну откройте вконтакте, нажмите на просмотр фото, смотрите, скролл не исчезает полностью, он просто становится меньше. Теперь уменьшите высоту окна браузера. Можно скроллить. А здесь скролл вообще исчезает.

Deff 17.06.2012 23:38

codingfighter,
Установите ширину затенения
height:100%;
width:100$;
position:fixed;


Тогда оно будет всегда в размер экрана

codingfighter 18.06.2012 00:02

Нет, вы не поняли. У меня это уже прописано. Экран когда маленький, а точнее высота рабочей области, то появляется скролл (вконтакте). Мне нужна такая же функция. А если поставить body overflow hidden то я так понял скролл окна вообще исчезает. А если поставить на элемент overflow scroll то скролл обазуется вокруг самого элемента.

codingfighter 18.06.2012 00:05

хмм, а может поставить overflow scroll на затенение :)
но тогда скролл будет всегда отображаться...

codingfighter 18.06.2012 01:04

никто чтоли не понял что я имею в виду ? (

Deff 18.06.2012 01:10

Цитата:

Сообщение от codingfighter
никто чтоли не понял что я имею в виду ? (

codingfighter,
Установите ширину затенения

height:100%;
width:100%;
min-height:400px;
min-width:300px;

position:fixed;

Добавьте к стилю затенения -красным будет вам скролл при мелких экранах

codingfighter 18.06.2012 01:22

нет, не появился...

codingfighter 18.06.2012 01:27

http://sudo.in/node/119

Deff 18.06.2012 01:27

codingfighter,
:yes:

Ccылку на рабочий пример дайте - я поправлю

codingfighter 18.06.2012 01:51

я уже устал.. вы поняли как этот скролл реализовать? просто объясните в 2-х словах, а я уже подкорректирую.

Deff 18.06.2012 01:56

codingfighter,
Гы я тож устал - мож завтра все сложится...

codingfighter 18.06.2012 02:07

Ага, походу начинаю понимать.. это получается мне придется основной контент в один div ложить, а модальное под ним располагать? эх... значит изменение свойства body не катит. ладно, надо заставить себя поспать ((

Dim@ 18.06.2012 09:39

codingfighter,
надо в body изменить высоту и ширину на ввысоту и ширину модального окна и возвращать по закрытии

dmitriymar 18.06.2012 09:53

использовать медиа запросы css3,либо скриптом менять размеры,шрифты в зависимости от размеров экрана,а не придумывать велосипедоинтерфейсы

codingfighter 18.06.2012 11:43

Dim@ можешь пожалуйста привести пример кода?

Aetae 18.06.2012 11:56

Если я правильно понял что вы хотите сделать то это глупости.)
Делайте как нормальные люди - в случае длинного текста скролл внутри появившегося окна.

codingfighter 18.06.2012 12:16

значит вконтакте делали ненормальные люди? вполне возможно...)

ну и как посоветуете сделать скролл внутри появившегося окна?

Dim@ 18.06.2012 12:21

codingfighter,
вы хотели пример кода вот он
естественно вам придется много доработать из этого кода
<html>
<head>
<meta charset='utf-8'>
<title></title>
</head>
<style>
body{
height:3000px
}
.fog{
positition:absolute;
left:0px;
top:0px;
width:100%;
height:100%;
background-color:ffa;
}
.div{
background-color:f0f;
}
</style>
<body>
<div id='div' style='display:none'>
<div class='fog'><div class='div'>Окно</div></div>
</div>
<input value='Открыть' onclick='Okno();if(ok == true){ok = false}else{ok = true}' type='button'>
<script type='text/javascript'>
ok = true;
function Okno(){
 if (ok == true){
  document.getElementById('div').style.display = 'block';
  document.body.style.height = 100 + 'px';
  document.body.style.width = 100 + 'px';
 }
 else{
 document.getElementById('div').style.display = 'none';
  document.body.style.height = 3000 + 'px';
  document.body.style.width = 3000 + 'px';
 }
}
</script>
</body>
</html>

codingfighter 18.06.2012 12:23

Это ничего не дало. Наверное у вас работает потому что пустое body

codingfighter 18.06.2012 12:27

пост удален...

Dim@ 18.06.2012 12:28

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

melky 18.06.2012 13:57

codingfighter, прошу смотреть пой пост в FAQ.

http://javascript.ru/forum/showpost.php?p=182267&postcount=6

подобный вопрос задают уже третий раз (если не больше)

ЗЫ внутреннее линкование не работает.

FlyerDell 03.09.2013 15:07

Цитата:

Сообщение от Deff (Сообщение 182167)
codingfighter,
На время всплытия окна запретите scroll для body

document.body.style.overflow="hidden"

Спасибо! Намотал на ус))) Мне как раз пригодился именно этот метод.


Часовой пояс GMT +3, время: 17:10.