JSFiddle - React, Tailwind, and code Playground

HTML

<div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec id neque nulla. Maecenas quis nisl fermentum, euismod magna ac, scelerisque sem. Etiam tristique mauris efficitur, consectetur arcu at, vehicula dolor. Nunc aliquam ac orci in tincidunt. Vestibulum non felis vitae enim vulputate ultricies. Aliquam placerat orci sit amet semper blandit. Phasellus tellus lacus, mollis vel sem ut, iaculis cursus risus. Sed non elementum est. Aliquam maximus, lacus quis ultrices laoreet, purus leo condimentum mauris, in pellentesque eros urna vel nulla. Vestibulum elementum, odio non vehicula lobortis, purus ipsum maximus sem, at venenatis libero metus at diam. Fusce sed justo tellus. Suspendisse vel varius magna.
</div>
<div class="foo">
<img src="https://picsum.photos/1000/200">
</div>
<div>
Nam cursus lacus vitae diam elementum, vitae dapibus risus cursus. Quisque ornare sodales arcu in viverra. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In eleifend ante erat, vitae elementum orci tempor sit amet. Pellentesque id mattis sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Morbi tempor felis nulla, ut tempus est vehicula sed. Morbi ut metus at nibh sodales aliquam. Mauris turpis augue, feugiat vitae lectus vitae, tempus porta urna. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum quis massa imperdiet, feugiat est vel, eleifend augue. Morbi efficitur semper nibh. Vivamus viverra lorem in elementum pellentesque.
</div>

CSS

.foo{}
img{border-style: none;
    vertical-align: middle;
    height: auto;}

JavaScript

;
(function($, window, document, undefined) {

    'use strict';

    // requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
    // via: https://gist.github.com/paulirish/1579671
    (function() {
        var lastTime = 0;
        var vendors = ['ms', 'moz', 'webkit', 'o'];
        for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
            window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
            window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
        }

        if (!window.requestAnimationFrame) window.requestAnimationFrame = function(callback, element) {
            var currTime = new Date().getTime();
            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
            var id = window.setTimeout(function() {
                callback(currTime + timeToCall);
            },
            timeToCall);
            lastTime = currTime + timeToCall;
            return id;
        };

        if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function(id) {
            clearTimeout(id);
        };
    }());

    // Detect Vendor Prefix
    // via: https://davidwalsh.name/vendor-prefix
    var vendor = (function() {
        var styles = window.getComputedStyle(document.documentElement, ''),
            pre = (Array.prototype.slice.call(styles)
                .join('')
                .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o']))[1];
        if (pre == 'moz') return 'Moz';
        else return pre;
    })();

    $.fn.simpleParallax = function(options) {

        var pluginName = 'simpleParallax',
            defaultOptions = {
                'orientation': 'up',
                'scale': '1.2'
            },
            params = $.extend(defaultOptions, options);

        var isInit = false;

        function simpleParallax(element) {

           ...