Как включить все CSS, хранящиеся в каталоге?
Можно ли включать несколько CSS сразу в html? Или, если быть точным, можно ли включить все css, помещенные в каталог, за один раз?
как и сейчас, мы делаем следующее: -
<link type="text/css" rel="stylesheet" href="./tabs_css/navigation.css">
Мне нужно что-то вроде: -
<link type="text/css" rel="stylesheet" href="./tabs_css/*.css">
Возможно ли это? или есть ли альтернатива этому?
Ответы
Ответ 1
Вы можете создать основную таблицу стилей, которую вы укажете на каждой странице, и внутри этого файла css вы можете использовать @import
для включения других.
Это не решает проблему ручного включения каждого отдельного файла css, но, по крайней мере, он инкапсулирует его в мастер-таблицу стилей, поэтому вам не нужно повторять все ссылки в каждом html файле. Если вы добавите дополнительные файлы css, вам нужно будет добавить ссылку в master css, и все страницы получат доступ к ней.
Пример ссылки HTML CSS:
<link href="master.css" type="text/css" />
Пример Мастер CSS (master.css):
@import url(style1.css);
@import url(style2.css);
@import url(style3.css);
Подробнее о когда использовать @import и совместимость с более старыми браузерами.
Ответ 2
Вам нужно будет сделать это на стороне сервера. Если вы используете PHP, посмотрите на glob.
Например:
foreach (glob("path/to/css/*.css") as $css) {
echo "<link type='text/css' rel='stylesheet' href='$css'>\n";
}
Ответ 3
Невозможно использовать подстановочные знаки в href. Вам нужно будет указать тег ссылки для каждого файла css, который вам нужно включить.
Ответ 4
Вы можете написать серверную часть script, которая объединяет все файлы в каталоге и отправляет ее клиенту, а затем помещает script в тег <link>
.
Однако будьте осторожны с синтаксическими ошибками.
Ответ 5
Невозможно сделать это на стороне клиента. Это можно сделать с помощью технологии на стороне сервера. Но наилучшим подходом было бы включить все CSS в один файл и включить это.
Если вы все еще хотите, чтобы css был разбит на файлы, сделайте то, что многие делают, и используйте инструмент построения, который включает все css в один файл только для сервера производства/тестирования.
Ответ 6
вы можете использовать php для отображения всего файла с расширением css в этом каталоге...
$fp = opendir($dir);
while ($file = readdir($fp)) {
if (strpos($file, '.css',1))
$results[] = $file;
}
closedir($fp);
... и чем сделать конструкцию foreach, чтобы указать css
Ответ 7
Если я не ошибаюсь, это можно сделать довольно красиво (хотя и вручную), как в JavaScript.
./styles/
./layouts/
all.css <-- Each subfolder has this
header.css
footer.css
nav.css
./main.css <-- Main CSS file
Внутри ./styles/layouts/all.css
вы импортируете:
@import 'layouts/header.css';
@import 'layouts/footer.css';
@import 'layouts/nav.css';
Правильно, это отделяет второстепенную логику в CSS-организации (что хорошо ИМХО).
Затем, как много файлов "all.css" в подпапках, просто включите их (пример):
main.css
@import 'variables/all.css';
@import 'layouts/all.css';
Я думаю, это довольно мило...
Ответ 8
Могут быть некоторые возможные обходные пути:
-
Рассмотрим идею импорта страницы PHP (например./tabs_css/allcss.php), которая объединяет и возвращает все css в каталоге. Это может быть немного интенсивным CPU.
-
Рассмотрите возможность создания комбо файла css, который является конкатенацией всех ваших файлов CSS. Это можно было бы создать автоматически, добавив специальные крючки в вашу систему контроля версий.