Utilizando la regla @import CSS
La regla @import
permite cargar uno o varios archivos CSS dentro de otro. Puede ser muy útil en determinados casos. Por ejemplo, cuándo trabajas en una web grande y compleja, el archivo CSS se vuelve descomunal e intratable y para hacernos la vida más fácil podemos separar el código en varios archivos, cada uno dedicado a una parte específica, y cargarlos con la regla @import
. En tu HTML puedes cargar un sólo archivo:
<link rel="stylesheet" type="text/css" href="/css/style.css">
Y en el archivo style.css
cargar todos los demás que necesites y en el orden que necesites:
@import url('/css/reset.css');
@import url('/css/layout.css');
@import url('/css/typograhpy.css');
@import url('/css/content.css');
@import url('/css/sidebar.css');
@import url('/css/color.css');
La ventaja es obvia, puedes dividir el CSS en diferentes partes siguiendo la lógica que prefieras para tener el trabajo más organizado, más fácil de manejar y más fácil de aislar errores.
Además, la regla @import
permite utilizar toda la potencia de los media-query y cargar diferentes archivos en función del dispositivo o sus características:
@import url('/css/reset.css') all;
@import url('/css/layout.css') all;
@import url('/css/typograhpy.css') screen;
@import url('/css/content.css') screen;
@import url('/css/sidebar.css') screen;
@import url('/css/color.css') screen;
@import url('/css/print.css') print;
@import url('landscape.css') screen and (orientation:landscape);
El gran inconveniente
Como otras muchas cosas cool de CSS, hay que utilizarlas con precaución y sabiendo muy bien lo que se hace. La regla @import
tiene algunas particularidades que te pueden llevar de cabeza pero sin duda su principal inconveniente es que cada archivo cargado con @import
supone una nueva solicitud al servidor, lo que puede afectar a la velocidad de carga de la web. La tendencia general es disminuir al máximo el número de solicitudes por página, y por tanto la recomendación general es no utilizar la regla @import
.
Este problema es fácil de arreglar. Puedes seguir utilizando @import
tanto como desees y utilizar algún método para combinar todos los archivos en el servidor y mandar al navegador del usuario un código CSS sin reglas @import
. Estos métodos pueden ser algo complicados pero existen soluciones open source listas para utilizar. Por ejemplo, la biblioteca minify para PHP o los plugins W3 Total Cache o WP Super Cache para WordPress.
Sólo ten en cuenta que si utilizas @import
con el atributo media
no te valdrá ninguna de las soluciones mencionadas; es lógico, piensa que las condiciones del atributo media
se leen en el lado del cliente y no desde el servidor. Por ejemplo, no podemos diferenciar en el servidor si el documento se está imprimiendo o se está viendo en pantalla (media="print"
o media="screen"
), por lo que no podemos cargar diferentes archivos CSS en función de esta propiedad.