Loading
Как подключить шрифт, оптимизировать и сжать код в финале
Инструкция
Текст
Видео
Оптимизация
Процесс

  1. Подключите вариативный шрифт на сайт
  2. Проверьте характеристики шрифта (есть ли у него 'wght' — Weight/Жирность)
  3. Задайте тексту, к которому хотите применить анимацию класс
  4. Если вы подключили шрифт через Cloudinary, то перечислите в коде со страницы Инфо вместо класса .custom-font div свои названия классов через запятую по схеме .название класса div, .название класса div. Подробнее этот процесс описан ниже
  5. Создайте анимацию

Смена шрифта для текста

Если вы выбрали подключение с помощью cloudinary и планируете сделать на странице несколько разных анимаций, то добавьте классы в коде или же используйте расширение annexx для добавления двух классов элементам.

Объясню на примере:

Вы хотите подключить на страницу вариативный шрифт Roboto и использовать его только для заголовка на главном экране и для кнопок, заполняете форму на странице Инфо и вставляете код 2 на страницу.
<!-- Code by Fedyaeva -->
<!--Подключение шрифта-->
<style>
    @font-face {
	    src: url('RobotoVar-link.woff2') format('woff2-variations'),
	         url('RobotoVar-link.woff') format("woff");
	    font-family: "Roboto Var";
	    font-display: swap;
	    font-style: normal;
    }
    
    .custom-font div {
        font-family: "Roboto Var", sans-serif!important;
    }
</style>
Всему тексту, который должен быть вариативным вы задали класс custom-font. Если вы планируете для всего этого текста сделать одну анимацию, то пропускайте описание ниже. Если вы хотите сделать разную анимацию для заголовка и для кнопок, то выбирайте один из вариантов:
— Используйте расширение annexx для добавления двух классов элементам: custom-title для заголовка и custom-button для всех кнопок.
— Замените custom-font в кодe на названия классов текстовых элементов через запятую по образцу: .название класса div, .название класса div
.custom-tilte div, .custom-button div {
    font-family: "Roboto Var", sans-serif!important;
}
Оптимизация кода

Когда вы сделали все анимации — перечислите классы текста в форму через запятую, скопируйте код и вставьте в блок T123. 

Этот код позволит проигрывать анимацию только тогда, когда она видна на экране и не грузить память компьютера, когда анимацию на экране не видно. Я рекомендую не пропускать этот шаг, чтобы пользователи со слабыми ПК не чувствовали дискомфорта при открытии сайта.

! Не вводите классы для анимации короткой фразы JS, она предусматривает свой код для оптимизации
<!-- Code by Fedyaeva -->
<script>
document.addEventListener("DOMContentLoaded",function(){
    function obs () {
        let allAnimation = document.querySelectorAll('.custom-font, .custom-font-1');
        allAnimation.forEach((el) => el.classList.add('page-animation'));
    
        var observer = new IntersectionObserver(function(entries, observer) {
            entries.forEach(function(entry) {
                if (entry.isIntersecting) entry.target.style.animationPlayState = "running"
                else entry.target.style.animationPlayState = "paused"
            });
        });
    
        var variableTexts = document.querySelectorAll(".page-animation");
        variableTexts.forEach(function(el) { observer.observe(el); });
    }
    
    obs();
    
    window.addEventListener('scroll', function() {
        obs();
    })
});
</script>
Сжатие кода

Для лучшей оптимизации и быстрой загрузки страницы сделайте дубликат блока T123 с кодом (это необходимо, чтобы в случае "поломки кода" оптимизатором была возможность его восстановить), скройте блок, сожмите код на этом сайте, вставьте его в новый блок T123, протестируйте работу. 

