CSS анимации. 30 крутых примеров
Крутые CSS анимации
CSS Анимация загрузки от patrikhjelm
Семь анимированных точек двигаются влево и вправо, показывая загрузку.
See the Pen CSS loading animation by Patrik Hjelm (@patrikhjelm) on CodePen.
Анимированные иконки корзин от jonitrythall
Симпатичные анимированные эффекты, которые можно использовать на сайтах интернет- магазинов при добавлении товаров в корзину.
See the Pen Animated Shopping Cart Icons by Joni Trythall (@jonitrythall) on CodePen.
Анимация иконки «гамбургер» с помощью CSS3 анимаций от Dawid Krajewski
Создан на чистом CSS, без использования каких либо скриптов на JS.
Анимированный персонаж 404 от With An Es
Классный пример для 404 страницы, где разработчик работает на ошибками.
See the Pen 404 Animated Character by Mark Thomes (@WithAnEs) on CodePen.
Высадка на марс от mgitch
Приземление на Марс. Сделано на CSS.
See the Pen CSS Mars Landing by Mathew Gitchell (@mgitch) on CodePen.
Мстители от mariosmaselli
Герои-Мстители на CSS прямо на вашем сайте. Круто, не правда ли?
See the Pen CSS The Avengers by mario sanchez maselli (@mariosmaselli) on CodePen.
Переключатель День/Ночь от jsndks
Теперь вы можете переключать день и ночь с CSS. Гениальная идея.
See the Pen Pure CSS Day/Night Toggle Swith by Jason Dicks (@jsndks) on CodePen.
Анимация Google Now приложений от codecalm
Сторонние приложения от Google Now, теперь анимированы.
See the Pen Google Now 3rd Party Apps by Paweł Kuna (@codecalm) on CodePen.
Бегущий петух от judag
See the Pen clo clo by Judith Neumann (@judag) on CodePen.
Анимированная иконка меню от mariusbalaj
Простая идея анимированной иконки, которая меняется при прокрутке страницы.
Еще один CSS загрузчик от Maseone
Гипнотизирует, не так ли?
See the Pen CSS preloader! by Paul (@Maseone) on CodePen.
Кнопка отправки от auginator
Кликните для потдверждения, и кнопка анимируется с загрузкой процесса, с показом результата.
See the Pen Submit Button (GSAP edition) by auginator (@auginator) on CodePen.
Эластичный SVG сайдбар в стиле Material Design от suez
Перетащите белую полосу вправо, чтобы увидеть эластичный эффект боковой панели.
Кнопка с частицами от igcorreia
Удивительный эффект при наведении на кнопку.
See the Pen Particle Button made with Canvas and HTML5 #html5 #button #particle #css @codepen @igcorreia Check this by Ignacio Correia (@igcorreia) on CodePen.
Gooey кнопка от Lucas Bebber
See the Pen CSS Gooey Menu (Version 1) by Lucas Bebber (@lbebber) on CodePen.
Вращающаяся кнопка от hakimel
Кнопка с эффектом модального окна.
See the Pen Flipside by Hakim El Hattab (@hakimel) on CodePen.
Меню с настоящим гамбургером от CharlesSmart
See the Pen The ultimate hamburger menu by Charles (@CharlesSmart) on CodePen.
Мотоцикл от yy
Посмотрите на движущийся мотоцикл.
See the Pen Cruisin’ by Yusuf (@yy) on CodePen.
3D волна с помощью кубов от waddington
See the Pen 3d css cube wave by Kai Waddington (@waddington) on CodePen.
Эффект написания текста от drygiel
Вот подпись которая реализована не на GIF формате, а PNG анимации с CSS3.
See the Pen Signature animation by Damian Drygiel (@drygiel) on CodePen.
Градиентная анимация заднего фона от quasimondo
See the Pen Animated Background Gradient by Mario Klingemann (@quasimondo) on CodePen.
Иконка переключения на «световых мечах» из Звездных войн от rss
See the Pen Star Wars Toggle Icon Animation by Rıza Selçuk Saydam (@rss) on CodePen.
Подобие GIF анимации от jascha
Посмотрите как фото появляется из пикселей.
See the Pen Gif Style CSS3 Animation by Jascha Goltermann (@jascha) on CodePen.
Анимация для формы от fluxus
Анимированный карандаш появляется, когда текстовая форма в фокусе.
Разноцветный треугольник от felpedefarias
Невероятная оптическая иллюзия, реализованная на CSS3.
See the Pen Chromatic triangle by felipedefarias (@felipedefarias) on CodePen.
Кофе-машина от thisisroger
See the Pen Coffee Maker Animation by Roger Flanagan (@thisisroger) on CodePen.
Анимированный динозавр Google Chrome от nickspiel
Помните того динозаврика, которого вы можете увидеть когда соединение отсутствует в популярном браузере?
See the Pen Chrome Dinosaur Animation by Nick Spiel (@nickspiel) on CodePen.
CSS тряска от elrumordelaliz
Наведите курсор, чтобы посмотреть эффект тряски на объектах.
See the Pen presenting CSShake by Lionel T (@elrumordelaluz) on CodePen.
Колыбель Ньютона от All Things Smitty
Шикарная идея, для показа загрузки.
See the Pen Newton’s Cradle Loader by Matt Smith (@AllThingsSmitty) on CodePen.
Анимация для модального окна от koolhaus
See the Pen Modal Animation Physics by Tey Tag (@koolhaus) on CodePen.
Шагающий робот от P233
Этот робот идет, и идет, и идет…
Анимация для стрелок навигации страниц от Hakim
See the Pen Flexing pagination arrows by Hakim El Hattab (@hakimel) on CodePen.
Источник: http://www.hongkiat.com/
Свойство animation | CSS справочник
CSS свойстваОпределение и применение
CSS свойство animation позволяет задать все свойства анимации в одном объявлении. Это свойство является короткой записью для следующих свойств:
Обратите внимание на важный момент, порядок свойств в списке соответствует необходимому порядку указания значений в свойстве animation. Имя анимации может быть указано как в начале списка, так и в его конце.
Не забывайте в обязательном порядке указывать значение продолжительности анимации (animation-duration), иначе, анимация не будет проиграна, т.к. значение по умолчанию у этого свойства равно нулю.
Для граммотного применения анимации на Ваших страницах, рекомендую ознакомиться с возможностями и алгоритмами работы всех вышеприведенных свойств в индивидуальном порядке.
Поддержка браузерами
CSS синтаксис:
animation:"name duration timing-function delay iteration-count direction fill-mode play-state"; /* имя анимации может быть указано в конце списка */
JavaScript синтаксис:
object.style.animation = "myAnimation 1s linear"
Значения свойства
Значение | Описание |
---|---|
animation-name | Указывает имя анимации/список анимаций, которые должны быть применены к выбранному элементу. Каждое имя указывает на правило (@keyframes), которое определяет значения свойств анимации. Значение по умолчанию none. |
animation-duration | Определяет, сколько секунд или миллисекунд затрачивается на выполнение одного цикла анимации. |
animation-timing-function | Определяет кривую скорости для анимации (используется математическая функция — кубическая кривая Безье). Кривая скорости определяет время анимации, используемое, чтобы изменить один набор стилей CSS на другой. Значение по умолчанию ease. |
animation-delay | Определяет задержку для запуска анимации. Значение по умолчанию 0. |
animation-iteration-count | Указывает, сколько раз анимация должна быть воспроизведена. Значение по умолчанию 1. |
animation-direction | Определяет будет ли анимация воспроизводиться в обратном направлении, или в виде чередующихся циклов. Значение по умолчанию normal. |
animation-fill-mode | Задает стиль для элемента, когда анимация не воспроизводится (когда она будет закончена, или когда она имеет задержку, установленную свойством animation-delay ). Значение по умолчанию none. |
animation-play-state | Определяет состояние анимации (анимация воспроизводится, либо приостановлена). Значение по умолчанию running. |
Версия CSS
CSS3Наследуется
Нет.Анимируемое
Нет.Пример использования
<!DOCTYPE html> <html> <head> <title>Пример анимации на CSS</title> <style> .test { width: 100px; /* устанавливаем ширину блока */ height: 100px; /* устанавливаем высоту блока */ position: relative; /* элемент с относительным позиционированием */ animation: iliketomoveit 4s steps(3,start) 500ms infinite reverse; /* "name (имя анимации-как в @keyframes) duration(длительность) timing-function (кривая скорости - шаговая анимация) delay (задержка 500 миллисекунд) iteration-count (количество повторов анимации - бесконечно) direction (направление анимации - reverse(в обратном направлении) )" */ } @keyframes iliketomoveit { 0% {left: 0px;} /* задаем положение элемента при начале анимации */ 50% {left: 500px; border-radius: 50px; background: plum; } /* задаем смещение элемента относительно левого края, изменяем цвет заднего фона и определяем форму границ (скругление) */ 100% {left: 0px;background: green; } /* задаем первоначальное положение и задаем цвет заднего фона по завершению анимации */ } </style> </head> <body> <div class = "test">none</div> </body> </html>Пример использования CSS свойства animation (анимация на CSS).CSS свойства
CSS3 анимация и пример ее использования, бесконечный повтор
От автора: приветствую вас, дорогой читатель. Сегодня я вам расскажу, как реализовывается в css3 анимация и как ее можно использовать уже сейчас для различных эффектов на сайте.
ВНИМАНИЕ! Поскольку в этом уроке мы с вами разберем анимацию, на картинках я вам пример ее работы продемонстрировать не смогу, поэтому смело открывайте редактор для кода и записывайте туда код, приведенный в этот статье.
Основы создания
Итак, прежде всего нужно начать с того, как ее создавать. Вы наверняка привыкли к тому, что любая вещь в css реализуется прописыванием нужному селектору нужных свойств с соответствующими значениями. Так вот, при создании анимации только этим не обойтись. Схема выглядит следующим образом:
Создаются сами эффекты переходов с помощью @keyframes
Нужному элементу задается эта самая анимация, а также ее параметры (все это с помощью свойств и их значений).
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееИтак, для начала нам нужно описать нужные изменения в @keyframes, давайте подробнее разберем, как с ними работать.
Синтаксис @keyframes
Собственно, мне проще будет объяснить вам все на готовом примере, пусть и очень простом. Вот он (код добавляется в css-файл):
@keyframes pulse{ 0%{font-size: 50px;} 50%{font-size: 60px;}} 100%{font-size: 50px;}}
@keyframes pulse{ 0%{font-size: 50px;} 50%{font-size: 60px;}} 100%{font-size: 50px;}} |
Итак, после ключевика @keyframes идет произвольное слово, которое будет выступать названием анимации. В нашем случае это “pulse”. Далее открываются фигурные скобки, в которых записываются нужные правила.
Проценты, это так называемые временные отметки, на которых к элементу будут добавляться указанные свойства. В нашем случае записанное означает следующее: в самом начале выполнения размер шрифта будет составлять 50 пикселей, в ее середине он увеличиться до 60-ти, а в конце опять уменьшиться до начального размера.
Ключевые слова from и to могут заменить процентную запись, они обозначают 0% и 100% соответственно, то есть начало и конец воспроизведения.
Применяем анимацию в действии
Пока у нас просто код, который формирует анимационный эффект, но он нигде не применяется. Если вы обновите вашу веб-страницу, на ней ничего не изменится. Соответственно, чтобы применить анимацию, нужно выполнить два действия:
Выбрать элемент, для которого она будет применяться
Связать его с правилами, описанными через @keyframes (посредством имени), а также задать дополнительные настройки если это будет необходимо.
Пробуем
В своем html-файле я создал блок с классом shadow, в котором располагается простая строка текста. Наша цель – применить анимационные эффекты, описанные нами ранее, к этому текстовому элементу.
Есть два обязательных свойства, которые нужно указать в таком случае, чтобы все заработало. Во-первых, это имя, которое мы писали в keyframes. Во-вторых, это длительность анимации, потому что без этого параметра браузер просто не сможет ее воспроизвести.
Итак, помимо тех стилей, что уже есть у нашего блока, добавляем новые:
animation-name: pulse; animation-duration: 2s;
animation-name: pulse; animation-duration: 2s; |
Таким образом, мы связали элемент с описанной ранее анимацией, а также указали ее длительность. Обновите страницу и вы убедитесь, что все уже работает – наш эффект действительно выполнится, но всего лишь один раз.
Чтобы управлять количеством повторений, существует еще одно свойство:
animation-iteration-count: 4;
animation-iteration-count: 4; |
Таким образом, все повториться 4 раза, после чего прекратиться. Как вы понимаете, вместо четырех можно вписать любое число.
Бесконечная анимация в css3
Реализуется очень легко с помощью этого же свойства. На самом деле вы можете просто задеть количество повторений в пару тысяч, этого вполне хватит, но теоретически наша анимация не будет повторяться бесконечно.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееЯ рекомендую для реализации бесконечных повторений писать так:
animation-iteration-count: infinite;
animation-iteration-count: infinite; |
Все, теперь мы сделали бесконечный повтор. Проверять так ли это, просидев всю жизнь за монитором, я не советую. Просто это применяется в тех случаях, когда вы хотите, чтобы эффект постоянно повторялся и не исчезал. Если он ненавязчивый и не отвлекает пользователя, то почему бы и нет.
Задержка перед началом
По умолчанию воспроизведение начинается после полной загрузки страницы. Этим поведением можно управлять с помощью свойства animation-delay. Его значение задается в секундах.
Направление
Еще одно интересное свойство – animation-direction. По умолчанию стоит как нормальное, если поставить reverse, то все описанные кадры будут выполняться в обратном направлении. Давайте проверим, в чем разница. Для этого я немного изменил эффект, добавив еще один кадр.
@keyframes pulse{ 0%{font-size: 50px;} 50%{font-size: 60px;} 70%{font-size: 80px;} 100%{font-size: 50px;}}
@keyframes pulse{ 0%{font-size: 50px;} 50%{font-size: 60px;} 70%{font-size: 80px;} 100%{font-size: 50px;}} |
Итак, при нормальном направлении в первой половине анимации размер шрифта увеличиться до 60 пикселей, потом он резко увеличиться еще раз, уже до 80-ти, после чего вернется в исходное положение.
Рис. 2. Исходный размер текста
Рис. 3. Размер шрифта почти в конце анимации, перед резким возвращением к исходному состоянию.
Теперь задаем:
animation-direction: reverse;
animation-direction: reverse; |
Все перевернулось наоборот. Сначала текст увеличиться аж на 30 пикселей, до 80-ти, оставшуюся часть анимации он будет плавно уменьшаться, в конце концов вернув себе прежние размеры. Все просто.
Форма анимации
А это, пожалуй, одна из самых интересных настроек, в экспериментах с которой можно провозиться долгое время. По умолчанию все изменения выполняются с одинаковой скоростью. Такой тип выполнения анимации называется линейным, кроме него есть и другие:
animation-timing-function: ease;
animation-timing-function: ease; |
Выполнение начнется медленно, потом ускорится, а в конце вновь сбавит скорость. Кроме этого есть и другие эффекты: ease-in, ease-out, ease-in-out. Все их описывать не буду, можете сами попробовать применить их к элементам.
Сокращенная запись
Чтобы все вышеперечисленные параметры записать в одну строку и сэкономить кучу места в коде, используйте сокращенную запись:
animation: имя|длительность|форма|задержка|направление|число повторов
animation: имя|длительность|форма|задержка|направление|число повторов |
Я думаю, пока вам хватит этого для создания своих толковых анимаций. Намного больше здесь зависит от вашей фантазии. Как видите, не слишком много свойств нужно знать для реализации красивых вещей на странице.
На самом деле мы с вами рассмотрели лишь базовые возможности. Например, ту же форму анимации можно задавать с помощью функции кубических кривых Безье, но это более сложная тема для разговора, я бы даже сказал, абсолютная не нужная новичку, потому что вышеперечисленных свойств вам точно хватит для создания простых и достаточно сложных анимационных эффектов.
Итак, это был пример анимации на css3, таковых примеров можно приводить еще много, но главное тут понять суть, разобраться с синтаксисом @keyframes и тогда никаких проблем и у вас не возникнет. Другие css3 свойства вы можете изучить в этом курсе. Подписывайтесь на наш блог, чтобы получать классные материалы по сайтостроению.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееPSD to HTML
Верстка сайта на HTML5 и CSS3 с нуля
СмотретьАнимация CSS3 для самых маленьких
Время чтения: 5 мин.CSS3 анимация достаточно широко используется. Пришла пора разобраться даже самым начинающих сайтостроителям что же такое CSS анимация и как ее создать. Возможно Вы думаете что CSS3 анимация заключается в том, чтобы заставить двигаться блоки и это похоже на мультфильм. Но CSS анимация это не только перемещение элемента из одной точки в другую, а это еще искажение и другие трансформации. Чтобы это было понятно даже для начинающих — я расписал всё по шагам.
1. Основные свойства CSS3 анимации
Небольшой теоретический блок, из которого Вы поймете какие свойства CSS3 отвечают за анимацию, а также какие значения они могут принимать.
- animation-name — уникальное имя анимации (ключевых кадров, о них поговорим чуть ниже).
- animation-duration — длительность анимации в секундах.
- animation-timing-function — кривая изменения скорости анимации. На первый взгляд очень непонятно. Всегда легче показать на примере, а их Вы увидите ниже. Может принимать следующие значения: linear | ease | ease-in | ease-out | cubic-bezier(n,n,n,n).
- animation-delay — задержка в секундах перед началом анимации.
- animation-iteration-count — количество повторов анимации. Задается либо просто числом, либо можно указать infinite и анимация будет выполняться бесконечно.
Здесь находятся лишь основные свойства, которых более чем достаточно, чтобы создать свою первую анимацию на CSS3.
Последнее, что нам нужно знать и понимать из теории — это то, как создавать ключевые кадры. Это делать также легко и делается это с помощью правила @keyframes, внутри которого указываются ключевые кадры. Синтаксис этого правила следующий:
CSS КОД
1 2 3 4 | @keyframes AnimationSitehere { from {/*свойства для начального ключевого кадра*/} to {/*свойства для конечного ключевого кадра*/} } |
Выше мы задали первый и последний кадр. Все промежуточные состояния рассчитаются АВТОМАТИЧЕСКИ!
2. Реальный пример анимации CSS3
Теория как обычно скучна и не всегда понятна. Намного проще увидеть всё на реальном примере, а лучше всего сделать своими руками на какой-нибудь тестовой HTML страничке.
При изучении языка программирования обычно пишут программу «Hello, world!», по которой можно понять какой синтаксис у этого языка и еще какие-нибудь базовые вещи. Но мы изучаем не язык программирования, а язык описания внешнего вида документа. Поэтому у нас будет свой «Hello, world!».
Вот что мы сделаем для примера: пусть у нас какой-нибудь блок <div> будет изначально с шириной 800px и за 5 секунд уменьшится до 100px.
Вроде бы всё понятно — просто нужно сжать блок <div> и всё! Давайте посмотрим как это выглядит в действительности.
Сначала HTML разметка. Она очень простая, потому что мы работаем только с одним элементом на странице.
HTML КОД
1 | <div></div> |
А вот что находится в файле стилей:
CSS КОД
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | .toSmallWidth { margin:20px auto; /*внешние отступы сверху и снизу по 20px и выравнивание по середине*/ background: red; /*красный фон у блока*/ height: 100px; /*высота блока 100px*/ width: 800px; /*начальная ширина 800px*/ -webkit-animation-name:animWidthSitehere; /* свойство с префиксом для браузеров Chrome, Safari, Opera */ -webkit-animation-duration:5s; /* свойство с префиксом для браузеров Chrome, Safari, Opera */ animation-name:animWidthSitehere; /* указываем название ключевых кадров (находятся ниже)*/ animation-duration: 5s; /*задаем длительность анимации*/ } /* ключевые кадры с префиксом для браузеров Chrome, Safari, Opera */ @-webkit-keyframes animWidthSitehere { from {width: 800px;} to {width: 100px;} } @keyframes animWidthSitehere { from {width: 800px;} /*первый ключевой кадр, где ширина блока 800px*/ to {width: 100px;} /*последний ключевой кадр, где ширина блока 100px*/ } |
Смотреть пример
Как видите, мы указали только первый и последний ключевой кадр, а все промежуточные «построились» автоматически.
Вот и готова Ваша первая CSS3 анимация. Чтобы закрепить полученные знания — создайте HTML документ и CSS файл, и там вставьте (а лучше руками напечатайте) код из примера. Тогда Вы уж точно всё поймете. Затем попробуйте сделать тоже самое с высотой блока (он должен уменьшаться по высоте), чтобы закрепить материал.
3. Примеры анимации CSS3 посложнее
Выше Вы узнали как можно легко создать CSS3 анимацию. Если попробовали своими руками это сделать, то уже поняли весь процесс и сейчас хотите узнать как можно создать более сложную и красивую анимацию. А ее создать действительно можно. Ниже есть 3 урока где анимация создается также, как в примере выше.
3 урока по анимации CSS (преобразования)
Первый урок по преобразованиям на CSS, где Вы увидите 4 примера манипуляций с блоком, после чего сможете применить это на своём сайте.
ПЕРЕЙТИ К УРОКУ №1
В уроке Вы найдете применение свойств анимации на реальных примерах, которые можно использовать на сайте.
ПЕРЕЙТИ К УРОКУ №2
Здесь Вы узнаете как создавать более продвинутую анимацию, в которой совмещены сразу несколько преобразований.
ПЕРЕЙТИ К УРОКУ №3
Уроки помогут Вам понять анимацию CSS еще лучше. Главное — это пробовать повторять то, что Вы видите в уроках. Или хотя бы попробуйте изменять значения свойств и смотреть что получается, тогда Вы станете меньше боятся CSS.
4. Для ленивых — сервис генерации анимации
Чтобы понимать как работает анимация на CSS3, Вы просто обязаны разобраться с примером в начале статьи. Но если Вам лень писать код вручную — всегда можно найти выход. В данном случае выход — это использование генератора анимации CSS3. Ниже есть видео по использованию этих генераторов, а еще ниже ссылки на сами генераторы.
Вывод
Еще раз повторю и здесь: сначала разберитесь с примером в начале статьи, чтобы Вы понимали как строится анимация CSS3. После чего Вы можете воспользоваться генератором и легко создать анимацию на своё усмотрение. Я Вам рекомендую сначала разобраться с примером, потому что когда Вы генераторы не позволяют создавать очень «гибкие» анимации, которые Вы только пожелаете. Но если Вы знаете как устроен код, то с легкостью сможете дописать нужные свойства и получить очень крутой эффект в итоге.
Еще раз посмотрите всё по пунктам:
- Основные свойства CSS3 анимации
- Реальный пример анимации CSS3
- Примеры анимации CSS3 посложнее
- Для ленивых — сервис генерации анимации
Если Вам понравилась статья, то Вы можете поделиться ею с друзьями, кликнув на одну из кнопок социальных сетей ниже.
Успехов!
С Уважением, Юрий Немец
Урок: создание анимации
Создание анимации в CSS3 — увлекательный процесс. С помощью несложных манипуляций и, главное, без использования скриптов, можно перемещать и скрывать html-элементы, изменять их размеры, цвет, создавать реалистичные объемные эффекты, анимируя тень элемента, и многое другое.
Анимация состоит из плавных изменений одного состояния элемента в другое с помощью функций перехода animation-timing-function на протяжении указанного времени. На каждом этапе анимации можно задавать свою функцию перехода.
Самое главное при создании анимации — правильно задать ключевые моменты. Анимация может начинаться с 50%, а начальное и конечное состояния анимируемого элемента будут соответствовать заданному в свойствах элемента (так называемые вычисляемые значения).
See the Pen Clouds animation by Elena Nazarova (@nazarelen) on CodePen.
Основные элементы (башня, дом, одиночное облако) рисуются с помощью CSS-стилей, а элементы отделки (крыша, окна и маленькое облачко) — с использованием псевдоэлементов :before и :after.
Рис. 1. Рисование css-фигур с помощью псевдоэлементов<div>
<div>
<div></div>
<div></div>
<div></div>
</div>
<div>
<div></div>
<div></div>
<div></div>
</div>
<div></div>
<div>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</div>
body {
margin: 0;
background: white; /*скрываем облака, когда они будут выходит за границы голубого блока*/
}
.picture {
width: 270px;
height: 270px;
background: #CFDEE6;
border-radius: 50%;
margin: 50px auto 0;
position: relative; /*задаем относительное позиционирование, чтобы абсолютно позиционировать элементы внутри*/
overflow: hidden; /*скрываем облака, когда они будут уходить за границы блока*/
}
.tower {
width: 36px;
height: 96px;
background: white;
position: absolute;
bottom: 84px;
left: 66px;
}
.tower:before {
content: "";
width: 0;
height: 0;
border-left: 18px solid transparent;
border-right: 18px solid transparent;
border-bottom: 24px solid #D56851;
position: absolute;
top: -24px;
}
.tower:after {
content: "";
width: 12px;
height: 15px;
background: #6D6D6D;
position: absolute;
top: 12px;
left: 12px;
}
.house {
width: 126px;
height: 36px;
background: white;
position: absolute;
left: 75px;
bottom: 84px;
}
.house:before {
content: "";
width: 110px;
height: 0;
border-bottom: 15px solid #D56851;
border-right: 16px solid transparent;
position: absolute;
top: -15px;
}
.house:after {
content: "";
width: 83px;
height: 21px;
background: #D56851;
position: absolute;
top: -36px;
left: 27px;
}
ul {
margin: 7px 0 0 27px;
padding: 0;
list-style: none;
}
li {
display: inline-block;
width: 12px;
height: 18px;
background: #6D6D6D;
}
li:nth-child(3) {
margin-right: 10px;
}
@-webkit-keyframes clouds {
50% {left: 270px; opacity: 0.5} /*перемещаем блок с облаками за правый край голубого блока, постепенно делая блок прозрачным*/
51% {opacity: 0;} /*чтобы когда он начал перемещаться за левый край голубого блока, его не было видно*/
100% {opacity: 0; left: -110px;} /*смещаем блок с облаками за левую границу голубого блока*/
}
@keyframes clouds {
50% {left: 270px; opacity: 0.5}
51% {opacity: 0;}
100% {opacity: 0; left: -110px;}
}
.clouds {
width: 110px;
height: 40px;
position: relative;
overflow: hidden;
top: 60px;
left: -110px;
-webkit-animation: clouds 20s linear infinite;
animation: clouds 20s linear infinite;
}
.clouds-two {
width: 110px;
height: 40px;
position: relative;
overflow: hidden;
top: 20px;
left: -110px;
-webkit-animation: clouds 20s linear infinite 10s; /*добавляем для второго блока с облаками задержку в анимации*/
animation: clouds 20s linear infinite 10s;
}
.cloud {
background: white;
position: absolute;
}
.one {
width: 30px;
height: 15px;
border-radius: 60px 60px 0 0;
top: 0;
left: 0;
}
.one:after {
content: "";
width: 20px;
height: 8px;
background: white;
border-radius: 40px 40px 0 0;
position: absolute;
left: 20px;
top: 7px;
}
.two {
width: 24px;
height: 10px;
border-radius: 48px 48px 0 0;
top: 30px;
left: 30px;
}
.three {
width: 30px;
height: 15px;
border-radius: 60px 60px 0 0;
top: 25px;
left: 80px;
}
.three:before {
content: "";
width: 20px;
height: 8px;
background: white;
border-radius: 40px 40px 0 0;
position: absolute;
left: -10px;
top: 7px;
}