Доброго времени суток возник такой вопрос.
В Цикле крутиться проверка существования файла. Если файл не существует выводим 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="laer1" z-index=0 left=200 top=100><center><img src=$i><BR>Подождите. Идет расчет...</center></div>"; $par=1; }
flush(); sleep(5);
}
echo "<div id="laer2" 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 == 1) { if(file_exists("file.htm")){ //echo "file.htm найден в текущем каталоге"; break; } $i="32-1.gif";
if ($par == 1){ } else { echo "<div id="laer1" z-index=0 left=200 top=100><center><img src=$i><BR>Подождите. Идет расчет...</center></div>"; $par=1; }
flush(); sleep(5);
}
echo "<div id="laer2" z-index=10 position:absolute;> <center> <table border="0" width="100%"style="background-color: #123333"><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>
<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 == 1) { if(file_exists("file.htm")){ //echo "file.htm найден в текущем каталоге"; break; } $i="32-1.gif";
if ($par == 1){ } else { echo "<div id= " lay1 " ><center><img src=$i><BR>Подождите. Идет расчет...</center></div>"; $par=1; }
flush(); sleep(5);
}
echo "<div id= " lay2 " onLoad= " hid() " >
<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> <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 == 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="div2" style=" DISPLAY: block"> <table border="0" width="100%" align="center" style="height: 100%"> <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 написал(а):
В принципе да, но первый вариант у меня не срабатывал.