@import и link в чем разница?! #
— это базовый, я бы сказал основной, метод подключения CSS к странице. Он позволяет связать веб-страницу и CSS-стили. Вызов добавляется между и вашего HTML документа, например:@import — Импорт позволяет импортировать одну таблицу стилей в другой. Он работает несколько иначе нежели «линк», так как вы можете импортировать таблицы стилей внутрь связанной через «линк» таблицы стилей. Но не желательно включать @import между и вашего HTML документа, например:
С точки зрения стандартов, нет разницы между ссылкой на внешние таблицы стилей или их импортом. В любом случае это правильно, и в большинстве случаев это будет работать одинаково хорошо. Но есть несколько причин, которые могут склонить вас к использованию одного из них.
Зачем использовать @import?
Наиболее распространенная причина использования @import вместо (или вместе с) состоит в том, что старые браузеры не распознают @import, поэтому вы можете таким образом спрятать от них стили. В частности:
скрыть таблицу стилей от Netscape 4, IE 3 и 4 (но не 4.72):
@import url(../style.css);
скрыть таблицу стилей от Netscape 4, IE 3 и 4 (но не 4.72), Konqueror 2 и Amaya 5.1:
@import url("../style.css");
скрыть таблицу стилей от Netscape 4, IE 6 и ниже:
@import url(../style.css) screen;
скрыть таблицу стилей от Netscape 4, IE 4 и ниже, Konqueror 2:
@import "../styles.css";
Еще одно применение для метода @import заключается в том, чтобы использовать несколько таблиц стилей на странице, но вызывать только одну таблицу в . Например, корпорация может иметь глобальные таблицы стилей для каждой страницы на сайте, с подразделами, имеющими дополнительные стили, которые применяются только к этому подразделу. Связывая ссылкой суб-таблицы стилей и импортируя глобальные стили в верхней части суб-таблицы стилей, вам не придется сохранять гигантскую таблицу стилей для всего сайта в суб-таблице для подраздела. Единственное важным требованием является то, что любые правила @import должны быть введены перед остальной частью вашего файла стилей. Также необходимо следить за тем, чтобы не возникало проблем с наследованием стилей.
Зачем использовать ?
Одной из наиболее весомых причин в пользу использования связанных через таблиц стилей является возможность использования альтернативных стилей для ваших клиентов. Такие браузеры как Firefox, Safari и Opera поддерживают атрибут rel="alternate stylesheet" и когда есть возможность позволяют пользователям переключаться между таблицами стилей. А для переключения между таблицами стилей в IE придется использовать javascript свитчер. Такой способ наиболее часто используется для подключения стилей для страниц в увеличенном формате. Как известно, IE не способен нормально увеличивать страницы, поэтому вы можете предложить альтернативный CSS.
Одним из недостатков использования @import является то, что если у вас есть очень простой только c правилом @import, ваши страницы могут отображаться некорректно, в основном в IE6 с так называемым эффектом FOUC. Простым фиксом этой проблемы является внедрение в , по крайней мере, одного дополнительного элемента или .
Media Type
Многие пишут о том, что можно использовать media type для сокрытия таблицы стилей от старых браузеров. Зачастую, этот довод приводится в пользу при сравнивании способов подключения таблиц стилей, но подвох заключается в том, что на самом деле можно использовать media type в обеих случаях, и браузеры, не поддерживающие media type не будут видеть таблицы стилей. Например, Netscape 4 не распознает media type, так что вы можете использовать как связанную через таблицу стилей, чтобы скрыть стиль от этого браузера, так и правило @import:
Но вот в некоторых версиях IE (6 и ниже) не поддерживается тип носителя при использовании правила @import, так что вы можете использовать это, чтобы скрыть таблицу стилей от них:
Итак, какой метод нужно использовать?
Лично я, как и автор статьи, предпочитаю использовать , а затем импортировать таблицы стилей в мой внешний файл стилей. Таким образом, я имею только 1 или 2 строки кода в своем html-документе. Но в общем, все зависит от вас. Если вас больше устраивает @import, то используйте его! Оба метода соответствуют стандартам и, если вы не планируете поддержку действительно старых браузеров (например, Netscape 4) не существует веского довода в пользу какого-либо метода.