Прелоадер с заполнением и счетчиком

Модификатор для добавления анимации заполнения экрана и счетчиком прогресса загрузки страницы

Код скопирован!
Скопировать 1й-код
Код скопирован!
Скопировать 2й-код
Шаг 2
Открываем редактор Zero Block
Шаг 3
Добавляем блок T123
jQuery
Для корректной работы блоков подключите библиотеку jQuery:
Инструкция с подключением кода
Настройки сайта -> Еще -> Подключить jQuery на страницах сайта
  1. Задаем блоку класс uc-tistols-pre01
  1. Задаем WINDOW CONTAINER HEIGHT 100%
  2. Добавляем фон блока в BG COLOR, он будет показываться изначально
  3. Добавляем шейп с позиционированием CONTAINER: WINDOW (X: LEFT, Y: CENTER)
  4. Делаем ширину 1%, высоту 100%
  5. Выравниваем по левому краю
  6. Задаем цвет, который будет заполнять экран при загрузке
  7. Задаем класс шейпу tistols-pre01progress
  1. Копируем в него коды
Шаг 1
Создаем Zero Block
<style>
.uc-tistols-pre01 {
position: absolute;
width: 100%;
left:0;
top: 0;
z-index: 9999;
transition:all 2s ease;
}
.prel {
position: fixed;
z-index: 9999;
}
.hide {
top:-100%;
}
.pre01-num {
mix-blend-mode: difference;
}
.t-body {
overflow: hidden
}
.tistols-pre01progress .tn-atom {
background-color:#010101!important; /*цвет шейпа для заполнения*/
}
.pre01-num .tn-atom {
color:#E1FC52!important; /*цвет текста (такой же, как фон)*/
}
.uc-tistols-pre01 .t396__artboard {
background-color:#E1FC52!important; /*цвет фона*/
}
</style>

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.10.4/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.10.4/CustomEase.min.js"></script>

<script>
var body = $('.t-body')
body.addClass('diss')
var block = $('.uc-tistols-pre01');
block.addClass('prel');
var bar = $('.tistols-pre01progress')
// variables
let customEase =
"M0,0,C0,0,0.13,0.34,0.238,0.442,0.305,0.506,0.322,0.514,0.396,0.54,0.478,0.568,0.468,0.56,0.522,0.584,0.572,0.606,0.61,0.719,0.714,0.826,0.798,0.912,1,1,1,1";
let counter = {
value: 0
};
let loaderDuration = 3;

if (sessionStorage.getItem("visited") !== null) {
loaderDuration = 5;
counter = {
value: 0
};
}
sessionStorage.setItem("visited", "true");

function updateLoaderText() {
let progress = Math.round(counter.value);
$(".pre01-num .tn-atom").text(progress);
}
function endLoaderAnimation() {
block.removeClass('prel');
block.addClass('hide');
body.css('overflow','visible');
}

let tl = gsap.timeline({
onComplete: endLoaderAnimation
});

tl.to(counter, {
value: 100,
onUpdate: updateLoaderText,
duration: loaderDuration,
ease: CustomEase.create("custom", customEase)
});
tl.to(bar, {
width: "100%",
duration: loaderDuration,
ease: CustomEase.create("custom", customEase)
}, 0);
</script>
<style>

.button .tn-atom {
--duration: .7s;
--move-hover: -8px;
box-sizing: border-box;
-webkit-tap-highlight-color: transparent;
-webkit-appearance: none;
transition: background-color 0.3s ease-in
}


.button .tn-atom div {
display: flex;
justify-content: center
}

.button .tn-atom div span {
display: block;
min-width: 5px;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
font-style: normal
}

.button .tn-atom:hover {
--y: var(--move-hover);
--shadow: var(--shadow-hover);
--move: -3px
}

.button .tn-atom:hover span {
-webkit-animation: move var(--duration) linear var(--d) infinite;
animation: move var(--duration) linear var(--d) infinite
}

@-webkit-keyframes move {
40% {
transform: translateY(var(--move))
}
}

@keyframes move {
40% {
transform: translateY(var(--move))
}
}

.t-col-flex {
display: flex
}
</style>

<script>
window.onload = function() {
let button = document.querySelectorAll('.button .tn-atom');
button.forEach(button => button.innerHTML = '<div><span>' + button.textContent.trim().split('').join('</span><span>') + '</span></div>');

let delay = 0.03;

button.forEach((el) => {
let symbolLength = el.querySelectorAll('.button .tn-atom div span').length;
for (let i = 1; i <= symbolLength; i += 1) {
let buttonSymbol = `div span:nth-of-type(${i})`;
let span = el.querySelector(buttonSymbol);
span.style.setProperty("--d", delay + "s");
delay += 0.03;
}
delay = 0.03;
})
}
</script>
Шаблон страницы
Код скопирован!
68262991
Нажми, чтобы скопировать номер
Текст скопирован в буфер обмена!
Текст скопирован в буфер обмена!
Текст скопирован в буфер обмена!
Вам также может быть интересно:
Подпишитесь на наши обновления в телеграм