;(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

Luzes, câmera, ação: Chanel volta aos desfiles em grande estilo

Chanel - Semana de Moda de Paris 2020 - Stephane Cardinale - Corbis/Corbis via Getty Images
Chanel - Semana de Moda de Paris 2020 Imagem: Stephane Cardinale - Corbis/Corbis via Getty Images

Da AFP

06/10/2020 11h19

O show tem que continuar: Chanel retomou, nesta terça-feira (6) em Paris, seus desfiles chamativos, recriando o famoso letreiro gigantesco de Hollywood com o nome da marca, uma forma de celebrar sua relação com o cinema e com as atrizes que veste há quase um século.

No último dia da Semana da Moda "figital", que combinou o físico com o digital, a marca sa incorporou as medidas sanitárias impostas pela epidemia de covid-19 —público reduzido, uso de máscara, evento curto—, mas não desistiu de chamar a atenção visualmente, como era costume do estilista Karl Lagerlfeld, que faleceu em fevereiro de 2019.

Sob o imponente teto de vidro do museu Grand Palais, as letras da Chanel, com vários metros de altura, brilharam com lâmpadas acesas, em alusão ao de Hollywood.

Aos seus pés, as modelos apresentaram uma coleção de prêt-à-porter em referência às atrizes que a fundadora da marca, Coco Chanel, começou a vestir nos anos 1930, dentro e fora das telas.

Esta coleção, que pretende ser "alegre, colorida e viva" se inspira "nas musas da marca", acrescentou a estilista sa, lembrando que tanto Gabrielle Chanel como Lagerfeld contaram com muitas divas do cinema entre seus clientes, de Greta Garbo e Katherine Hepburn até Keira Knightley e Margot Robbie.

Curvas

Assim como as outras marcas que decidiram desfilar nesta Semana da Moda, Chanel restringiu drasticamente o número de espectadores. Também cancelou a presença de atrizes, influencers e outras celebridades que costumam viajar para Paris para este evento importante da indústria da moda, assim como as modelos com que normalmente trabalha, como as irmãs Gigi e Bella Hadid e Kaia Gerber.

Por outro lado, contou com a participação de Jill Kortleve, uma modelo de 26 anos nascida na Holanda que desfila nas arelas reivindicando suas curvas, a fim de promover uma mudança na moda.

Junto aos ternos de tweed pretos, sobressaem os vestidos fluidos e as camisas estampadas com as letras da Chanel, como se fossem neon, assim como as peças assimétricas ou bimateriais.

Uma saia preta leva em letras brancas o nome de Gabrielle Chanel, protagonista de uma primeira retrospectiva em Paris que homenageia os códigos que a estilista trouxe para a moda feminina: liberdade, elegância, naturalidade e conforto.

O programa da Semana da Moda, a primeira "figital" da história, terminará nesta terça-feira com o desfile da Louis Vuitton. A próxima, de roupas masculinas, está prevista para janeiro de 2021 e, por enquanto, é impossível antecipar se a situação de saúde permitirá retomar os desfiles físicos com normalidade.