Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

141
Visualizações
Establezca el tamaño de fuente automáticamente de acuerdo con la altura del elemento

Tengo una entrada de texto y una vista previa de texto div. Quiero que el font size del texto de vista previa se ajuste automáticamente según la height dada. Tenga en cuenta que solo verá la height para ajustar el tamaño de fuente, el width será auto .
Tengo google e investigué mucho, también los he probado pero estas preguntas/respuestas son diferentes a las mías.
Cuando configuro la altura div en 50px , debería ajustar automáticamente el font size de acuerdo con esa altura, la height matters , la altura no debe ser más grande que la dada y cuando el texto pasa a la siguiente línea, entonces debe disminuir el font size para que fit the text a la height .
Aquí está el código:

 const input = document.querySelector('input') input.addEventListener('input', (e) => { const self = e.currentTarget const size = parseInt(self.value) const textElem = document.querySelector('.previewText') textElem.style.height = `${size}px` adjustText(size, textElem) }) const adjustText = (size, textElem) => { const childElem = textElem.firstChild.nextElementSibling let fontSize = textElem.style.fontSize fontSize = fontSize.replace('px', '') for (let i = 0; i < size; i++) { if (textElem.offsetHeight > childElem.offsetHeight) { console.log('greater tha') textElem.style.fontSize = `${i}px` } if (textElem.offsetHeight < childElem.offsetHeight) { console.log('less than') textElem.style.fontSize = `${fontSize - 1}px` } } }
 <input type="number"> <div class="previewText"> <div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod.</div> </div>

Está funcionando casi bien, pero no está funcionando perfectamente. ¿Puede alguien por favor ayudarme? Estoy atascado...

about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

No estoy seguro de haber entendido bien tu código, pero supongo que la condición en tu bucle for no funciona.

Debe disminuir el tamaño de fuente siempre que la altura del texto sea mayor que su div principal, así:

 for(let i; textHeight>previewTextHeight; i++ ){}

Fragmento de ejemplo

(Puede editar el texto para verificar el ajuste del tamaño de fuente)

 const fontSize = document.querySelector('#fontSize'); const previewText = document.querySelector('.previewText'); const textInner = document.querySelector('.textInner'); const currentFontSize = document.querySelector('.currentFontSize'); const adjustText = function() { let size = fontSize.value; previewText.style.fontSize = `${size*1}px`; previewText.style.height = `${size}px`; let previewTextHeight = previewText.clientHeight; let textHeight = Math.ceil(textInner.clientHeight); for (let i; textHeight > previewTextHeight; i++) { size -= 1; previewText.style.fontSize = `${size*1}px`; textHeight = Math.ceil(textInner.clientHeight); } currentFontSize.textContent = `fontSize: ${size} height: ${previewTextHeight}`; } // adjustText(); fontSize.addEventListener('change', (e) => { adjustText() }) textInner.addEventListener("input", (e) => { adjustText() });
 .previewText { outline: 1px solid #ccc; line-height: 1.2em; font-family: Arial; } .textInner:focus { outline: none }
 <p>Font-size</p> <input id="fontSize" type="range" value="200" step="10" min="10" max="200"> <p>Editable text</p> <div class="previewText"> <div class="textInner" contentEditable>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod.</div> </div> <p class="currentFontSize"></p>

about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda