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

HTML+CSS+JavaScript

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

 

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

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

тема: Синхронно мигающие gif'ы
 
 автор: Nana   (06.10.2007 в 22:17)   письмо автору
 
 

Здравствуйте, уважаемые форумчане!

У меня такая проблема: нужно чтоб надпись мигала одновременно со стрелочкой. Можно было бы сделать одну анимированную картинку - и все. Но дело в том, что стрелка и надпись находятся в разных углах окна, и расстояние между ними соответственно будет увеличиваться при растягивании/сужении окна, поэтому делаю 2 картинки. Но они мигают не одновременно, а как им вздумается!
Скажите пожалуйста, эта задача вообще решаема? Можно ли два gif'а заставить вести себя синхронно? Если да - то как?

Извините, если такой вопрос уже был, но я ничего похожего не нашла.
Заранее спасибо :)

   
 
 автор: bronenos   (07.10.2007 в 00:11)   письмо автору
 
   для: Nana   (06.10.2007 в 22:17)
 

а как вы это делаете?

   
 
 автор: Nana   (07.10.2007 в 00:27)   письмо автору
 
   для: bronenos   (07.10.2007 в 00:11)
 

Ну просто есть обычная таблица html, там 2 ячейки. В одной мигающая надпись, в другой (маленькой) - мигающая стрелка.
Может, вообще подход неправильный?

   
 
 автор: sim5   (07.10.2007 в 03:51)   письмо автору
 
   для: Nana   (07.10.2007 в 00:27)
 

Ложите в эти ячейки две картики (не GIF-анимацю), а с помощью JS скрываете/показываете их по интервалу.

   
 
 автор: Nana   (08.10.2007 в 02:23)   письмо автору
 
   для: sim5   (07.10.2007 в 03:51)
 

А скрывать картинку через свойство visibility? То есть написать функцию, которая при загрузке картинок будет скрывать/показывать их? Я просто в js ничего не понимаю...
И как установить интервал?

   
 
 автор: bronenos   (08.10.2007 в 06:01)   письмо автору
 
   для: Nana   (08.10.2007 в 02:23)
 

object.style.visibility + setInterval

   
 
 автор: Nana   (08.10.2007 в 17:28)   письмо автору
 
   для: bronenos   (08.10.2007 в 06:01)
 

Одну картинку сукрыть удалось. А как к двум одновременно обратиться? Они же в разных ячейках.

   
 
 автор: sim5   (08.10.2007 в 17:35)   письмо автору
 
   для: Nana   (08.10.2007 в 17:28)
 

Так же как и к первой, вы функцией это делаете?

   
 
 автор: Nana   (08.10.2007 в 19:09)   письмо автору
 
   для: sim5   (08.10.2007 в 17:35)
 

Да, вот так:


<script language="JavaScript">
<!--//
function hide()
{
document.getElementById("pic1").style.visibility='hidden';
}
//-->
</SCRIPT>

<img src="..." id=pic1 onload=hide()>



Если я для второй так же пропишу, они же не одновременно будут скрываться, а как же тогда запустить одновременное мигание?

   
 
 автор: sim5   (08.10.2007 в 19:49)   письмо автору
 
   для: Nana   (08.10.2007 в 19:09)
 

Так у вас ничего мигать не будет, вы просто скрыли картинку и все. Можно так:


<head>
<script>
function hide() { 
var p1 = document.getElementById("pic1").style;
var p2 = document.getElementById("pic2").style;
if (p1.visibility=='hidden') { 
  p1.visibility='visible';
  p2.visibility='visible';
 } else {  
  p1.visibility='hidden';
  p2.visibility='hidden';
 }  
}
setInterval("hide()", 500);
</script>
</head>

<body onload="hide()">
<img src="name.gif" id="pic1" style="visibility: hidden;">
<img src="name.gif" id="pic2" style="visibility: hidden;">
</body>

В строке setInterval("hide()", 500); - число указывающее перид показа/скрытия изображения, подберите его приемлемым для вас.

   
 
 автор: Nana   (08.10.2007 в 20:30)   письмо автору
 
   для: sim5   (08.10.2007 в 19:49)
 

Спасибо! Все заработало. Появляются они не одновременно, но потом начинают синхронно мигать, так что все ок!

   
 
 автор: sim5   (08.10.2007 в 20:36)   письмо автору
 
   для: Nana   (08.10.2007 в 20:30)
 

Чтобы они одновременно появлялись, нужно их закешировать. Но ведь ваша страница грузится частями, и неодновременное их появление не "нервирует" сильно? :)

   
 
 автор: Nana   (08.10.2007 в 20:42)   письмо автору
 
   для: sim5   (08.10.2007 в 20:36)
 

Да нет, не нервирует, тем более что чтобы добраться до этих картинок, надо все равно страницу вниз прокрутить, пока пользователь это сделает - они уже начнут мигать одновременно.

   
 
 автор: Eugene77   (07.10.2007 в 23:00)   письмо автору
 
   для: Nana   (06.10.2007 в 22:17)
 

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

   
 
 автор: sim5   (07.10.2007 в 23:03)   письмо автору
 
   для: Eugene77   (07.10.2007 в 23:00)
 

Закешировать можно и на текущей странице, а то что они будут мигать синхронно, это еще не факт.

   
 
 автор: Nana   (08.10.2007 в 01:57)   письмо автору
 
   для: Eugene77   (07.10.2007 в 23:00)
 

Попробовала: они все равно не одновременно выскакивают.

   
 
 автор: SHAman   (08.10.2007 в 18:40)   письмо автору
 
   для: Nana   (08.10.2007 в 01:57)
 

Я бы делал так:
1) Не выводить эти картинки в html, а только зарезервировать для них место.
2) при window.onload делать прелоад этих картинок (что даст кеширование)
3) после загрузки обоих картинок, (но только когда загрузятся обе!) вывести их в заготовленные места, сгенерив html.

По идее, должно получиться синхронно...

   
 
 автор: Eugene77   (08.10.2007 в 20:02)   письмо автору
 
   для: Nana   (08.10.2007 в 01:57)
 

>Попробовала: они все равно не одновременно выскакивают.

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

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

   
 
 автор: Nana   (08.10.2007 в 20:34)   письмо автору
 
   для: Eugene77   (08.10.2007 в 20:02)
 

Да уж, анимация - это такое дело, я уже поняла - ведет себя как хочет. Поэтому сделала, как мне посоветовали sim5 и bronenos - через visibility.
Только вот есть такой феномен: на форумах рядом стоящие смайлики всегда двигаются синхронно, даже если их 10 подряд поставить))) Мистика какая-то))))

   
 
 автор: Nana   (08.10.2007 в 20:35)   письмо автору
 
   для: Nana   (06.10.2007 в 22:17)
 

Всем огромное спасибо! Вы мне очень помогли!

   
Rambler's Top100
вверх

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