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

Após anos 'escondendo' o corpo, Billie Eilish posa de lingerie para revista

Billie Eilish em ensaio para a Vogue britânica - Reprodução/Instagram
Billie Eilish em ensaio para a Vogue britânica Imagem: Reprodução/Instagram

De Splash, em São Paulo

02/05/2021 13h14

Uma nova Billie Eilish está entre nós. A cantora, que completou 19 anos no último mês de dezembro, apareceu de lingerie na capa da Vogue britânica de maio, que chega às bancas no próximo dia 7.

Durante os primeiros anos do seu estrelato, Billie revelou várias vezes que o seu estilo marcante de se vestir, com roupas folgadas e vistas como "masculinizadas", era também uma estratégia para esconder o corpo em desenvolvimento.

Em trechos da entrevista, Billie esclareceu um pouco a decisão de mudar radicalmente a própria imagem.

É sobre o que faz você se sentir bem. [...] De repente, você é chamada de hipócrita se quer mostrar o seu corpo, é chamada de 'fácil' e de 'p*ta'. Bom, se eu sou, então tenho orgulho disso. Eu e todas as outras garotas somos p*tas, f*da-se, sabe? Vamos virar tudo ao contrário e fazer disso um ponto de empoderamento. Mostrar o seu corpo -- ou não -- não deveria ser algo que afeta a sua respeitabilidade."
Billie EIlish à Vogue britânica

Ela ainda fez piada com o choque que a sessão de fotos iria causar ("Não deixe de pensar em mim como um bom exemplo só porque o meu corpo te excita") e deixou um recado para os homens que possivelmente a censurariam pela escolha.

Eu acho que, no fim das contas, os homens são muito fracos. Perder a cabeça é fácil demais para eles. 'Você espera que um cara não tente te agarrar quando você está usando esse vestido?'. Sério que você é fraco assim? Por favor! Vá se masturbar!"
Billie Eilish à Vogue

Billie Eilish para a Vogue britânica - Reprodução - Reprodução
Billie Eilish para a Vogue britânica
Imagem: Reprodução

O look da norte-americana no ensaio, é claro, é todo grifado. Mais especificamente: na capa, Billie foi clicada vestindo espartilho e saia da Gucci, feitas especialmente para ela; sutiã e calcinha da Agent Provocateur, luvas da Astu Kodo e joias de Jacquie Achie e Anita Ko.

Já na outra imagem do ensaio revelada pela Vogue no Instagram, que está no topo desta nota, ela veste casaco e espartilho da Burberry, sapato da Mugler e joias de Anita Ko.

Billie atualmente se prepara para o lançamento do seu segundo álbum, "Happier Than Ever", em 30 de julho. Na última quinta-feira, ela liberou o primeiro single do disco, intitulado "Your Power".