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

HTML+CSS+JavaScript

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

 

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

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

тема: Как медленно развернуть скрытый текст
 
 автор: trix   (19.11.2009 в 15:10)   письмо автору
 
 

Как подправить, данную функцию, так чтобы текст отображался не мгновенно, а чуть замедленно



<script>
function look(type){
param=document.getElementById(type);
if(param.style.display == "none"){
 param.style.display = "block";
 }
else{
 param.style.display = "none"
  }
}
 
</script>
 
<span onmouseover="look('div1');" onmouseout="look('div1');">Увидить текст</span>
<ul id="div1" style="display:none;">
<li>Скрытый текст</li>
</ul>

  Ответить  
 
 автор: sim5   (19.11.2009 в 15:17)   письмо автору
 
   для: trix   (19.11.2009 в 15:10)
 

Дать команду: "чуть-чуть block, еще чуть-чуть" :)
Шутка, но вам нужно либо делать fader эффект (появление/затухание), либо изменять размер блока от нулевого до конечного, и все это по таймеру. А вот меееедленно первести из "none" в "block" нельзя.

  Ответить  
 
 автор: trix   (19.11.2009 в 15:23)   письмо автору
 
   для: sim5   (19.11.2009 в 15:17)
 

Т.е. нужено вообще по другому код писать? Может подскажете как сделать?

  Ответить  
 
 автор: jangot   (19.11.2009 в 15:50)   письмо автору
 
   для: trix   (19.11.2009 в 15:23)
 

То что у вас сейчас это простое изменение одного значения другим
То есть блок скрыт/показан
что бы сделать его плавное появление нужно не просто подправить ваш код, а написать сложную функцию. То есть создать анимацию.
Вот к примеру алгоритм плавного появления блока:

1) блок скрыт (display:none;) + его прозрачность ровна 0
2) блок появляется на странице + его прозрачность ровна 0
3) каждые 100мс прибавляем к прозрачности 0.1 пока она не станет равной 1

самому это все написать достаточно сложно, из за кросбраузерности
Советую использовать библиотеку jQuery
Там вы это сможете сделать одной строчкой:


$('.popap').fadeIn();

  Ответить  
 
 автор: trix   (19.11.2009 в 15:54)   письмо автору
 
   для: jangot   (19.11.2009 в 15:50)
 

Прозрачность, это мне кажется не совсем то! Это он будет матерелизоваться на страничке, а надо чтобы он медленно открывался, т.е. при нажатии на ссылку, блок расширялся вниз!
Спасибо за совет с библиотекой, сейчас поищу.

  Ответить  
 
 автор: jangot   (19.11.2009 в 15:56)   письмо автору
 
   для: trix   (19.11.2009 в 15:54)
 

Разворачивание работает также, только вместо свойства прозрачность придется менять высоту

  Ответить  
 
 автор: sim5   (19.11.2009 в 16:04)   письмо автору
 
   для: trix   (19.11.2009 в 15:54)
 

Ну в query не только прозрачность, в ней много эффектов. Для вас как раз подойдет эффект toggle, он и раскрывает и закрывает с указанной скоростью.

  Ответить  
 
 автор: trix   (19.11.2009 в 17:36)   письмо автору
 
   для: sim5   (19.11.2009 в 16:04)
 

Вот попробовал сам код соорудить, но что-то не так отказывается работать, в теории рекурсия должна функции вызывать, пока четчик не достиг 200, а по факту вызывается только 1 раз :( Что тут не так понять не могу!



<script>
var T;
var counter=0;
function look(type){
var param=document.getElementById(type);

  if(counter < 200)
  {
     param.style.display = "block";       
     param.style.border = "solid 1px"; 
     param.style.height = counter++; 

    T =    setTimeout(look(param),10);
      
  }
  else{ clearTimeout (T); counter=0;}
  
}

</script>
 
<span onmouseover="look('div1');">Увидить текст</span>
<div id="div1" style="display:none;">
Скрытый текст
</div>

  Ответить  
 
 автор: sim5   (19.11.2009 в 18:03)   письмо автору
 
   для: trix   (19.11.2009 в 17:36)
 

<script>
var T; 
var counter=0; 
function look(type){ 
  var param=document.getElementById(type); 
  if(counter == 200) {
    clearTimeout (T); counter=0;
  } else { 
     param.style.display = "block";        
     param.style.border = "solid 1px";  
     param.style.height = counter++;  
     T = setTimeout("look('"+type+"')",10); 
  } 

</script>

Имя вызываемой функции в таймере нужно заключать в кавычки, а id элемента, это тоже строка, значит и ее. Вам ведь браузер выдает ошибку на это, что же вы не смотрите.

РS. Только у вас не текст будет медленно открываться в данном случае, он сразу появится, а рамка с бордюром. Но для примера сойдет.

  Ответить  
 
 автор: flaers   (19.11.2009 в 22:14)   письмо автору
 
   для: sim5   (19.11.2009 в 18:03)
 

что выезжало вместе с текстом надо в стиле задать атрибут overflow:hidden; и всё нормально будет

  Ответить  
 
 автор: sim5   (20.11.2009 в 02:06)   письмо автору
 
   для: flaers   (19.11.2009 в 22:14)
 

Естественно, только нужно воспользоваться CSS, чтобы все аккуратнее было.

  Ответить  
 
 автор: flaers   (19.11.2009 в 22:14)   письмо автору
 
   для: sim5   (19.11.2009 в 18:03)
 

случайно 2 раза отправил

  Ответить  
 
 автор: GeorgeIV   (19.11.2009 в 18:20)   письмо автору
 
   для: trix   (19.11.2009 в 17:36)
 

броузер какой?

  Ответить  
 
 автор: trix   (20.11.2009 в 12:34)   письмо автору
 
   для: GeorgeIV   (19.11.2009 в 18:20)
 

Ага, спасибо вроде уже похоже на что-то :)

  Ответить  
 
 автор: АЯ   (19.11.2009 в 15:52)   письмо автору
 
   для: trix   (19.11.2009 в 15:23)
 

--

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

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