При необходимости удалите не сжатый код, если не планируете его редактировать в ближайшее время. 
Анимация заголовков и текста
Простая анимация
Göbobeling ryheten
Vijuna risk san räddningskort
Lörem ipsum ber tregen. Vijuna risk san. Icke-binär göbobeling ryheten onde alig. Episs telev. Jabelingar polyre.
Bolagt syr. Sede migeras när semiheten. Delogi vaferade, pogt ett mifass oaktat endonetik. Sut vobba, intrapusamma. Paradunal reasm.
Инструкция
(скрыть)
-- FPS
1. Добавьте нужный текст в zero block и задайте ему класс.

2. Вставьте название класса в поле, введите начальную и конечную жирность текста.
Смотрите характеристику 'wght' у шрифта.

3. Выберите flex — "да", если хотите, чтобы при анимации текст расширялся от центра к краям (для моноширинных шрифтов можете выбрать "нет").

4. При необходимости замените значения длительности, задержку и функцию скорости.
Подобрать функцию скорости можно на этих сайтах: cubic-bezier.com и easings.net

5. Выберите, хотите ли вы сделать анимацию бесконечной или проигрывающейся только один раз.

6. Скопируйте код 1 для повторения анимации в заголовке или код 2 для повторения анимации в абзацах и вставьте код в блок T123.

! Не забудьте после анимации добавить класс анимированного текста в форму Инструкция-Оптимизация
В примере выше для абзацев использован моноширинный шрифт. Если вы хотите, чтобы при анимации текст в абзацах не переносился на новую строку — выбирайте моноширинные гарнитуры. Пример: Roboto Mono, Recursive, Noto Sans, Golos.
<!-- Code by Fedyaeva -->
<!-- Анимация с вариативным шрифтом -->
<style>
    @media screen and (min-width: 768px) {
        .custom-font {
            display: flex;
            font-variation-settings: 'wght' 400;
            animation: sample-width 1.5s ease-in-out infinite 0s;
            will-change: transform;
            animation-fill-mode: backwards;
        }
        .custom-font div {
            display: flex!important;
            justify-content: space-around;
            align-items: center;
        }
    }
    @keyframes sample-width {
        50% {
            font-variation-settings: 'wght' 600;
        }
    }
</style>
<!-- Code by Fedyaeva -->
<style>
    @media screen and (min-width: 768px) {
        .custom-font {
            display: flex;
            font-variation-settings: 'wght' 300;
            animation: sample-width-1 5s ease-in-out infinite 0s;
            will-change: transform;
            animation-fill-mode: backwards;
        }
        .custom-font div {
            display: flex!important;
            justify-content: space-around;
        }
    }
    @keyframes sample-width-1 {
        10%, 30% {
            font-variation-settings: 'wght' 300;
        }
        35% {
            font-variation-settings: 'wght' 100;
        }
    }
</style>
Анимация для выделения фактоидов в тексте или цитат
Выделение
Everest at 8848 meters is the tallest mountain on the planet. It is considered in the Himalayas and is a mountain peak. Many people dream of conquering this peak, but few decide to take such a step. Even the most experienced climbers have no guarantees that they can
ever help get to the top of the mountain.
"People who are not afraid of obstacles and conquer the highes mountain on the planet."
One of these people was a mountaineer from Kazakhstan Baglan Erkebaev.
It took him 10 years to climb Everest.
Инструкция
(скрыть)
1. Добавьте текст в zero block и задайте ему класс.

2. Фразы, которые вы хотите анимировать сделайте жирными с помощью кнопки B-Жирный.

3. Вставьте название класса в поле, введите начальную и конечную жирность текста.
Смотрите характеристику 'wght' у шрифта.

4. При необходимости замените значения длительности, задержку между анимацией фраз и функцию скорости.
Подобрать функцию скорости можно на этих сайтах: cubic-bezier.com и easings.net

5. Выберите, хотите ли вы сделать анимацию бесконечной или проигрывающейся только один раз.

6. Скопируйте код 1 и вставьте в блок T123.

! Не забудьте после анимации добавить класс анимированного текста в форму Инструкция-Оптимизация.
<!-- Code by Fedyaeva -->
<!-- Анимация с вариативным шрифтом -->
<style>
    @media screen and (min-width: 768px) {
        .custom-font-3 {
            font-variation-settings: 'wght' 100;
        }
        .custom-font-4 strong {
            font-weight: 100!important;
            animation: sample-width-2 5s ease-in-out infinite 0s;
            will-change: transform;
            animation-fill-mode: backwards;
        }
    }
    @keyframes sample-width-2 {
        10%, 30% {
            font-variation-settings: 'wght' 600;
        }
        40% {
            font-variation-settings: 'wght' 100;
        }
    }
</style>
<script>
document.addEventListener("DOMContentLoaded",function(){
    let strongText = document.querySelectorAll('.custom-font-3');
    let textAnimDelay = 0;
    
    strongText.forEach((el) => {
        if (strongText.length > 1) {
            textAnimDelay += 0.25;
            el.style.animationDelay = "" + textAnimDelay + "s";
        }
    })
});
</script>
Анимация подойдет для кнопок, ссылок и заголовков
Волна в одну сторону
Sms-anställning platta till kurvan att becknarväska har opesk: vatt tinde fäna därat och prer på diavingen.
View more
Инструкция
(скрыть)
Не рекомендую использовать анимацию для очень длинных фраз.

1. Добавьте нужный текст в zero block и задайте ему класс.

2. Вставьте название класса в поле, введите начальную и конечную жирность текста.
Смотрите характеристику 'wght' у шрифта.

3. При необходимости замените значения длительности, задержку между началом анимации букв и функцию скорости.
Подобрать функцию скорости можно на этих сайтах: cubic-bezier.com и easings.net

4. Выберите, хотите ли вы сделать анимацию бесконечной или проигрывающейся только один раз. При необходимости отключите на мобильном устройстве для оптимизации и более быстрой загрузки страницы.

5. Скопируйте код 1 и вставьте в блок T123.

! Не забудьте после анимации добавить класс анимированного текста в форму Инструкция-Оптимизация

<!-- Code by Fedyaeva -->
<!-- Анимация с вариативным шрифтом -->
<style>
    @media screen and (min-width: 768px) {
        .custom-font-5 span {
            font-variation-settings: 'wght' 200;
            animation: sample-width-3 5s ease-in-out infinite;
            will-change: transform;
            animation-fill-mode: backwards;
        }
    }
    @keyframes sample-width-3 {
        10%, 30% {
            font-variation-settings: "wght" 600;
        }
        40% {
            font-variation-settings: 'wght' 200;
        }
    }
</style>
<script>
document.addEventListener("DOMContentLoaded",function(){function splitText(el) {let elem = document.querySelectorAll(el);elem.forEach((elm) => {let textContainer = elm.querySelector('div');textContainer.innerHTML = '<span>' + elm.textContent.trim().split('').join('</span><span>') + '</span>';})}
function addAnimation(el, time) {let elem = document.querySelector(el);let textLength = elem.querySelectorAll('div span').length;let delay = 0;for (let i = 0; i <= textLength; i += 1) {let textSymbol = `div span:nth-of-type(${i})`;let span = elem.querySelector(textSymbol);if (span) {span.style.animationDelay = `${delay}s`;delay += time;}}}
splitText('.custom-font-5');
addAnimation('.custom-font-5', 0.25);});
</script>
Анимация подойдет для коротких заголовков, ссылок и кнопок
Анимация короткой фразы JS
Jabelingar
View more
Инструкция
(скрыть)
1. Добавьте нужный текст в zero block и задайте ему класс.

2. Вставьте название класса в поле.

3. Введите начальную и конечную жирность текста.
Смотрите характеристику 'wght' у шрифта.

4. При необходимости замените значения длительности и задержку между анимацией отдельных букв.

5. Скопируйте код и вставьте в блок T123.
<!-- Code by Fedyaeva -->
<!-- Анимация с вариативным шрифтом -->
<style>
    @media screen and (min-width: 768px) {
        .custom-font-6 span {
            font-variation-settings: "wght" var(--font-weight, 100);
        }
    }
