Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.06.2013, 20:12
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

css3 анимация firefox
Столкнулся с проблемой применения css3 анимация в firefox
function setPosition(showWindow) {

    if(!self.isOpen)
        return;

        var coords = getModalCoords();    
      
       if(ie8) {

          overlay.style.height = document.body.scrollHeight +'px';

         win.style.left = coords.left + 'px';
         win.style.top =  document.body.scrollTop + coords.top + 'px'; 
        return;
       }
    
    // выносим блок за пределы окна
       win.style.top = -coords.win_height +'px';

       win.style.left = coords.left + 'px';

    // добавляем класс с css3 анимацией
       addClass(win, 'animate');
   
        setTimeout(function() { 
              
        	
           win.style.top =  coords.top + 'px'; //опускаем блок в центр окна
          //не работает анимации изменения top в лисе 
          

    }, 0);
        
    };


начал разбираться, вспомнил про урок css анимации в учебники, там с примером в конце такая же хрень в лисе..
не пойму что в лисе не так?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2 (permalink)  
Старый 25.06.2013, 22:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,114

cyber,
проверьте на ошибки в firefox код ниже
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <script src="animate.js"></script>
  <style>img { display: block; cursor: pointer; }</style>
  <style>
    .growing {
      /* все свойства анимируются 3 секунды */
      -webkit-transition: all 3s;
      -moz-transition: all 3s;
      -o-transition: all 3s;
      -ms-transition: all 3s;
    }
  </style>
</head>
<body>

Кликните картинку для анимации. Расположение элементов при анимации не должно меняться!
<table>
<tr>
<td>Догнать</td>
<td><img onclick="growIn(this)" src="http://ru.lookatcode.com/show/12009072174082658/flyjet.jpg" width="400" height="240" >
</td>
<td>..и перегнать!</td>
</tr>
</table>

<b>В процессе анимации повторные клики на изображение игнорировать.</b>

<script>
function growIn(img) {
  var process = arguments.callee;
  if (process.busy) return;
  process.busy = true;

  // переместить изображение в placeholder постоянного размера
  var placeholder = document.createElement('div');
  placeholder.style.width = img.offsetWidth + 'px';
  placeholder.style.height = img.offsetHeight + 'px';
  img.parentNode.replaceChild(placeholder, img);
  placeholder.appendChild(img);

  var height = img.offsetHeight, width = img.offsetWidth;

  img.className = '';
  img.style.position = 'relative';
  img.style.height = "0px";
  img.style.width = "0px";
  img.style.left = width/2+'px';
  img.style.top = height/2+'px';

  // откладываем на 0мс, чтобы началась анимация
  // иначе изменение свойств IMG не будет замечено
  setTimeout(function() {
    img.className = 'growing';
    img.style.height = height+'px';
    img.style.width = width+'px';
    img.style.left = img.style.top = "0px";
  }, 100);

  img.addEventListener('webkitTransitionEnd', done, false);
  img.addEventListener('oTransitionEnd', done, false);
  img.addEventListener('msTransitionEnd', done, false);
  img.addEventListener('transitionend', done, false);

  function done(e) {
    // будет срабатывать по 1 разу на каждое свойство e.propertyName
    if (process.busy) {
      alert('ok!');
    if(placeholder.parentNode)  placeholder.parentNode.replaceChild(img, placeholder);
      img.style.position = '';
      process.busy = false;
    }
  }

}
</script>

</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 26.06.2013, 12:59
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

рони, хм, увелечение времени для timeout как вариант , я решил по другому вынес в другой метод установку позиции, вот так

this.Show = function() {
    
    //...
     
    win.style.top = -getModalCoords().win_height +'px'; // перенес из функции  setPosition

    setPosition();

   };

 function setPosition() {

    if(!self.isOpen)
        return;

        var coords = getModalCoords();    
      
       if(ie8) {

          overlay.style.height = document.body.scrollHeight +'px';

         win.style.left = coords.left + 'px';
         win.style.top =  document.body.scrollTop + coords.top + 'px'; 
        return;
       }
    
    
       addClass(win, 'animate');

        setTimeout(function() { 
    
        	win.style.left = coords.left + 'px';
        	win.style.top =  coords.top + 'px'; 
         
        }, 0);
        
    };
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не срабатывает scrollLeft анимация в firefox krokodily jQuery 2 25.08.2016 14:19
CSS3 анимация (transition) Magneto Events/DOM/Window 4 19.12.2014 11:39
JS Drag&Drop для созданного div в FireFox фонарик Общие вопросы Javascript 2 28.02.2013 21:34
Не работает jQuery анимация в Firefox makingpretty Events/DOM/Window 1 22.06.2011 00:05
тег <audio> в Opera, Chrome, Firefox Magneto Javascript под браузер 12 25.11.2010 15:12