JSFiddle - React, Tailwind, and code Playground

HTML

<div class="element">Scroll down</div>

<!--
//x = null;
//t = currentTime;
//b = begin;
//c = end;
//d = distance;
-->

CSS

body {
    height: 2000px;
}
.element {
    position: absolute;
    top: 300px;
    left: 0;
    background: #000;
    height: 50px;
    width: 200px;
    color: #fff;
}

JavaScript

var
    $window = $(window);
    
$window.on("scroll", function () {
    
    var scrollTop = $window.scrollTop();

    /**@last 2 parameters of scrollTransition:
     * :easingEffect = name of easing effect you want to apply
     * :plus={-1,0,1} with
     *
     * 0     -> do not apply the external easing effect
     * -1    -> substract the external easing effect 
     * 1     -> add the external easing effect
    */
    
    $(".element").css({
        "opacity": 1-scrollTransition(0, 1, 0, 400, scrollTop, "easeInSine", 1),
        "left": scrollTransition(0, 200, 0, 300, scrollTop, "easeOutBounce", 1)
    });
});

function scrollTransition(startValue, endValue, initScroll, distance, scrollTop, easingEffect, plus) {
    var
        min = Math.min,
        max = Math.max,
        sum;

    if(startValue > endValue) {
        sum = min(max((endValue - startValue) / distance * (scrollTop - initScroll) + startValue, endValue), startValue);
    } else {
        sum = min(max((endValue - startValue) / distance * (scrollTop - initScroll) + startValue, startValue), endValue);
    }
    
    switch (easingEffect) //Yeah..... this had to be done manually :(
    {
        case "easeOutQuad": 
            sum += plus*easeOutQuad(null, scrollTop, startValue, endValue, distance);      
            break;
        case "easeInQuad": 
            sum += plus*easeInQuad(null, scrollTop, startValue, endValue, distance);
            break;  
        case "easeOutQuad": 
            sum += plus*easeOutQuad(null, scrollTop, startValue, endValue, distance);
            break;  
        case "easeInOutQuad": 
            sum += plus*easeInOutQuad(null, scrollTop, startValue, endValue, distance);
            break;  
        case "easeInCubic": 
            sum += plus*easeInCubic(null, scrollTop, startValue, endValue, distance);
            break;  
        case "easeOutCubic": 
            sum += plus*easeOutCubic(null, scrollTop, startValue, endValue, distance);
            break;...