通过 js 修改 css 变量来更简单的实现动画效果,dom.style.setProperty 的使用

setProperty

const a = document.querySelector('xx');
xx.style.setProperty(name, value);

顺带记一下获取的

// 该方法获取的值带 `单位`
getComputedStyle(a).getPropertyValue('--x');

demo

Less bezel, more screen.
.iphoneText-wrap {
    margin: 100px auto;
    width: 400px;
    height: 400px;
    background-color: #000;
    overflow-y: auto;
}

.text {
    height: 300%;
}

.ihone-title {
    --x: 0%;
    position: sticky;
    top: 50%;
    transform: translateY(-50%);
    text-align: center;
    color: transparent;
    font-family: 'Bungee OutLine', cursive;
    background-image: linear-gradient(75deg, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 1) 33.33%, rgba(255, 255, 255, 0) 66.67%, rgba(255, 255, 255, 0) 100%);
    background-position-x: calc(100% - var(--x));
    -webkit-background-clip: text;
    background-size: 300% 100%;
}
<section class="iphoneText-wrap">
  <div class="text">
    <h1 class="ihone-title">Less bezel, more screen.</h1>
  </div>
</section>
const iphoneTextWrap = document.querySelector('.iphoneText-wrap');
const ipTitle = document.querySelector('.ihone-title');

iphoneTextWrap.addEventListener('scroll', () => {
  const x = iphoneTextWrap.scrollTop / (iphoneTextWrap.scrollHeight - iphoneTextWrap.clientHeight);
  ipTitle.style.setProperty('--x', `${x * 100}%`)
})