Jump to content
  • 0

Анимация CSS3 или JavaScript


VIVA
 Share

Question

Ребят, подскажите, пожалуйста, есть ли вообще смысл изучать и применять анимирование на CSS3, ведь javascript куда чаще используется для решения данных задач?  Да и вообще, в каких случаях целесообразнее использовать CSS3, а когда javascript?

Заранее спасибо всем кто обьяснит и поделиться своим опытом с бедненьким неучем!

 

Edited by VIVA
Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

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

Link to comment
Share on other sites

  • 0

Например при клике или наведении на одну область добавится класс элементу в другой области (js).. А там уже для этого класса написана анимация на css.

 

Ну и смотря, будет поддерживаться ie 9 и ниже...

Edited by Q4Dizzy
Link to comment
Share on other sites

  • 0

Вот пример моей относительно недавней работы, где присутствует анимация. Там можно посмотреть, начиная с третьей секции. По нажатию на кнопку «далее», меняется кадр. Вот эта самая смена осуществляется средствами JS. В этом смысл такой, что это какая-никакая интерактивность. Реакция на действия пользователя. А вот сама смена кадров — это скорее к оформлению относится. В любом случае меняется видимость, положение, прозрачность элементов, просто меняется плавно. В css для этого все средства есть. Достаточно назначить начальное и конечное положение, длительность и функцию анимации — и браузер с этим справится.

Всё то же самое почти можно сделать средствами JS, но! Каждый элемент будет менять свои свойства не менее 30 раз в секунду. Скрипт будет высчитывать новые свойства и назначать их элементу DOM. Как известно, работа с DOM — это самое тормозное, что есть в JS.

Так зачем?


Ну и смотря, будет поддерживаться ie 9 и ниже...

Если есть требования поддержки ископаемых, то без вариантов, только JS.

Но тут какой момент. В доисторических браузерах JS-машинка вообще не рассчитанная на сколько-нибудь серьёзные действия, а потому тормозная. Анимация на JS будет их тормозить ещё больше. Давайте не будем зверьми, не надо мучать трупы.

Правильно делать анимацию на css, на js только смену состояний, а если браузер не умеет анимацию, но его поддержка необходима, то пусть он меняет состояния без анимации. Адекватный заказчик поймёт эти соображения.

Link to comment
Share on other sites

  • 0

Ребят, спасибо большое за пояснения! Оказалось с точностью до наоборот, от моих первоначальных суждений :huh:

Немного, подсумирую. Если нам нужно сделать анимацию как движение картинки (голуби машут крыльями, вертолеты летают и т.д) , то это лучше делать в CSS, а если нам нужно создать эффект слайдера (перемещение блоков с изображениями) или на действие пользователя мы должны вывести новые блоки (к примеру форму для выбора) тогда уже лучше использовать JS.

Link to comment
Share on other sites

  • 0

Ну не совсем.. Слайдер - это готовый велосипед.. Тут зависит от того, какой выберете..

 

Есть слайдеры, которые управляют анимацией через css.

 

Есть слайдеры, которые управляют через animate (ширина, положение и т.д.) В основном смотрится по ситуации.. НО. ещё раз, всё зависит от ситуации, заказа, требований и т.д.

Link to comment
Share on other sites

  • 0

… если нам нужно создать эффект слайдера (перемещение блоков с изображениями) или на действие пользователя мы должны вывести новые блоки (к примеру форму для выбора) тогда уже лучше использовать JS.

почти, да не совсем.

Сама анимация смены изображений должна быть в css. А вот реагировать на действия пользователя css не умеет, и не надо ему такого уметь.

Нажатие на кнопочку обрабатывать должен js, у блоков на это действие меняются классы. А вот для самих классов уже анимации. Например:

.slider  position: relative  +size(100%, 200px)  &__slide    position: absolute    top: 0    left: 0    +size(100%)    transition: transform .5s ease    &--left      transform: translate(-100%, 0)    &--right      transform: translate(100%, 0)

всем элементам, кроме активного, даём классы с модификаторами, и от этого свойство transform: translate будет меняться.

Вот так и сочетаем.

Link to comment
Share on other sites

  • 0

Что-то запутался.
 

А вот реагировать на действия пользователя css не умеет


А как же :hover, :active и т.д. по идее мы же можем прицепить анимацию на эти действия или это не совсем правильно ?

Edited by VIVA
Link to comment
Share on other sites

  • 0

на псевдоклассы конечно можно назначить анимацию. И обычно так и надо делать. Когда такое лучше делать в js — это очень редкие, практически единичные экзотические случаи.

  • Like 1
Link to comment
Share on other sites

  • 0

Хотелось бы немного дополнить тему. Использование по-максимуму возможностей CSS рекомендуется еще и в контексте повышения отказоустойчивости клиентских интерфейсов. Т.е. в этой концепции страница должна сохранять максимально адекватное отображение в случае отключения у клиента JS. Правда, совсем без JS обойтись далеко не всегда получится.

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

×
×
  • 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