В одном из проектов понадобилось добавить новые стили к одной определённой странице, но шаблон позволял менять только содержимое после тега <body>. Чтобы не добавлять ненужные стили на весь сайт, а вставить их только для одной страницы, рассмотрим, какие есть варианты добавления CSS внутри <body>.
1.
Правильно загружать внешние CSS файлы на странице следующим образом:
<head> <link rel="stylesheet" type="text/css" href="file.css" /> </head>
То есть файлы стилей должны быть загружены внутри тега <head>.
Тем не менее с помощью функции JavaScript можно дополнить код <head> из тела страницы:
<script type="text/javascript">
function loadCSS(filename){
var file = document.createElement("link");
file.setAttribute("rel", "stylesheet");
file.setAttribute("type", "text/css");
file.setAttribute("href", filename);
document.head.appendChild(file);
}
//просто вызовите функцию для загрузки вашего CSS
//этот путь должен быть относительным для расположения вашего HTML
loadCSS("ПУТЬ_ДО_CSS/file.css");
</script>
Либо вы можете добавить динамические определения, такие как:
<script type="text/javascript">
var sheet = (function() {
var style = document.createElement("style");
style.appendChild(document.createTextNode(""));
document.head.appendChild(style);
return style.sheet;
})();
sheet.insertRule("span { visibility: hidden }", 1);
</script>
2.
Ещё один вариант — просто вставить нужные стили после тега <body>:
<html>
<head>
<style type='text/css'>
* {color:red;}
p {background-color:yellow;}
</style>
</head>
<body>
<style type='text/css'>
* {color:green;}
p {background-color:black;}
</style>
<p>"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..." </p>
"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."
<p>"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..." </p>
</body>
</html>
Не уверен по поводу валидности получаемого кода, но CSS работает!
3.
Этот вариант также работает:
<link href="/main.css" rel="stylesheet" type="text/css" />
Но только если не содержит /css в rel (то есть следующий вариант НЕ работает):
<link href="/main.css" rel="stylesheet/css" type="text/css" />
4.
Вы можете поместить теги <head></head> внутри <body></body>.
Связанные статьи:
- Селекторы CSS для использования в JavaScript (querySelectorAll) (77.6%)
- Автоматическая подсветка кода на веб-сайте (61.1%)
- Как вставить HTML в PHP скрипт с использованием условий (без включения HTML в PHP код) (61.1%)
- Как получить доступ к веб камере в HTML (50%)
- Как сохранить весь HTML DOM в его текущем состоянии (38.7%)
- Почему веб-браузер Google Chrome серый при включении 10-битного цвета и как это исправить (RANDOM - 27.6%)