</style>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.3.4/gsap.min.js"></script>
<script>
document.addEventListener("DOMContentLoaded",function(){
function splitText(el) {let elem = document.querySelectorAll(el);elem.forEach((elm) => {let textContainer = elm.querySelector('div');textContainer.innerHTML = '<span>' + elm.textContent.trim().split('').join('</span><span>') + '</span>';})}
function obs() {let allAnimation = document.querySelectorAll('.custom-font-6');allAnimation.forEach((el) => el.classList.add('page-animation-js'));var callback = function (entries, observer) {entries.forEach(function(entry) {if (entry.isIntersecting) {entry.target.timeline.play();} else {entry.target.timeline.pause(0);}});};
let observer = new IntersectionObserver(callback);let targets = document.querySelectorAll(".page-animation-js");let chars = document.querySelectorAll('.custom-font-6 span');
targets.forEach(function(target) {const action = gsap.timeline({paused: true}).from(chars, {opacity: 1, scale: 0, ease: "sine", delay: 0.25}).to(chars, {"--font-weight": 600,duration: 2,
ease: "sine.inOut",stagger: {yoyo: true,each: 0.1,repeat: -1}}, 1);target.timeline = action;});Array.prototype.forEach.call(targets, (el) => {observer.observe(el);}); };if (window.matchMedia("(min-width: 768px)").matches) {splitText('.custom-font-6');obs();};});
</script>
Анимация подойдет для коротких заголовков, ссылок и кнопок
Анимация двух слов
tibel &nbsp;som
Инструкция
(скрыть)
Для этой анимации у шрифта должны быть характеристики жирности 'wght' и 'wdth'.

1. Добавьте нужный текст в zero block и задайте ему класс. Два слова должны быть разделены символом &nbsp;

3. Вставьте название класса в поле. При необходимости замените значения: начальной и конечной жирности, начальной и конечной ширины букв.

4. Выберите, хотите ли вы сделать анимацию бесконечной или проигрывающейся только один раз.

5. Скопируйте код и вставьте в блок T123.

! Не забудьте после анимации добавить класс анимированного текста в форму Инструкция-Оптимизация.
<!-- Code by Fedyaeva -->
<!-- Анимация с вариативным шрифтом -->
<style>
    @media screen and (min-width: 768px) {
        .custom-font-7 span:first-child {
            animation: sample-width-5 3s ease-in-out infinite both 0s;
            font-variation-settings: "wght" 100, "wdth" 50;
            will-change: transform;
            animation-fill-mode: backwards;
        }
        .custom-font-7 span:last-child {
            animation: sample-width-6--left 3s ease-in-out infinite both 0s;
            font-variation-settings: "wght" 400, "wdth" 100;
            will-change: transform;
            animation-fill-mode: backwards;
        }
    }
    @keyframes sample-width-5 {
        0%, 100% {
            font-variation-settings: "wght" 100, "wdth" 50;
        }
        50% {
            font-variation-settings: "wght" 400, "wdth" 100;
        }
    }
    @keyframes sample-width-6--left {
        0%, 100% {
            font-variation-settings: "wght" 400, "wdth" 100;
        }
        50% {
            font-variation-settings: "wght" 100, "wdth" 50;
        }
    }
</style>
<script>
document.addEventListener("DOMContentLoaded",function(){
    let text = document.querySelectorAll('.custom-font-7 div');
    if (text.length > 1) {
        text.forEach((el) => el.innerHTML = '<span class="left">' + el.textContent.trim().split(' ').join('</span><span class="right">') + '</span>');
    } else {
        text = document.querySelector('.custom-font-7 div');
        text.innerHTML = '<span class="left">' + text.textContent.trim().split(' ').join('</span><span class="right">') + '</span>';
    }
})
</script>
Закинуть на кефас
Если ты пользуешься моими эффектами для тильды и хочешь меня поблагодарить — ткни на одну из кнопок
Made on
Tilda