-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Анимируем смены состояний интерактивных элементов #1
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -121,3 +121,4 @@ | |
margin: 0 30px 30px; | ||
display: block; | ||
} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -86,13 +86,21 @@ | |
} | ||
} | ||
|
||
section.active .intro__message { | ||
transform: translate(0, 0); | ||
opacity: 1; | ||
transition: all 3s; | ||
} | ||
|
||
.intro__message { | ||
flex: none; | ||
width: 50.9rem; | ||
max-width: 50%; | ||
text-transform: uppercase; | ||
font-size: 2.4rem; | ||
line-height: 1.27; | ||
transform: translate(0, 20px); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ☝️ - Весь макет сверстан в единицах rem, которые привязаны к размеру экрана. Фиксированные значения в px могут разойтись с ними и привести к багам или странным движениям на определенных размерах экрана. Лучше продолжать использовать rem. Если все же нужны пиксели, то стоит все проверять много раз на всех возможных размерах экранов - такие нестыковки легко пропустить. 💡 - Если вы раньше не сталкивались с версткой на плавающих размерах шрифта и с CSS-шлюзами, то будет полезно познакомиться с хорошей статьей по теме. В современном CSS у нас еще появилась функция clamp(), с помощью нее можно немного сократить код самих шлюзов, но суть происходящего не поменяется. 💡 - В целом при работе с CSS-анимациями очень важно обращать внимание на адаптивность. И, как ни странно, именно выбор единиц измерения часто будет отделять хорошо проделанную работу от глючного поделия, которое придется переверстывать, потому что оно рассыпается при малейшем изменении размера экрана. На появлении текста из прозрачности мы можем не заметить, что что-то поехало и логика анимации изменилась, но когда компоненты становятся более комплексными - проблемы становятся очевидными для всех вокруг. Обычно хорошей идеей будет выбор единиц измерения в соответствии с логикой в дизайне. Линия в 1 пиксель, смещение на высоту буквы (em/rem), увеличение от 0% до 100%, вписывание чего-то в размер окна (vh, vw, vmin, vmax) - там часто будет простое человеко-понятное описание происходящего. И его можно перенести в CSS с помощью местных единиц измерения. Поначалу такой подход может показаться требующим больших мыслительных усилий, чем тупая копипаста пикселей везде, или нагромождение media-выражений на каждый чих, но в долгосрочной перспективе мы экономим кучу времени на исправлениях и подпорках, чтобы все хоть как-то работало. |
||
opacity: 0; | ||
|
||
@media (min-width: $stop-scaling) { | ||
width: 509px; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
☝️ - Где-то тут заложилась логическая ошибка. Если взять стандартный fullhd монитор и посмотреть на эту анимацию, то мы увидим, что в самом начале меняется длина кнопки с текстом. Она увеличивается, ее левый край прыгает, а текст смещается влево. Такого быть не должно. Кнопка должна стоять на месте.
☝️ - При работе с CSS анимациями важно следить за тем, чтобы они не ломали верстку вокруг себя. Анимации на одних элементах могут смещать другие, провоцировать появление скроллбаров от переполнения чего-то, давать изменения в размерах элементов в 1px (артефакты округления), которые заметно портят общее впечатление от интерфейса, могут просто скрывать за собой другие анимации или перебивать их стили, могут расходиться с изначальными состояниями компонентов, и.т.д. Помните о том, что анимации существуют не в вакууме, и всегда проверяйте, что они работают нормально после внедрения в реальный интерфейс.