Чи можливо включити один файл CSS в інший?


779

Чи можливо включити один файл CSS в інший?


26
Лише фій, це не зберігає HTTP-запит. Це просто позбавить вас від необхідності включати імпортований файл .css де-небудь ще.
Т. Брайан Джонс

1
Я був би майже таким самим, як включити інший CSS раніше, а не найкращі практики
Gaizka Allende

Відповіді:


1084

Так:

@import url("base.css");

Примітка:

  • @importПравило повинне передувати всі інші правила ( за винятком @charset).
  • Додаткові @importзаяви вимагають додаткових запитів сервера. Як альтернатива, об'єднайте всі CSS в один файл, щоб уникнути безлічі запитів HTTP. Наприклад, скопіювати вміст base.cssі special.cssINTO base-special.cssі посилання тільки base-special.css.

143

Так. Можливий імпорт CSS-файлу в інший CSS-файл.

Це має бути першим правилом у таблиці стилів за допомогою правила @import .

@import "mystyle.css";
@import url("mystyle.css");

Єдине застереження - це те, що старі веб-браузери не підтримують його. Насправді, це один із "злому" CSS для приховування стилів CSS від старих браузерів.

Для підтримки браузера зверніться до цього списку .


42

Добре @import url("base.css");працює, але майте на увазі, що кожне @importтвердження є новим запитом до сервера. Це може не стати проблемою для вас, але, коли потрібні оптимальні показники роботи, вам слід уникати цього @import.


2
не кешовані файли CSS? Тож збирається запитувати файл лише один раз? здається тривіальним турбуватися.
ендоліт

1
Якщо ви не змішуєте свій файл css до одного файлу, то так, ви прав, але як тільки це є, ви просто викликаєте один файл css. Виправте мене, якщо я помиляюся, звичайно.
mjwrazor



11

У деяких випадках це можливо за допомогою @import "file.css", і більшість сучасних браузерів повинні підтримувати це, старіші браузери, такі як NN4, злегка підуть.

Примітка: оператор імпорту повинен передувати всім іншим деклараціям у файлі та протестувати його на всіх ваших цільових браузерах, перш ніж використовувати його у виробництві.



6

так, можна за допомогою @import та надання шляху файлу css, наприклад

@import url("mycssfile.css");

або

@import "mycssfile.css";

6

@import("/path-to-your-styles.css");

Це найкращий спосіб включити таблицю стилів css у таблицю стилів css, використовуючи css.


6

Правило "@import" може викликати різні файли стилів. Ці файли викликаються браузером або користувачем-агентом у разі необхідності, наприклад, теги HTML викликають CSS.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="EN" dir="ltr">
<head>
<title>Using @import</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
@import url("main.css");
</style>
</head>
<body>
</body>
</html>

Файл CSS "main.css" містить наступний синтаксис:

@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;
@import 'custom.css';
@import url("chrome://communicator/skin/");
@import "common.css" screen, projection;
@import url('landscape.css') screen and (orientation:landscape);

Щоб вставити в елемент стилю, використовуйте createTexNode не використовуйте innerHTML, але:

<script>
var style = document.createElement('style');
style.setAttribute("type", "text/css");
var textNode = document.createTextNode("
    @import 'fineprint.css' print;
    @import 'bluish.css' projection, tv;
    @import 'custom.css';
    @import 'chrome://communicator/skin/';
    @import 'common.css' screen, projection;
    @import 'landscape.css' screen and (orientation:landscape);
");
style.appendChild(textNode);
</script>

Зазначимо, хоча @hylp вказує на те, що можна змінити класи з імпорту (класи projectionта screen?), Це зазвичай ніколи не підходить. ;)
Tcll

2
@import url('style.css');

На відміну від найкращої відповіді, не рекомендується агрегувати всі CSS-файли в один фрагмент під час використання HTTP / 2.0


2

Імпортуйте завантажувальний інструмент за допомогою altervista та wordpress

Я використовую це для імпорту bootstrap.css в altervista з wordpress

@import url("https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css");

і він працює чудово, оскільки він видалив би код HTML-посилання, якщо я помістив його на сторінку


1

Так, ви можете легко імпортувати один CSS в інший (будь-де, де на веб-сайті). Ви повинні використовувати:

@import url("url_path");

1

З будь-якої причини @import не працював для мене, але це насправді не потрібно?

Ось що я зробив замість цього в html:

  <link rel="stylesheet" media="print" href="myap-print.css">
  <link rel="stylesheet" media="print" href="myap-screen.css">
  <link rel="stylesheet" media="screen" href="myap-screen.css">

Зауважте, що media = "print" має 2 таблиці стилів: myap-print.css і myap-screen.css. Це такий же ефект, як і включення myap-screen.css до myap-print.css.


Ні, це не правильно. Сюди входить декілька CSS-файлів з HTML-файлу, не включаючи CSS-файлу з іншого CSS-файлу.
TylerH

0

Співайте тут правило CSS @import

@import url('/css/header.css') screen;
@import url('/css/content.css') screen;
@import url('/css/sidebar.css') screen;
@import url('/css/print.css') print;

0

Я створив файл main.css і включив до нього всі файли css.

Ми можемо включити лише один файл main.css

@import url('style.css');
@import url('platforms.css');

-3

Я натрапив на це, і я просто хотів сказати, БУДУТЬ, НЕ ВИКОРИСТОВУЙТЕ @ ІМПОРТ У CSS !!!! Заява про імпорт надсилається клієнту, а клієнт робить ще один запит. Якщо ви хочете розділити свій CSS між різними файлами, використовуйте Менше. У меншій мірі оператор імпорту трапляється на сервері, а висновок кешується і не створює штрафну ефективність, змушуючи клієнта встановити інше з'єднання. Sass - це також інший варіант, який я не досліджував. Відверто кажучи, якщо ви не використовуєте Less або Sass, тоді слід почати. http://willseitz-code.blogspot.com/2013/01/using-less-to-manage-css-files.html


1
Клієнт зробить інший запит, а не інше з'єднання. А для якості це хороший спосіб використовувати імпортний css. Набагато краще мати цей імпорт замість великого файлу css, який росте та зростає разом із проектом ...
YvesR

3
Це рекомендація як Google ( developers.google.com/speed/docs/best-practices/… ), так і Yahoo ( developer.yahoo.com/performance/rules.html#csslink )
WillSeitz

1
Все-таки - це лише ще один запит. Немає потенційних сотень для повного завантаження сторінки.
Стів Беннетт

8
Так ?! Ще одне прохання навряд чи є гарантією махання руками та відмови від усіх шапок. Запит не є поганою практикою. -1 до відповіді - МЕНШЕ та САШЕ вантажний культ.
Кріс Бейкер

Ну, це лише один запит більше .. але ви можете імпортувати більше CSS в один, і вони завантажуються паралельно.
wh1sp3r
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.