#javascript #jquery #css
#javascript #jquery #css
Вопрос:
Попытка воспроизвести ту же функциональность, что и https://www.apple.com/uk/ipad-air / где при прокрутке градиент текста меняется. Прокрутите вниз до «Мощный. Красочный. Замечательно», чтобы увидеть эффект, который я пытаюсь воспроизвести. Я знаю, как сделать обычный линейный градиент (https://codepen.io/laluuk/pen/xxOwxGv ) но как мне изменить его при прокрутке, я предполагаю, что я должен использовать JS / jQuery scroll, но на самом деле не знаю, как это сделать. Был бы очень признателен за помощь…
<section class="text-1">
<h1>Powerful.</h1>
</section>
<section class="text-2">
<h1>Wonderful.</h1>
</section>
section {
height: 100vh;
}
.text-1 {
text-transform: uppercase;
background: linear-gradient(to right, #30cfd0 0%, #330867 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-size: 72px;
font-family: "Poppins", sans-serif;
}
.text-2 {
text-transform: uppercase;
background: linear-gradient(to right, #11825b 0%, #330867 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-size: 72px;
font-family: "Poppins", sans-serif;
}
Ответ №1:
у меня получилось что-то вроде этого:
const textElement1 = document.querySelector('.text-1');
const textElement2 = document.querySelector('.text-2');
document.onscroll = () => {
const textElement1DistanceFromTop = textElement1.getBoundingClientRect().top;
const textElement2DistanceFromTop = textElement2.getBoundingClientRect().top;
const { clientHeight } = document.documentElement;
if (textElement1DistanceFromTop > clientHeight || textElement2DistanceFromTop < 0) return;
const startPrecent = textElement2DistanceFromTop / 4 '%';
const endPrecent = textElement2DistanceFromTop / 4 100 '%';
textElement1.style.backgroundImage = `
linear-gradient(to right, #30cfd0 ${startPrecent},#330867 ${endPrecent})`;
textElement2.style.backgroundImage = `
linear-gradient(to right, #11825b ${startPrecent},#330867 ${endPrecent})`;
}
просто поиграйте с математикой преценденции
Комментарии:
1. Спасибо. Извините, поиграл с этим, думаю, я что-то не так понимаю. codepen.io/laluuk/pen/xxOwxGv
2. я думаю, что логика верна, потому что проценты меняются при прокрутке (как в вашей ссылке), но опять же вам нужно подумать и рассчитать математическую область. это слишком много для меня .. но я думаю, что я дал вам хорошее начало 🙂