Estou usando o Bootstrap 3 para criar um layout responsivo onde desejo ajustar alguns tamanhos de fonte de acordo com o tamanho da tela. Como posso usar consultas de mídia para criar esse tipo de lógica?
371
Estou usando o Bootstrap 3 para criar um layout responsivo onde desejo ajustar alguns tamanhos de fonte de acordo com o tamanho da tela. Como posso usar consultas de mídia para criar esse tipo de lógica?
Respostas:
Bootstrap 3
Aqui estão os seletores usados no BS3, se você quiser permanecer consistente:
Nota: Para sua informação, isso pode ser útil para depuração:
Bootstrap 4
Aqui estão os seletores usados no BS4. Não há configuração "mais baixa" no BS4 porque "pequeno demais" é o padrão. Ou seja, você primeiro codifica o tamanho do XS e depois substitui essas mídias.
Atualização 2019-02-11: As informações do BS3 ainda são precisas a partir da versão 3.4.0, BS4 atualizado para nova grade, precisas a partir do 4.3.0.
fonte
<span class="visible-xs">SIZE XS</span><span class="visible-sm">SIZE SM</span><span class="visible-md">SIZE MD</span><span class="visible-lg">SIZE LG</span>
Com base na resposta do bisio e no código do Bootstrap 3, consegui encontrar uma resposta mais precisa para quem apenas deseja copiar e colar o conjunto completo de consultas de mídia em sua folha de estilo:
fonte
min-width
, mas vocêmax-width
também usou , então qual é a diferença?, É necessário?Se você estiver usando LESS ou SCSS / SASS e uma versão LESS / SCSS do Bootstrap, poderá usar variáveis também, desde que tenha acesso a elas. Uma tradução MENOS da resposta de @ full-decent seria a seguinte:
Também existem variáveis para
@screen-sm-max
e@screen-md-max
, que são 1 pixel a menos que@screen-md-min
e@screen-lg-min
, respectivamente, geralmente para uso com@media(max-width)
.EDIT: Se você estiver usando SCSS / SASS, as variáveis começam com um em
$
vez de um@
, então seria$screen-xs-max
etc.fonte
$screen-xs-max
etc. (E se estiver usando LESS / SCSS localmente, mas importando a versão CSS do Bootstrap, você está sem sorte.)@screen-tablet
,@screen-desktop
E@screen-lg-desktop
foram reprovados. Talvez seja hora de atualizar sua resposta já incrível. ;-)Estes são os valores do Bootstrap3:
fonte
and
condições. @ JasonMiller, portanto, não é exatamente um "must", depende das especificações e dos requisitos do modelo.Aqui estão dois exemplos.
Quando a janela de visualização tiver 700 px de largura ou menos, crie todas as tags h1 em 20 px.
Faça todos os 20px do h1 até que a viewport atinja 700px ou maior.
Espero que isso ajude: 0)
fonte
font-size: 20px
parah1
marcas em ambos os casos. Para uma melhor compreensão, você pode usar diferentesfont-size
conforme solicitado em questão. BTW ainda está tudo bem.Aqui está um exemplo mais modular usando LESS para imitar o Bootstrap sem importar os menos arquivos.
fonte
Com base nas respostas dos outros usuários, escrevi esses mixins personalizados para facilitar o uso:
Menos entrada
Exemplo de uso
Entrada SCSS
Exemplo de uso:
Resultado
fonte
Desde o Bootstrap v3.3.6, as seguintes consultas de mídia são usadas, o que corresponde à documentação que descreve as classes responsivas disponíveis ( http://getbootstrap.com/css/#responsive-utilities ).
Consultas de mídia extraídas do repositório Bootstrap GitHub dos seguintes menos arquivos: -
https://github.com/twbs/bootstrap/blob/v3.3.6/less/responsive-utilities.less https://github.com/twbs/bootstrap/blob/v3.3.6/less/variables.less
fonte
Ou simples Sass-Compass:
Exemplo:
fonte
lembre-se de que evitar a escala do texto é o principal motivo da existência de layouts responsivos. toda a lógica por trás dos sites responsivos é criar layouts funcionais que exibam efetivamente seu conteúdo para que seja facilmente legível e utilizável em vários tamanhos de tela.
Embora seja necessário redimensionar o texto em alguns casos, tome cuidado para não miniaturizar seu site e não entenda bem.
aqui está um exemplo de qualquer maneira.
Lembre-se também de que a janela de exibição 480 foi eliminada no bootstrap 3.
fonte
Usamos as seguintes consultas de mídia em nossos arquivos Menos para criar os principais pontos de interrupção em nosso sistema de grade.
veja também no Bootstrap
fonte
fonte
Aqui está uma solução de parada única ainda mais fácil, incluindo arquivos responsivos separados com base em consultas de mídia.
Isso permite que toda a lógica de consulta de mídia e a lógica de inclusão precisem existir apenas em uma página, o carregador. Ele também permite que as consultas de mídia não se confundam com as folhas de estilo responsivas.
base.less ficaria assim
sm-min.less ficaria assim
seu índice precisaria carregar o loader.less
mole-mole..
fonte
O Bootstrap usa principalmente os seguintes intervalos de consulta de mídia - ou pontos de interrupção - em nossos arquivos Sass de origem para nosso layout, sistema de grade e componentes.
Dispositivos pequenos demais (telefones retrato, menos de 576 px) Nenhuma consulta de mídia,
xs
pois esse é o padrão no BootstrapPequenos dispositivos (telefones de paisagem, 576px e superior)
Dispositivos médios (tablets, 768px e superior)
Dispositivos grandes (desktops, 992px e superior)
Dispositivos extra grandes (desktops grandes, 1200px e acima)
Como escrevemos nosso CSS de origem no Sass, todas as nossas consultas de mídia estão disponíveis através do Sass mixins:
Nenhuma consulta de mídia é necessária para o ponto de interrupção xs, pois é efetivamente
@media (min-width: 0) { ... }
Para entendê-lo profundamente, acesse o link abaixo
https://getbootstrap.com/docs/4.3/layout/overview/
fonte
fonte
Use consultas de mídia para o IE;
fonte
:)
Na última inicialização (4.3.1), usando SCSS (SASS), você pode usar um dos @mixin de
/bootstrap/scss/mixins/_breakpoints.scss
Mídia com pelo menos a largura mínima do ponto de interrupção. Nenhuma consulta para o menor ponto de interrupção. Torna o @content aplicado ao ponto de interrupção especificado e mais amplo.
@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints)
Mídia com no máximo a largura máxima do ponto de interrupção. Nenhuma consulta para o maior ponto de interrupção. Faz o @content se aplicar ao ponto de interrupção especificado e mais estreito.
@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints)
Mídia que abrange várias larguras de ponto de interrupção. Faz o @content se aplicar entre os pontos de interrupção mínimo e máximo
@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints)
Mídia entre as larguras mínima e máxima do ponto de interrupção. Não há limite mínimo para o menor ponto de interrupção e máximo para o maior. Faz com que o @content se aplique apenas ao ponto de interrupção especificado, e não as viewports mais amplas ou mais estreitas.
@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints)
Por exemplo:
Documentação:
Feliz codificação;)
fonte
Para melhorar a resposta principal:
Você pode usar o atributo de mídia da
<link>
tag (ele suporta consultas de mídia) para fazer o download apenas do código que o usuário precisa.Com isso, o navegador fará o download de todos os recursos CSS, independentemente do atributo de mídia . A diferença é que, se a consulta de mídia do atributo media for avaliada como falsa , o arquivo .css e seu conteúdo não serão bloqueados pela renderização.
Portanto, é recomendável usar o atributo de mídia na
<link>
tag, pois garante uma melhor experiência do usuário.Aqui, você pode ler um artigo do Google sobre esse problema https://developers.google.com/web/fundamentals/performance/critical-rendering-path/render-blocking-css
Algumas ferramentas que ajudarão você a automatizar a separação do seu código css em arquivos diferentes, de acordo com suas consultas de mídia
Webpack https://www.npmjs.com/package/media-query-plugin https://www.npmjs.com/package/media-query-splitting-plugin
PostCSS https://www.npmjs.com/package/postcss-extract-media-query
fonte