Eu criei um site usando a grade do Zurb Foundation 3 . Cada página possui uma grande h1
:
body {
font-size: 100%
}
/* Headers */
h1 {
font-size: 6.2em;
font-weight: 500;
}
<div class="row">
<div class="twelve columns text-center">
<h1> LARGE HEADER TAGLINE </h1>
</div>
<!-- End Tagline -->
</div>
<!-- End Row -->
Quando redimensiono o navegador para o tamanho móvel, a fonte grande não se ajusta e faz com que o navegador inclua uma rolagem horizontal para acomodar o texto grande.
Percebi que, na página de exemplo da Tipografia do Zurb Foundation 3 , os cabeçalhos se adaptam ao navegador conforme ele é compactado e expandido.
Estou perdendo algo realmente óbvio? Como faço para conseguir isso?
css
responsive-design
font-size
zurb-foundation
em
user2213682
fonte
fonte
Respostas:
O
font-size
não responderá assim ao redimensionar a janela do navegador. Em vez disso, responder às configurações de tamanho navegador zoom / Tipo, como se você pressionar Ctrle +em conjunto no teclado enquanto no browser.Consultas de mídia
Você precisaria usar consultas de mídia para reduzir o tamanho da fonte em determinados intervalos em que ele começa a interromper seu design e a criar barras de rolagem.
Por exemplo, tente adicionar isso dentro do seu CSS na parte inferior, alterando a largura de 320 pixels para onde quer que seu design comece a quebrar:
Comprimentos de porcentagem da janela de visualização
Você também pode usar o tamanho da porcentagem da janela de visualização , como
vw
,vh
,vmin
evmax
. O documento oficial do W3C para esses estados:Novamente, a partir do mesmo documento W3C, cada unidade individual pode ser definida como abaixo:
E eles são usados exatamente da mesma maneira que qualquer outro valor CSS:
A compatibilidade é relativamente boa, como pode ser visto aqui . No entanto, algumas versões do Internet Explorer e Edge não oferecem suporte ao vmax. Além disso, o iOS 6 e 7 têm um problema com a unidade vh, que foi corrigida no iOS 8.
fonte
font-size: 1.5vw;
?font-size: calc(12px + 1vw)
Você pode usar o valor da viewport em vez de ems, pxs ou pts:
Truques em CSS: Tipografia dimensionada para viewport
fonte
Venho estudando maneiras de superar esse problema e acredito que encontrei uma solução:
Se você pode gravar seu aplicativo para o Internet Explorer 9 (e posterior) e todos os outros navegadores modernos que suportam CSS calc (), unidades rem e unidades vmin. Você pode usar isso para obter texto escalável sem consultas de mídia:
Aqui está em ação: http://codepen.io/csuwldcat/pen/qOqVNO
fonte
Use
media
especificadores CSS (que é o que eles [zurb] usam) para um estilo responsivo:fonte
Se você não se importa em usar uma solução jQuery, pode experimentar o plugin TextFill
https://github.com/jquery-textfill/jquery-textfill
fonte
Existem várias maneiras de conseguir isso.
Use uma consulta de mídia , mas requer tamanhos de fonte para vários pontos de interrupção:
Use dimensões em % ou em . Basta alterar o tamanho da fonte base e tudo mudará. Diferente da anterior, você pode alterar a fonte do corpo e não o h1 todas as vezes ou permitir que o tamanho da fonte base seja o padrão do dispositivo e o restante
em
:Veja kyleschaeffer.com / ....
O CSS 3 suporta novas dimensões que são relativas à porta de visualização. Mas isso não funciona no Android:
3.2vmax = Maior de 3.2vw ou 3.2vh
Veja CSS-Tricks ... e também veja Can I Use ...
fonte
Há outra abordagem para tamanhos de fonte responsivos - usando unidades rem.
Posteriormente nas consultas de mídia, você pode ajustar todos os tamanhos de fonte alterando o tamanho da fonte base:
Para fazer isso funcionar no Internet Explorer 7 e no Internet Explorer 8, você precisará adicionar um fallback com unidades de px:
Se você estiver desenvolvendo com Less , poderá criar um mixin que fará as contas para você.
Suporte a unidades rem - http://caniuse.com/#feat=rem
fonte
A solução "vw" tem um problema ao acessar telas muito pequenas. Você pode definir o tamanho da base e subir de lá com calc ():
fonte
font-size: calc(1.2rem + 1vw)
para uma posição. Dessa forma, tive a vantagem de usar uma unidade que não é baseada em pixels (embora isso possa não ser aplicável aqui). Também tive um fallback no ems simples para navegadores mais antigos Finalmente, como isso ficou um pouco pequeno no celular, usei uma consulta de mídia para eles. Isso pode ser muito elaborado, mas parece fazer o que eu queria.Isso é parcialmente implementado na fundação 5.
No arquivo _type.scss, eles têm dois conjuntos de variáveis de cabeçalho:
Para médias, eles geram tamanhos com base no primeiro conjunto de variáveis:
E para telas pequenas padrão, por exemplo, elas usam um segundo conjunto de variáveis para gerar CSS:
Você pode usar essas variáveis e substituir em seu arquivo scss personalizado para definir tamanhos de fonte para os respectivos tamanhos de tela.
fonte
Um tamanho de fonte responsivo também pode ser feito com esse código JavaScript chamado FlowType :
FlowType - Tipografia web responsiva da melhor forma possível: tamanho da fonte com base na largura do elemento.
Ou esse código JavaScript chamado FitText :
FitText - Torna os tamanhos das fontes flexíveis. Use este plug-in em seu design responsivo para redimensionar com base em proporção seus títulos.
fonte
Se você estiver usando uma ferramenta de construção, tente Rucksack.
Caso contrário, você pode usar variáveis CSS (propriedades personalizadas) para controlar facilmente os tamanhos mínimo e máximo de fonte da seguinte forma ( demo ):
fonte
Eu vi um ótimo artigo do CSS-Tricks . Funciona muito bem:
Por exemplo:
Podemos aplicar a mesma equação à
line-height
propriedade para que ela também seja alterada no navegador.fonte
Acabei de ter uma idéia com a qual você só precisa definir o tamanho da fonte uma vez por elemento, mas ele ainda é influenciado por consultas de mídia.
Primeiro, defino a variável "--text-scale-unit" como "1vh" ou "1vw", dependendo da janela de exibição usando as consultas de mídia.
Então eu uso a variável usando calc () e meu número multiplicador para o tamanho da fonte:
No meu exemplo, usei apenas a orientação da janela de exibição, mas o princípio deve ser possível com qualquer consulta de mídia.
fonte
vmin
e, emvmax
vez deste@media
negócio?O "FitText" do jQuery é provavelmente a melhor solução de cabeçalho responsivo. Confira no GitHub: https://github.com/davatron5000/FitText.js
fonte
Como em muitas estruturas, uma vez que você "sai da grade" e substitui o CSS padrão da estrutura, as coisas começam a quebrar à esquerda e à direita. Estruturas são inerentemente rígidas. Se você usar o estilo H1 padrão do Zurb junto com suas classes de grade padrão, a página da web deverá ser exibida corretamente no celular (ou seja, responsivo).
No entanto, parece que você deseja cabeçalhos 6.2em muito grandes, o que significa que o texto terá que encolher para caber dentro de uma tela móvel no modo retrato. Sua melhor aposta é usar um plug-in jQuery de texto responsivo, como FlowType e FitText . Se você quiser algo leve, verifique o meu plugin jQuery Scalable Text:
http://thdoan.github.io/scalable-text/
Uso da amostra:
fonte
No Sass original real (não scss), você pode usar os mixins abaixo para definir automaticamente os parágrafos e todos os títulos '
font-size
.Gosto porque é muito mais compacto. E mais rápido de digitar. Fora isso, ele fornece a mesma funcionalidade. De qualquer forma, se você ainda deseja manter a nova sintaxe - scss, sinta-se à vontade para converter meu conteúdo Sass para scss aqui: [CONVERTE SASS TO SCSS AQUI]
Abaixo, dou-lhe quatro mixins Sass. Você precisará ajustar as configurações para suas necessidades.
Depois de terminar de jogar com as configurações, basta ligar para um mixin - que é: + config-and-run-font-generator () . Veja o código abaixo e os comentários para obter mais informações.
Eu acho que você poderia fazer isso automaticamente para uma consulta de mídia, como é feito para tags de cabeçalho, mas todos nós usamos consultas de mídia diferentes, portanto não seria apropriado para todos. Eu uso uma abordagem de design para dispositivos móveis, então é assim que eu faria isso. Sinta-se livre para copiar e usar este código.
Copie e cole essas mixagens em seu arquivo:
CONFIGURE TODAS AS MIXINS ÀS SUAS NECESSIDADES - JOGUE COM ELE! :) E depois ligue para o topo do seu código SASS REAL com:
Isso geraria essa saída. Você pode personalizar parâmetros para gerar diferentes conjuntos de resultados. No entanto, como todos usamos consultas de mídia diferentes, você precisará editar alguns mixins manualmente (estilo e mídia).
CSS GERADO:
fonte
Eu uso essas classes CSS e elas tornam meu texto fluido em qualquer tamanho de tela:
fonte
fonte
Existem as seguintes maneiras pelas quais você pode conseguir isso:
Essas unidades serão redimensionadas automaticamente, dependendo da largura e altura da tela.
fonte
Você pode tornar o tamanho da fonte responsivo se defini-lo em vw (largura da janela de exibição). No entanto, nem todos os navegadores são compatíveis. A solução é usar JavaScript para alterar o tamanho da fonte base, dependendo da largura do navegador e definir todos os tamanhos de fonte em%.
Aqui está um artigo descrevendo como criar fontes responsivas: http://wpsalt.com/responsive-font-size-in-wordpress-theme/
fonte
Eu encontrei esta solução e funciona muito bem para mim:
fonte
Uma maneira de resolver o problema de o texto ter uma boa aparência em computadores e dispositivos móveis / tablets é fixar o tamanho do texto em unidades físicas, como centímetros ou polegadas físicas, que não dependem do PPI da tela (pontos por polegada).
Com base nesta resposta , abaixo está o código que utilizo no final do documento HTML para um tamanho de fonte responsivo:
No código acima, os itens de uma classe diferente recebem tamanhos de fonte atribuídos em unidades físicas, desde que o navegador / SO esteja configurado corretamente para o PPI de sua tela.
Uma fonte de unidade física nem sempre é muito grande e nem muito pequena, desde que a distância da tela seja normal (distância de leitura de livros).
fonte
O tamanho do texto pode ser definido com uma
vw
unidade, o que significa "largura da janela de exibição". Dessa forma, o tamanho do texto seguirá o tamanho da janela do navegador:https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_responsive_text
Para o meu projeto pessoal, usei vw e @meida. Funciona perfeitamente.
fonte
Use esta equação:
Para algo maior ou menor que 1440 e 768, você pode atribuir um valor estático ou aplicar a mesma abordagem.
A desvantagem da solução vw é que você não pode definir uma proporção de escala, digamos que um 5vw na resolução de tela 1440 pode acabar sendo do tamanho da fonte de 60px, o tamanho da fonte da sua ideia, mas quando você reduz a largura da janela para 768, pode acabar sendo 12px, não o mínimo que você deseja.
Com essa abordagem, você pode definir o limite superior e o limite inferior, e a fonte se dimensionará no meio.
fonte
Podemos usar calc () de css
A fórmula matemática é calc (tamanho minimo + (tamanho maximo - tamanho minimo) * (100vm - largura da porta minview) / (largura de porta minview) / (maxwidthviewoport - minviewportwidth)))
Codepen
fonte
Receio que não haja uma solução fácil com relação ao redimensionamento de fontes. Você pode alterar o tamanho da fonte usando uma consulta de mídia, mas tecnicamente não será redimensionado sem problemas. Por exemplo, se você usar:
você
font-size
será 3em para uma largura de 300 e 200 pixels. Mas você precisa de menosfont-size
largura a 200 px para obter uma resposta perfeita.Então, qual é a solução real? Há apenas um caminho. Você precisa criar uma imagem PNG (com fundo transparente) contendo seu texto. Depois disso, você pode facilmente tornar sua imagem responsiva (por exemplo: largura: 35%; altura: 28px). Dessa forma, seu texto será totalmente responsivo a todos os dispositivos.
fonte
Depois de muitas conclusões, acabei com essa combinação:
fonte
tente isso
html { font-size: min(max(16px, 4vw), 22px); }
consegui-lo em https://css-tricks.com/simplified-fluid-typography/
fonte
Aqui está algo que funcionou para mim. Eu só testei em um iPhone.
Se você tem
h1
,h2
oup
tags de colocar isso em torno de seu texto:Isso renderiza um texto de 22 pontos em uma área de trabalho e ainda é legível no iPhone.
fonte