Jump to content
  • 0

Как исправить анимацию после добавления блока?


borus
 Share

Question

Здравствуйте!

Делаю сайт на базе этого шаблона. По сравнению с исходным шаблоном добавил в разметку доп меню с желтыми пунктами Профсоюз и т.д. Это подменю c селектором .headerrow .cell_pad .moduletable:nth-child(2) спозиционировал абсолютно относительно верхнего края родительского элемента div.cell_pad, для чего последнему пришлось дать position:relative; После это вся анимация опустилась на высоту внедрённого элемента с селектором .headerrow .cell_pad .moduletable:nth-child(2). Почему? Ведь в мануале написано, что position:absolute должен заставлять соседние элементы, а именно первый div.moduletable, вести себя так, как будто следующего за ним позиционированного элемента нет совсем.

Начал менять свойства top у колеблющихся шаров и пчёл, уменьшая их на 200 px у всех. В итоге получилось поднять два правых шарика на нормальную высоту. Зато пчёлы и первый слева шар ведут себя не как в оригинале: пчелы в конце траектории скачут, как впрочем и левый шар. 

Почему происходят такие скачки? Как их исправить?

Edited by borus
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0
6 часов назад, npofopr сказал:

Хм. В Хроме у меня вроде всё одинаково. 

Здравствуйте. 

Странно. У меня левый подвижный шарик выпрыгивает откуда-то снизу, затем опускается, колеблется и улетает вверх через время. А должен просто появиться в одной точке и через время улететь. 

У всех все нормально отображается, как у npofopr?

Link to comment
Share on other sites

  • 0
Цитата

@-webkit-keyframes balloon3 {
    1% { opacity: 1; }
    33% { -webkit-transform: rotate(5deg); top: 480px; opacity: 1; }
    66% { -webkit-transform: rotate(-5deg); top: 480px; opacity: 1; }
    90% { -webkit-transform: rotate(5deg); top: 100px; opacity: 0; }
    91% { top: 480px; opacity: 0; }
    100% { opacity: 1; }
}

И только в начальный/конечный момент применяется top, заданный непосредственно шарику (280px). Вот и получается, что между 91% и 100% он, плавно проявляясь из прозрачности, меняет top с 480 на 280px — «выпрыгивает снизу». А к отметке 33% опять туда опускается.

P.S. Зачем никому не нужные -moz-animation-* и особенно -ms-animation-*, и где, где стандартный беспрефиксный animation-*?

  • Like 1
Link to comment
Share on other sites

  • 0

Спасибо, дорогой Селеныч. Это шаблон 2012-13 гг похоже, видимо поэтому префиксы. Я просто довожу его до нужного состояния без полной ревизии.

Пчелы видно подобным же образом лечатся

Edited by borus
Link to comment
Share on other sites

  • 0

Вот с пчелами «скачков» не заметил (возможно, от размера экрана зависит?), но, полагаю, да...

Кстати, вообще желательно по возможности уходить от анимации top/left и т.п., а вместо них анимировать transform: translate*. Должно быть и плавнее (никаких reflow/repaint, только перекомпозиция слоев), и проще в управлении (не будет вот такого конфликта координат). Но да, в сочетании с другими трансформациями это может быть не так просто...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Jasahd0307
      Как сделать анимацию как на этом сайте https://travelshift.com/
      Если зажать мышку то картинки меняются анимировано можете мне с этим помочь
    • By Andrey_Afonchenko
      Здравствуйте! Помогите, пожалуйста!
      Есть два блока (div): один с картинкой, а другой с текстом.
      Нужно реализовать: сначала блок с картинкой должен перекрывать блок с текстом, а потом блок с текстом должен перекрывать блок с картинкой.
      Для этого я делал в попытке реализации данного эффекта:
      .image
      {
          display: inline-block;
          Position: absolute;
          z-index: 1;
      }
      @Keyframes block_overlap
      {
          from
          {
              z-index: 0;
          }
          to
          {
              z-index: 2
          }
      }
      .text
      {
          display: inline-block;
          position: absolute;
          animation-name: block_overlap;
          animation-duration: 1s;
      }
      Данный код не привёл к решению проблемы.
       
    • By pro100blich
      Особо не вдавался в подробности анимации, поэту прошу у вас.

      Нужно сделать так, чтобы буква при загрузки страницы, после 3с (ПРИМЕРНО) с центра экрана переместилась на 300px (ПРИМЕРНО) в любое из четырех направлений.

      P.S. Лишнего не пишите, и ссылки на темы не надо кидать.
       
    • By Ferensy
      Добрый день. Есть задача сделать анимацию как в примере по ссылке (видео на Youtube.com) - 
      С подобным ни разу не сталкивался, но ужасно хочется понять, как это реализуется. Я не прошу готового решения, я лишь прошу чтоб меня направили в ту сторону, в которой можно в этом разобраться. Спасибо.
    • By chester40
      Здравствуйте. Прошу помочь в решении следующей задачи:

      Имеется родительский элемент со свойством clip-path и дочерний элемент с анимацией:

      Для примера:
      HTML
      <div id="logoimage-waves"> <div id="waves-animated"></div> </div> <svg> <clipPath id="WavesPolygon"> <polygon points="0 0,95 0,95 8,80 5,60 10,40 15,20 20"> </polygon> </clipPath> </svg>  
      CSS
      #logoimage-waves { width: 100px; height: 100px; clip-path: url("#WavesPolygon"); -webkit-clip-path: polygon(0px 0px,95px 0px,95px 8px,80px 5px,60px 10px,40px 15px,20px 20px); position: absolute; } #waves-animated { width: 100px; height: 100px; position: absolute; background: url(/images/waves.png) no-repeat; animation: waves-animation 40s; } @keyframes waves-animation { from { transform:rotate(0deg); } to { transform:rotate(-360deg); } }  
      Вопрос следующий:

      В Firefox всё работает как надо, дочерний анимированный элемент обрезается с помощью свойства clip-path родительского элемента. Но в других браузерах (проверял в Chrome 55 и Opera 41) обрезка не работает и элемент показывается полностью. Причём, что важно, это происходит только в том случае, если дочерний элемент анимирован с помощью свойства transform, а если анимируется другое свойство, например margin, то обрезка работает во всех браузерах. Короче говоря: дочерние элементы анимированные с помощью transform не обрезаются с помощью clip-path родительского элемента в Хроме и Опере.
      В общем задачка та еще. Второй день пытаюсь решить )

      Благодарю за внимание!
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy