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

Semana de Moda de Xangai acontecerá pela internet devido ao coronavírus

Homem caminha na estação de trem de Xangai, na China, coberto com uma sacola plástica em meio ao aumento de casos de coronavírus no país - ALY SONG/REUTERS
Homem caminha na estação de trem de Xangai, na China, coberto com uma sacola plástica em meio ao aumento de casos de coronavírus no país Imagem: ALY SONG/REUTERS

Sophie Yu e Brenda Goh

Da Reuters, em Xangai, China

28/02/2020 11h24

Adiada inicialmente por causa do surto de coronavírus, a Semana de Moda de Xangai acontecerá apenas pela internet, graças a uma parceria com a plataforma de vendas Tmall, do Alibaba Group, disseram os organizadores do evento.

O espetáculo, que em outubro teve oito desfiles de alta-costura da temporada primavera/verão, foi um dos numerosos eventos comerciais e empresarias da Ásia que anunciaram alterações de datas neste mês por causa do coronavírus.

As recentes Semanas de Moda de Londres, Milão e Paris foram afetadas pela ausência de muitas clientes chinesas.

Mas na quinta-feira, o comitê da Semana de Moda de Xangai disse em um comunicado publicado em sua conta oficial de WeChat que o evento ocorrerá tal como agendado entre 24 e 30 de março, e disse à Reuters que as pessoas podem participar assistindo transmissões online ao vivo.

O comitê disse que está aceitando inscrições de marcas e que acredita que mais de 100 estilistas e grifes da China acabarão apresentando suas criações para o outono/inverno de 2020 e usarão as transmissões ao vivo para comercializar seus produtos de primavera/verão.

"Esperamos que esta forma nova permita aos estilistas experimentarem maneiras diferentes de expor suas roupas e canais diferentes para divulgar e vender", disse a vice-secretária do comitê da Semana de Moda de Xangai, Lu Xiaolei, à publicação especializada Business of Fashion.

O Tmall cooperou intensamente com estilistas emergentes e com marcas comerciais da China nos últimos anos. Em 2019, uma série de marcas chinesas exibiu seus produtos nas Semanas de Moda de Nova York, Milão e Paris através do China Cool, um projeto iniciado pela Tmall.

As vendas através de transmissões ao vivo ganharam popularidade entre as consumidoras chinesas nos últimos anos. Além da Alibaba, JD.com e Pinduoduo também usaram esse método.