Quanto mais avançamos no tempo, maior é a necessidade de fazer mais em menos tempo. A leitura é um dos principais meios para enriquecer a nossa mente. Mas muitas vezes não encontramos tempo para ler tudo o que gostaríamos. E se arrumássemos uma maneira de ler mais em menos tempo?
Durante a leitura, o nosso globo ocular se move de um lado para o outro continuamente para seguir o curso do texto. Isso demanda tempo e esforço físico. É fácil perceber que se conseguirmos ler sem ter que mover o globo ocular, conseguiremos ler mais rápido e cansaremos menos.
Nosso método se resume a pegar cada palavra de um texto e mostrar uma por uma no mesmo lugar, uma substituindo a anterior. Assim poderemos ler sem mover o globo ocular. Mas como fazemos isto?
Dado um texto qualquer armazenado em uma variável, o que precisamos fazer é um split para termos um array onde cada elemento do array é uma única palavra e então ir atualizando o Dom de modo a mostrar os elementos do array sequencialmente. Segue o código javascript que faz este trabalho:
function read(){ text = document.getElementById("text").value; //get the text from a textarea with id text myView = document.getElementById("viewText"); //get a reference to a span which we are going to use to read the text text = text.replace(/(:? +|\n)/g," "); // replace more then one space for just one space and replace \n for one space var array = text.split(" "); // split the text using the space as a delimiter var current = 0; var delay = 500; // time in milliseconds function refresh(){ // this function will be called recursively. myView.textContent = array[current] //refresh the dom with the next word current++; setTimeout(function(){ // every "delay" milliseconds the refresh function will be called until the array reach the end. if(array[current]){ refresh(); } },500) } refresh(); // start the recursion } document.getElementById("read").onclick = read; //attach a listener to a button with Id read
Segue o html e css que funcionará junto com este código javascript
<textarea id="text" style="width:100%;height:100px">A leitura, que é um testemunho oral da palavra escrita de diversos idiomas, com a invenção da imprensa, tornou-se uma atividade extremamente importante para a civilização, atendendo múltiplas finalidades.</textarea> <div id="view" style="text-align:center;margin-top:30px;position:relative;"> <span id="viewText">fasdfaf</span> <div id="center" class="center"></div> </div> <button style="margin-top:30px;" id="read">Read now</button>
.center{ background:rgba(200,200,200,0.2); width:10px; position:absolute; top:0; bottom:0; left:50%; margin-left:-5px; }
Para ver este exemplo em execução, veja esse link para o jsfiddle