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

REFORMA ORTOGRÁFICA: Hífen - compostos - Uso em palavras compostas

Márcia Lígia Guidin, Especial para a Página 3 Pedagogia & Comunicação

PALAVAS COMPOSTAS
ELEMENTOS OU PALAVRASREGRASEXEMPLOSOBSERVAÇÕES; SAIBA MAIS
Compostas comuns1. Usa-se hífen nas palavras compostas comuns, sem preposições, quando o primeiro elemento for substantivo, adjetivo, verbo ou numeral.Amor-perfeito, boa-fé, guarda-noturno, guarda-chuva, criado-mudo, decreto-lei.A) Formas adjetivas como afro, luso, anglo, latino não se ligam por hífen: afrodescendente, eurocêntrico, lusofobia, eurocomunista.
B) Mas com adjetivos pátrios (de identidade), usa-se o hífen: afro-americano, latino-americano, indo-europeu, ítalo-brasileira, anglo-saxão.
C) Se a noção de composição desapareceu com o tempo, deve-se unir o composto sem hífen: pontapé, madressilva, girassol, paraquedas, paraquedismo (perdida a noção do verbo parar); mandachuva (perdida a noção do verbo mandar).
D) Demais casos com para e manda usam hífen: para-brisa, para-choque (sem acento no para); manda-tudo, manda-lua.
E) Compostos com elementos repetidos também levam hífen: tico-tico, tique-taque, pingue-pongue, blá-blá-blá.
F) Compostos com apóstrofo também levam hífen: cobra-d'água, mãe-d'água, mestre-d'armas.
Nomes geográficos antecedidos de grão, grã ou verbos2. Usa-se o hífen em nomes geográficos compostos com grã e grão ou verbos de qualquer tipo.Grã-Bretanha, Grão-Pará, a-Quatro.Demais nomes geográficos compostos não usam hífen: América do Norte, Belo Horizonte, Cabo Verde. (O nome Guiné-Bissau é uma exceção).
Espécies vegetais/ animais3. Usa-se o hífen nos compostos que designam espécies vegetais e animais.bem-te-vi, bem-me-quer, erva-de-cheiro, couve-flor, erva-doce, feijão-verde, coco-da-baía, joão-de-barro, não-me-toques (planta).Se a palavra for usada em sentido figurado, não leva hífen: Ela está cheia de não me toques (melindres).
Mal4. Usa-se hífen com mal antes de vogais ou h ou l.mal-afamado, mal-estar, mal-acabado, mal-humorada, mal-limpo.A) Escreva, porém: malcriado, malnascido, malvisto, malquerer, malado. B) Escreva com hífen no feminino: má-língua, más-línguas.
Além, aquém, recém, bem, sem5. Usa-se hífen com além, aquém, recém, bem e sem.além-mar, aquém-oceano, recém-casado, recém-nascido, bem-estar, bem-vindo, sem-vergonha.Quando o bem se aglutina com o segundo elemento, não se usa hífen: benfeitor, benfeitoria, benquerer, benquisto.
Locuções6. Não se usa hífen nas locuções dos vários tipos (substantivas, adjetivas etc).à vontade, cão de guarda, café com leite, cor de vinho, fim de semana, fim de século, quem quer que seja, um disse me disse.A) Certas grafias consagradas agora são exceções à regra. Escreva: água-de-colônia, arco-da-velha, pé-de-meia, mais-que-perfeito, cor-de-rosa, à queima-roupa, ao deus-dará. B) Outras expressões/locuções que não usarão hífen: bumba meu boi, tomara que caia, arco e flecha, tão somente, ponto e vírgula. C) Escreva também sem hífen as locuções à toa (adjetivo ou advérbio), dia a dia (substantivo e advérbio) e arco e flecha.
Encadeamentos de palavras7. Os encadeamentos vocabulares levam hífen (e não mais traço).A relação professor-aluno. O trajeto Tóquio-São Paulo. A ponte Rio-Niterói. Um acordo Angola-Brasil. Áustria-Hungria. Alsácia-Lorena. 
Hífen no fim da linha8. Quando cai no fim da linha, o hífen deve ser repetido, por clareza, na linha abaixo.Atravesso a ponte Rio- -Niterói. Couve- -flor.