Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

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

 

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

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

тема: Наложение одного окна на другое
 
 автор: Jaroslav   (13.08.2012 в 17:19)   письмо автору
 
 

Добрый день.

подскажите, пожалуйста, как они это сделали?

http://vk.com/shurlepov_michail?z=photo25341591_287097178%2Fphotos25341591

1) скролл перемещает окно, которое сверху
2) нижнее окно при этом находится на одном месте.

Приведите, пожалуйста, простейший пример данной реализации (но чтобы работало во всех браузерах). Я правильно понимаю, что это сделано чисто на дивах и стилях без использования каких-либо библиотек (типа jqwery). Кто-нибудь подобное делал?


У меня пока такой вариант:




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script language="JavaScript" type="text/javascript">
function photo(x) {
if (x==1) { 
document.getElementById('viewerWrap').style.position = 'fixed';
document.getElementById('viewerWrap').style.display = 'block';
document.getElementById('viewerWrap').style.zIndex = '8000';
document.getElementById('topPanel').style.position = 'fixed';
document.getElementById('Main').style.background = 'url(vid/bg_black_80.png) left top repeat';
}

else {
document.getElementById('viewerWrap').style.position = 'relative';
document.getElementById('viewerWrap').style.display = 'none';
document.getElementById('viewerWrap').style.zIndex = '0';
document.getElementById('topPanel').style.position = 'relative';
document.getElementById('Main').style.background = 'url(vid/blank.png) left top no-repeat';
}}
</script>

<style>
#viewerWrap {position:relative; top: 0; left: 0; right: 0;  z-index:0; display:none; overflow-y:scroll; padding:0px; }
#viewerWrap .viewerPage { width: 740px; background: #fff; box-shadow: 0 0 5px rgba(0,0,0,.2); margin: 30px auto 30px; }
#topPanel {position:relative; }
</style>

</head>
<body id="Main">

<div id="topPanel">
33333333333333333333333333333333333 3<br/><br/>
<a href="javascript:void(null)"  onClick="photo('1');">CLICK</a>
<br/><br/>
33333333333333333333333333333333333 3<br/><br/>
</div>

<div style="display:none; height:100%;" id="viewerWrap">
<div class="viewerPage">
<a href="javascript:void(null)"  onClick="photo('2');" style="float:right;">CLOSE &nbsp;</a>
111<br />111<br />111<br />111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br />
111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br />
111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br />
111<br />111<br />111<br />111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br />
111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br />
111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br />
111<br />111<br />111<br />111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br />
111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br />
111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />111<br /> 111<br />111<br />11177<br />
</div>
</div>

</body></html>




В IE - видно 2 полосы прокрутки..
Как исправить, чтобы был идеальный вариант?

С уважением.

  Ответить  
 
 автор: ЯСА   (13.08.2012 в 17:40)   письмо автору
 
   для: Jaroslav   (13.08.2012 в 17:19)
 

Зашёл по ссылке - ничего особливого не увидел.
Приложите здесь скриншот, на котором в Paint'e обозначьте - что вы полагаете "нижним окном" (обведите его в красный кружок и подпишите); и что такое, по-вашему, "окно сверху (также обведите, например, синим кружком, и подпишите).

  Ответить  
 
 автор: Jaroslav   (13.08.2012 в 17:47)   письмо автору
119.5 Кб
 
   для: ЯСА   (13.08.2012 в 17:40)
 

Приведён же пример кода.. По нему должно быть всё понятно..
В аттаче пример. Затемнённое - это нижнее окно..
Тут смысл в том, что нужна не какая-то фотогалерея на jqwery, которую потом каким-то макаром допиливать, а именно самописный скрипт (см. выше).
В верхнее окно (которое в аттаче на белом фоне) можно писать любой контент (комментарии, например). При этом они должны тянуться ниже, а справа должна появляться горизонтальная полоса прокрутки, которая прокручивает верхнее (незатемненное) окно.

