JSFiddle - React, Tailwind, and code Playground

HTML

<textarea name="" id="source">
#Os problemas de design do novo padrão de navegação da Globo.com
    
## Introduzido no topo das páginas do G1 e do Globo Esporte, o novo menu está longe de ser uma solução ideal para os milhões de usuários diários do portal
    
A [Globo.com](http://globo.com) sempre esteve à frente no que diz respeito a soluções de design para sites informativos, tanto que dita tendência até hoje para portais brasileiros. Desde como é organizada a estrutura da informação, quanto à adoção de padrões visuais que viraram o senso comum de vários portais do país. Nos últimos dias eles publicaram o novo modelo de navegação do portal e acabei percebendo alguns problemas.
    
###O *mobile first* que não funciona em mobile
    
Não tenho acesso a dados estatísticos das plataformas mais usadas para acessar o portal. Porém levando em consideração estatísticas gerais, imagino que o aumento do acesso por tablets e smartphones tenha sido o grande motivo para que a nova navegação fosse criada com a filosofia mobile first. Mas três coisas não fazem sentido:
1. As páginas iniciais e de cada notícia do G1 ou Globo Esporte (onde o menu está sendo usado) não são responsivas. Apesar da homepage da globo.com ser.
2. Existe uma versão exclusiva mobile dos sites em m.globo.com, m.g1.globo.com e m.globoesporte.globo.com com outro padrão de navegação.
3. A nova navegação, apesar de ser responsiva, não suporta touch events.
    
Isso quer dizer que ao tentar entrar no portal usando um tablet, você não vai conseguir usar a navegação **principal**. Mas veja primeiro o comportamento no desktop.</textarea>
<div id="target">
     <h1>Os problemas de design do novo padrão de navegação da Globo.com</h1>

     <h2>Introduzido no topo das páginas do G1 e do Globo Esporte, o novo menu está longe de ser uma solução ideal para os milhões de usuários diários do portal</h2>

    <p>A <a href="http://globo.com">Globo.com</a> sempre esteve à frente no que diz respeito a soluções de design...

CSS

#source {
    position:fixed;
    left:0;
    top:0;
    width:50%;
    height:100%;
    background:#eee;
    border:none;
    outline:none;
    padding:10px;
    box-sizing:border-box;
}
#target {
    position:fixed;
    right:0;
    top:0;
    width:50%;
    height:100%;
    padding:10px;
    box-sizing:border-box;
    overflow-y:scroll;
}

JavaScript

(function () {
    var target = $("#target")[0]; // <== Getting raw element
    $("#source").scroll(function () {
        target.scrollTop = (target.scrollHeight-this.clientHeight) * (100 * this.scrollTop / (this.scrollHeight-this.clientHeight)) / 100;
        target.scrollLeft = (target.scrollWidth-this.clientWidth) * (100 * this.scrollLeft / (this.scrollWidth-this.clientWidth)) / 100;
    });
})();