[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вечный цикл - работа со слоями отображение
Toshax
Доброго времени суток возник такой вопрос.

В Цикле крутиться проверка существования файла. Если файл не существует выводим gif на страницу в 1 слое. После того, как файл появился нужно убрать картинку (сделать невидимой, отобразить второй слой поверх первого, ит.д) и вывести простой текст.

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

Код

<html>
<head>
</head>
<body>

<?php
set_time_limit(0);
$par = 0;
while (1 == 1) {
if(file_exists("file.htm")){
//echo "file.htm найден в текущем каталоге";
break;
}
$i="32-1.gif";

if ($par == 1){
} else {
echo "<div id=&quotlaer1&quot z-index=0 left=200 top=100><center><img src=$i><BR>Подождите. Идет расчет...</center></div>";
$par=1;
}

flush();
sleep(5);
 

}

echo "<div id=&quotlaer2&quot z-index=10 left=200 top=100><center>Расчет окончен</center></div>";
echo "<center>file.htm найден в текущем каталоге</center>";

//header('Location: http://test1.ru/forms2/1.php');
?>

</body>
</html>




Спустя 24 минуты, 38 секунд (5.06.2009 - 21:32) FatCat написал(а):
Див прозрачный, вот нижний и просвечивает через верхний.
Положите в див табличку с указанным явно цветом фона ячейки, а уже в ней текст - она будет непрозрачной и закроет картинку.

Спустя 38 минут, 8 секунд (5.06.2009 - 22:10) Toshax написал(а):
Цитата (FatCat @ 5.06.2009 - 18:32)
Див прозрачный, вот нижний и просвечивает через верхний.
Положите в див табличку с указанным явно цветом фона ячейки, а уже в ней текст - она будет непрозрачной и закроет картинку.

Сделал по вашей подсказке, но слои друг на друга не накладываются подскажите где ошибка

PHP
<html>
<
head>
</
head>
<
body>

<?
set_time_limit(0);
$par 0;
while (
== 1) {
if(
file_exists("file.htm")){ 
//echo "file.htm найден в текущем каталоге"; 
break;
}
$i="32-1.gif";

if (
$par == 1){
} else {
echo 
"<div id=&quotlaer1&quot z-index=0 left=200 top=100><center><img src=$i><BR>Подождите. Идет расчет...</center></div>";
$par=1;
}

flush();
sleep(5);
  

}

echo 
"<div id=&quotlaer2&quot z-index=10 position:absolute;>
<center>
<table border=&quot0&quot width=&quot100%&quotstyle=&quotbackground-color: #123333&quot><tbody><tr><td>
<BR><BR><BR><BR><BR>
Расчет окончен
<BR><BR><BR><BR><BR>
</td></tr></tbody></table>
</center></div>"
;
echo 
"<center>file.htm найден в текущем каталоге</center>";

//header('Location: http://test1.ru/forms2/1.php'); 
?>
<

Спустя 1 час, 5 минут, 51 секунда (5.06.2009 - 23:16) FatCat написал(а):
Цитата (Toshax @ 5.06.2009 - 23:10)
слои друг на друга не накладываются

Можно скриншотом или страничку где посмотреть?

Спустя 54 минуты, 53 секунды (6.06.2009 - 00:11) Toshax написал(а):
Скрин: Тут

Картинка и надпись "Подождите. Идет расчет" - 1 слой

"Расчет окончен" и "Файл сузествует" - второй слой.

Спустя 8 минут, 38 секунд (6.06.2009 - 00:20) FatCat написал(а):
Обоим леерам сделайте position: absolute и одинаковые координаты top и left, чтобы второй перекрыл первого. А то сейчас они друг за другом разместились.

Спустя 1 день, 21 час, 49 минут, 57 секунд (7.06.2009 - 22:10) Toshax написал(а):
Вообщем походу чего-то я не понимаю, но не получается.

PHP
<html>
<
head>
<
style type="text/css">
#lay1 {POSITION: absolute; TOP:300; LEFT: 500; Z-INDEX: 200; }
#lay2 {POSITION: absolute; TOP:300; LEFT: 500; Z-INDEX: 199;}
</style>

&
#60;script language="JavaScript">
function hid() {
 
NC = (document.layers);
 
IE = (document.all);
 
Opera = (document.getElementById);

if(
IE) eval('document.all["lay1"].style.visibility = "hidden"');
if(
NC) eval('document.layers["lay1"].visibility = "hidden"');
if(
Opera) eval('document.getElementById("lay1").style.visibility = "hidden"');
}
</script>

</head>
<body>

<?
set_time_limit
(0);
$par 0;
while (
== 1) {
if(
file_exists("file.htm")){ 
//echo "file.htm найден в текущем каталоге"; 
break;
}
$i="32-1.gif";

if (
$par == 1){
} else {
echo 
"<div id= &quot lay1 &quot ><center><img src=$i><BR>Подождите. Идет расчет...</center></div>";
$par=1;
}

flush();
sleep(5);
  

}

echo 
"<div id= &quot lay2 &quot onLoad= &quot hid() &quot >

<center>Расчет окончен <BR><BR><BR></center>
<center>file.htm найден в текущем каталоге</center>
</div>"
;

//header('Location: http://test1.ru/forms2/1.php'); 
?>
<

Спустя 10 часов, 32 минуты, 58 секунд (8.06.2009 - 08:42) glock18 написал(а):
1. А просто заменить содержимое одного блока другим не пробовал?

HTML
function hid() {
NC = (document.layers);
IE = (document.all);
Opera = (document.getElementById);

if(IE) eval('document.all["lay1"].style.visibility = "hidden"');
if(NC) eval('document.layers["lay1"].visibility = "hidden"');
if(Opera) eval('document.getElementById("lay1").style.visibility = "hidden"');
}


Вот это что-то ужасно пугающее.
Почему бы все это не заменить на
HTML
function hid() {
document.getElementById("lay1").style.visibility = "hidden";
}

??

Спустя 3 часа, 46 минут, 24 секунды (8.06.2009 - 12:29) Toshax написал(а):
Так там проверка браузера шла. Я просто в стандартах не силен. В общем всем спасибо написал рабочий вариант вполне устраивает осталось немного марафет навести. Выкладываю готовый пример может кому интересно будет или кто столкнется.
PHP
<html>
<
head>
&
#60;script language="JavaScript" type="text/javascript">
function show(divid1,divid2)
{
document.getElementById(divid1).style.display="none";
document.getElementById(divid2).style.display="block";

}
</script>
</head>
<body onload="show('div1','div2');">

<div id="div1" style="DISPLAY: block">


<table border="0" width="100%" align="center" style="height: 100%">
    <tbody>
        <tr>
            <td>
                <center><img src="32-1.gif"  border=0><br /><br />Подождите идет расчет.</center> <br />
            </td>
        </tr>
    </tbody>
</table>
</div>

<?
$vis
=0;
set_time_limit(0);
while (
== 1) {
if(
file_exists("file.htm")){ 
//echo "file.htm найден в текущем каталоге"; 
break;
}
$i="32-1.gif";
if (
$vis == 1){
} else {
$vis 1;
}

flush();
sleep(3);

}
echo 
"<div id=&quotdiv2&quot style=&quot DISPLAY: block&quot>
<table border=&quot0&quot width=&quot100%&quot align=&quotcenter&quot style=&quotheight: 100%&quot>
    <tbody>
        <tr>
            <td>
                <br /><br /><br /><br /><br /><br /><br />
<br /><center>Расчет выполнен.</center><br /><br />
            </td>
        </tr>
    </tbody>
</table>
</div>"
;

?>
<


Оказывается есть такое прекрасное свойство style.display вот с ним собственно и поигрался.

Спустя 13 минут, 38 секунд (8.06.2009 - 12:43) glock18 написал(а):
Насколько я понимаю, между display: none и visibility: hidden для блоков с position: absolute не имеют различия.


Спустя 1 час, 38 минут, 46 секунд (8.06.2009 - 14:21) Toshax написал(а):
В принципе да, но первый вариант у меня не срабатывал.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.