никто не сталкивался?

  Ответить  
 
 автор: ЯСА   (13.08.2012 в 22:50)   письмо автору
 
   для: Jaroslav   (13.08.2012 в 17:47)
 

Ваш код решает какую-то иную задачу.

В общем, всё просто.

1. СНАЧАЛА текущему document.body устанавливаете style.overflow = 'hidden' (и это - самое ГЛАВНОЕ в данной задаче).

2. ЗАТЕМ определяете его новый document.body.offsetWidth (он станет больше за счёт исчезновения вертикального скроллбара)

3. Ну а потом, зная ширину и высоту (document.body.offsetHeight) тела документа делаете минимум два DIV'a, вложенные один в другой. Внешний DIV - с позицией absolute на всю ширину и высоту экрана + большой z-Index + style.overflow = 'auto'
Ну а во внутреннем помещаете картинку и прочее. Если высота контента внутреннего DIV'a будет больше высоты внешнего (которая равна высоте экрана), то у внешнего DIV'a появится нужный вам вертикальный скролл как раз на месте бывшего вертикального скролла тела документа.

4. Чтобы добиться изменения прозрачности (то, что вы назвали "затемнением"), помещаете внутрь внешнего DIV'a ещё два (или три) - слева от центрального DIV'a с контентом, справа и снизу (по необходимости). Именно у них и будете менять свойство opacity для "затемнения"/"осветления" (для MSIE - через свойство стиля filter)..

5. Соответственно, по "закрытии" всей этой конструкции возвращаете телу документа document.body.style.overflow = 'auto'

А все эти ваши position = 'fixed' - здесь абсолютно не нужны...

  Ответить  
 
 автор: Jaroslav   (13.08.2012 в 23:12)   письмо автору
991 байт
 
   для: ЯСА   (13.08.2012 в 22:50)
 

Спасибо за ответ.

Несколько исправленный вариант в аттаче (может кому пригодится).
Решает поставленную задачу, проверен во всех современных браузерах.
В IE7.0 - убрана 2-я полоса прокрутки.

Ваш вариант, к сожалению, сложно заценить, т.к. не видно html кода.

  Ответить  
 
 автор: ЯСА   (13.08.2012 в 23:42)   письмо автору
 
   для: Jaroslav   (13.08.2012 в 23:12)
 

Ну вот, вы и сами дошли до того, чтобы убрать scroll.

Плохо только, что вы воспользовались атрибутом SCROLL, а не свойством стиля overflow.

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

Ну и по поводу position: fixed -- MSIE версий ниже 7-й этого дела не поймут.
Потому лучше использовать absolute - ущерба скрипту не будет.
-----

И на всякий случай - вместо многочисленных "троек" для "набора высоты контента" в примерах много проще использовать любой блочный тег со style="height: 345%".

  Ответить  
 
 автор: Jaroslav   (13.08.2012 в 23:48)   письмо автору
 
   для: ЯСА   (13.08.2012 в 23:42)
 

с "overflow" - не получилось.

  Ответить  
 
 автор: ЯСА   (14.08.2012 в 01:27)   письмо автору
 
   для: Jaroslav   (13.08.2012 в 23:48)
 

В строке #12 вашего кода замените scroll = 'none' на style.overflow = 'hidden'
Аналогично в строке #21 ваш scroll = 'yes' на style.overflow = 'auto'

  Ответить  
 
 автор: Jaroslav   (14.08.2012 в 09:45)   письмо автору
 
   для: ЯСА   (14.08.2012 в 01:27)
 

------------------------------------
В строке #12 вашего кода замените scroll = 'none' на style.overflow = 'hidden'
Аналогично в строке #21 ваш scroll = 'yes' на style.overflow = 'auto'
------------------------------------

при этом варианте в IE7.0 - остаётся 2 полосы прокрутки (вертикальных...)


------------------------------------
Ну и по поводу position: fixed -- MSIE версий ниже 7-й этого дела не поймут.
Потому лучше использовать absolute - ущерба скрипту не будет.
------------------------------------

при этом варианте в FireFox 14.0.1 - работает некорректно.

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

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