;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Tropicalismo - Movimento mudou a cultura brasileira

Gilberto Gil, participante do Tropicalismo, desfila no afoxé Filhos de Gandhi - Luciana Lima/ABr
Gilberto Gil, participante do Tropicalismo, desfila no afoxé Filhos de Gandhi Imagem: Luciana Lima/ABr

Valéria Peixoto de Alencar*, Especial para a Página 3 Pedagogia & Comunicação

O Tropicalismo foi um movimento brasileiro de ruptura cultural que, na música, tem como marco o lançamento, em 1968, do disco Tropicália ou Panis et Circencis. Seus participantes foram os cantores-compositores Caetano Veloso, Gilberto Gil e Tom Zé, a cantora Gal Costa, a banda Os Mutantes e o maestro Rogério Duprat. A cantora Nara Leão e os letristas José Carlos Capinan e Torquato Neto completaram o grupo, que teve também o artista gráfico, compositor e poeta Rogério Duarte como um de seus principais mentores.

O nome Tropicália surgiu a partir de uma obra do artista Hélio Oiticica, que propunha uma experiência sensorial a partir de elementos que eram considerados característicos do Brasil.

Um momento importante para a definição e consolidação do tropicalismo foi um dos Festivais de Música Popular Brasileira promovido pela Rede Record, em São Paulo, no ano de 1967. Nesse festival, Caetano Veloso cantou a música Alegria, alegria - e Gilberto Gil, juntamente com os Mutantes, Domingo no parque. No ano seguinte, o festival foi considerado totalmente tropicalista, com Tom Zé apresentando a canção São Paulo.

O movimento foi influenciado por correntes artísticas internacionais da época (como o rock e o concretismo), às quais se adicionaram elementos tradicionais da cultura brasileira (samba, baião, etc.). A utilização de elementos estrangeiros na sonoridade, como as guitarras, despertou a crítica dos adeptos de outro movimento musical, a bossa nova.
 

Política e irreverência

Nascidos sob o regime militar brasileiro, os tropicalistas tinham, inclusive, objetivos políticos e sociais, mas acreditavam que a experiência estética era um instrumento social revolucionário independente de uma prática que promovesse mudanças políticas. Isso provocava críticas de outros artistas, abertamente engajados, que consideravam os tropicalistas muito vagos em suas manifestações contra a ditadura existente no Brasil naquela época.

O movimento tropicalista marcou pela irreverência e pela ironia de suas obras, e provocou transformações não só na música, mas também na moral e no comportamento. Por meio dele, a contracultura hippie foi assimilada, com a adoção da moda dos cabelos longos encaracolados e das roupas escandalosamente coloridas.

O tropicalismo, libertário por excelência, durou pouco mais de um ano e acabou reprimido pela ditadura militar. Seu fim começou com a prisão de Gil e Caetano, em dezembro de 1968. Mas, depois deles, a cultura brasileira nunca mais seria a mesma.



Dica de site

  • Tropicália