Basicamente, estou me perguntando qual é a vantagem / objetivo de usar @import
para importar folhas de estilo para uma folha de estilo existente, em vez de apenas adicionar outra ...
<link rel="stylesheet" type="text/css" href="" />
para o cabeçalho do documento?
<link rel="stylesheet" type="text/css" href="theme.css">
,.Respostas:
Do ponto de vista da velocidade da página,
@import
um arquivo CSS quase nunca deve ser usado, pois pode impedir o download simultâneo de folhas de estilo. Por exemplo, se a folha de estilo A contiver o texto:o download da segunda folha de estilo poderá não começar até que a primeira folha de estilo tenha sido baixada. Se, por outro lado, as duas folhas de estilo forem referenciadas em
<link>
elementos na página HTML principal, ambas poderão ser baixadas ao mesmo tempo. Se as duas folhas de estilo estiverem sempre carregadas juntas, também poderá ser útil combiná-las em um único arquivo.Ocasionalmente, há situações em que
@import
é apropriado, mas geralmente são a exceção, não a regra.fonte
There are occasionally situations where @import is appropriate
Como usar@media
para aplicar estilos diferentes a dispositivos diferentes.@import
para uma fonte do Google na folha de estilos (por exemplo@import url(http://fonts.googleapis.com/css?family=Archivo+Narrow);
), para que você não precise colar umlink
em todas as páginas usando essa folha de estilo.@import
é quando você tem um processo de compilação configurado usando algo parecidogrunt-concat-css
. Durante o desenvolvimento, as@import
instruções funcionam e a velocidade de carregamento da página não é uma preocupação. Então, quando você estiver construindo para produção, uma ferramenta como essa concatenará todos os seus arquivos CSS adequadamente e removerá o@import
. Eu faço uma coisa semelhante com meus arquivos JavaScript usandogrunt-browserify
.@import
para aplicar estilos específicos de dispositivos, por que não usar apenas uma<link>
tag com um atributo de mídia?@import
que seja mais rápido. Você provavelmente está vendo algum tipo de artefato de medição.Vou bancar o advogado do diabo, porque odeio quando as pessoas concordam demais.
1. Se você precisar de uma folha de estilo que dependa de outra, use @import. Faça a otimização em uma etapa separada.
Há duas variáveis para as quais você está otimizando a qualquer momento - o desempenho do seu código e o desempenho do desenvolvedor . Em muitos casos, se não na maioria dos casos, é mais importante tornar o desenvolvedor mais eficiente e só então tornar o código mais eficiente .
Se você tem uma folha de estilo que depende de outra, a coisa mais lógica a fazer é colocá-las em dois arquivos separados e usar @import. Isso fará o sentido mais lógico para a próxima pessoa que examinar o código.
Normalmente, as folhas de estilo são independentes, por isso é razoável incluí-las todas
<link href>
. No entanto, se eles são uma hierarquia dependente, você deve fazer o que faz mais sentido lógico.Python usa importação; C usa incluem; JavaScript requer. CSS tem importação; quando precisar, use-o!
2. Quando você chegar ao ponto em que o site precisa ser escalonado, concatene todo o CSS.
Várias solicitações de CSS de qualquer tipo - seja por meio de links ou por meio de @imports - são uma prática recomendada para sites de alto desempenho. Quando você estiver no ponto em que a otimização é importante, todo o seu CSS deve fluir através de um minificador. Cssmin combina instruções de importação; como o @Brandon aponta, o grunt também tem várias opções para fazê-lo. ( Veja também esta pergunta ).
Quando você está no estágio minificado,
<link>
fica mais rápido, como as pessoas apontaram, então, no máximo, vincule a algumas folhas de estilo e não importe nenhuma, se possível.Antes que o site atinja a escala de produção, é mais importante que o código seja organizado e lógico, do que um pouco mais rápido.
fonte
É melhor NÃO usar
@import
para incluir CSS em uma página por motivos de velocidade. Veja este excelente artigo para saber por que não: http://www.stevesouders.com/blog/2009/04/09/dont-use-import/Além disso, muitas vezes é mais difícil minificar e combinar arquivos css que são veiculados por meio da tag @import, porque os scripts minify não podem "separar" as linhas @import de outros arquivos css. Quando você os inclui como tags de link, você pode usar os módulos existentes do minify php / dotnet / java para fazer a minificação.
Então: use em
<link />
vez de@import
.fonte
usando o método link, as folhas de estilo são carregadas em paralelo (mais rápido e melhor) e quase todos os navegadores suportam o link
A importação carrega todos os arquivos css extras, um por um (mais lento), e pode fornecer Flash de conteúdo não estilizado
fonte
@Nebo Iznad Mišo Grgur
A seguir, estão todas as maneiras corretas de usar @import
fonte: https://developer.mozilla.org/en-US/docs/Web/CSS/@import
fonte
Não há realmente muita diferença em adicionar uma folha de estilo css na cabeça em comparação ao uso da funcionalidade de importação.
@import
Geralmente, o uso é usado para encadear folhas de estilo para que uma possa ser facilmente estendida. Pode ser usado para trocar facilmente layouts de cores diferentes, por exemplo, em conjunto com algumas definições gerais de CSS. Eu diria que a principal vantagem / objetivo é a extensibilidade.Concordo com o comentário do xbonez, pois a portabilidade e a manutenção são benefícios adicionais.
fonte
Eles são muito parecidos. Alguns podem argumentar que o @import é mais sustentável. No entanto, cada @import custará uma nova solicitação HTTP da mesma maneira que o método "link". Portanto, no contexto da velocidade, não é mais rápido. E como o "crepúsculo" disse, ele não carrega simultaneamente, o que é uma queda.
fonte
Um lugar onde eu uso @import é quando estou fazendo duas versões de uma página, inglês e francês. Vou construir minha página em inglês, usando o arquivo main.css. Quando criar a versão em francês, vincularei a uma folha de estilo em francês (main_fr.css). Na parte superior da folha de estilo francesa, importarei o main.css e depois redefinirei regras específicas para apenas as partes necessárias na versão francesa.
fonte
Citado em http://webdesign.about.com/od/beginningcss/f/css_import_link.htm
fonte
Às vezes, você precisa usar @import em vez de inline. Se você estiver trabalhando em um aplicativo complexo com 32 ou mais arquivos css e precisar oferecer suporte ao IE9, não há opção. O IE9 ignora qualquer arquivo css após os primeiros 31 e isso inclui e css embutido. No entanto, cada planilha pode importar 31 outras.
fonte
Existem muitas BOAS razões para usar o @import.
Uma razão poderosa para usar o @import é fazer o design entre navegadores. As folhas importadas, em geral, estão ocultas em muitos navegadores mais antigos, o que permite aplicar formatação específica a navegadores muito antigos, como o Netscape 4 ou mais antigo, o Internet Explorer 5.2 para Mac, Opera 6 e versões mais antigas e IE 3 e 4 para PC.
Para fazer isso, em seu arquivo base.css, você pode ter o seguinte:
Na planilha personalizada importada (newerbrowsers.css), basta aplicar o novo estilo em cascata:
O uso de unidades "em" é superior às unidades "px", pois permite que as fontes e o design se expandam com base nas configurações do usuário, onde navegadores mais antigos se saem melhor com base em pixel (que são rígidos e não podem ser alterados nas configurações do usuário do navegador) . A planilha importada não seria vista pela maioria dos navegadores mais antigos.
Você pode sim, quem se importa! Tente acessar alguns sistemas corporativos ou governamentais antigos e antigos e você ainda verá os navegadores mais antigos usados. Mas é realmente apenas um bom design, porque o navegador que você ama hoje também será um dia antiquado e desatualizado. E usar CSS de maneira limitada significa que agora você tem um grupo ainda maior e crescente de user-agents que não funcionam bem com seu site.
Usando @import, a compatibilidade de sites entre navegadores alcançará 99,9% de saturação, simplesmente porque muitos navegadores mais antigos não lêem as folhas importadas. Ele garante que você aplique um conjunto de fontes simples básico para seu html, mas CSS mais avançado é usado por agentes mais recentes. Isso permite que o conteúdo seja acessível para agentes mais antigos sem comprometer as exibições visuais necessárias em navegadores de desktop mais recentes.
Lembre-se de que navegadores modernos armazenam em cache estruturas HTML e CSS extremamente bem após a primeira chamada para um site. Várias chamadas para o servidor não são o gargalo de antes.
Megabytes e megabytes de API Javascript e JSON carregados em dispositivos inteligentes e marcação HTML mal projetada que não é consistente entre as páginas é o principal fator de renderização lenta hoje. Sua página de notícias média do Google tem mais de 6 megabytes de ECMAScript apenas para renderizar um pouquinho de texto! ri muito
Alguns kilobytes de CSS em cache e HTML limpo e consistente com pegadas javascript menores serão renderizados em um agente do usuário na velocidade da luz, simplesmente porque o navegador armazena em cache a marcação DOM e o CSS consistentes, a menos que você opte por manipular e alterar isso por meio de truques de circo javascript.
fonte
Eu acho que a chave nisso são as duas razões pelas quais você está realmente escrevendo várias folhas de estilo CSS.
Pela primeira razão, a
<link>
tag adicional seria aplicada, pois isso permite que você carregue um conjunto diferente de arquivos CSS para páginas diferentes.Pela segunda razão, a
@import
instrução aparece como a mais útil, porque você obtém vários arquivos CSS, mas os arquivos carregados são sempre os mesmos.Da perspectiva do tempo de carregamento, não há diferenças. O navegador precisa verificar e baixar os arquivos CSS separados, independentemente de como eles são implementados.
fonte
Use @import no seu CSS se estiver usando um RESET CSS, como o Reset CSS v2.0 de Eric Meyer, para que ele funcione antes de aplicar seu CSS, evitando conflitos.
fonte
Acho que @import é mais útil ao escrever código para vários dispositivos. Inclua uma declaração condicional para incluir apenas o estilo do dispositivo em questão e apenas uma folha será carregada. Você ainda pode usar a tag link para adicionar quaisquer elementos de estilo comuns.
fonte
Eu experimentei um "pico alto" de folhas de estilo vinculadas que você pode adicionar. Embora a adição de qualquer número de Javascript vinculado não tenha sido um problema para o meu provedor de host gratuito, depois de dobrar o número de folhas de estilo externas, ocorreu uma falha / desaceleração. E o exemplo de código correto é:
Portanto, acho útil ter um bom mapa mental, como o Nitram mencionou, enquanto ainda codifica o design. Boa Sorte Vá com Deus. E perdoo por erros gramaticais em inglês, se houver.
fonte
Não há quase nenhuma razão para usar o @import, pois ele carrega cada arquivo CSS importado separadamente e pode tornar o site significativamente mais lento. Se você está interessado na maneira ideal de lidar com CSS (quando se trata de velocidade da página), é assim que você deve lidar com todo o seu código CSS:
Informações mais detalhadas aqui: http://www.giftofspeed.com/optimize-css-delivery/
O motivo acima funciona melhor porque ele cria menos solicitações para o navegador lidar e pode começar imediatamente a renderizar o CSS em vez de baixar arquivos separados.
fonte
<HEAD>
Isso pode ajudar um desenvolvedor PHP. As funções abaixo eliminam o espaço em branco, removem comentários e concatenam todos os seus arquivos CSS. Em seguida, insira-o em uma
<style>
etiqueta na cabeça antes do carregamento da página.A função abaixo removerá os comentários e reduzirá os passados em css. É emparelhado em conjunto com a próxima função.
Você chamará essa função no cabeçalho do seu documento.
Inclua a função
concatenateCSS()
no seu cabeçalho do documento. Passe em uma matriz com os nomes de suas folhas de estilo com seu caminho IE:css/styles.css
. Você não precisa adicionar a extensão,.css
pois ela é adicionada automaticamente na função acima.fonte
file_get_contents()
é consideravelmente mais lento que o uso de cURL.