Я ищу способ вставить <style>
тег на страницу HTML с помощью JavaScript.
Лучший способ, который я нашел до сих пор:
var divNode = document.createElement("div");
divNode.innerHTML = "<br><style>h1 { background: red; }</style>";
document.body.appendChild(divNode);
Это работает в Firefox, Opera и Internet Explorer, но не в Google Chrome. Кроме того, это немного некрасиво с <br>
передней частью для IE.
Кто-нибудь знает способ создания <style>
тега, который
Приятнее
Работает с Chrome?
Или, может быть
Это нестандартная вещь, которую я должен избегать
Три работающих браузера великолепны, а кто вообще использует Chrome?
javascript
html
css
Амина Сана
источник
источник
document.head
поддерживается во всех основных браузерах.document.querySelector("head")
? Это событие поддерживается IE8 источникомquerySelector()
; сегодня, я бы, наверное, пошелdocument.head
, доступно с IE9style.styleSheet.cssText
. До того, как он был добавлен,style.styleSheet
был нулевым.Вот скрипт, который добавляет IE-стиль
createStyleSheet()
иaddRule()
методы в браузеры, у которых их нет:Вы можете добавить внешние файлы через
и динамически создавать правила с помощью
источник
Я предполагаю, что вы хотите вставить
style
тег по сравнению сlink
тегом (ссылаясь на внешний CSS), вот что делает следующий пример:Также я заметил в вашем вопросе, что вы используете
innerHTML
. На самом деле это нестандартный способ вставки данных на страницу. Рекомендуется создать текстовый узел и добавить его к другому элементному узлу.Что касается вашего последнего вопроса, вы услышите, как некоторые люди говорят, что ваша работа должна работать во всех браузерах. Все зависит от вашей аудитории. Если никто из вашей аудитории не использует Chrome, не переживайте; однако, если вы хотите охватить как можно большую аудиторию, лучше всего поддерживать все основные браузеры класса A
источник
styleNode.styleSheet.cssText = ...
<style>
теги должны быть местами внутри<head>
элемента, и каждый добавленный тег должен быть добавлен в конец<head>
тега.Использование insertAdjacentHTML , чтобы ввести тег стиля в документ головы тег :
Родной ДОМ:
JQuery :
источник
Пример, который работает и совместим со всеми браузерами:
источник
style
не имеетrel
илиhref
атрибут - вы имели в видуlink
?link
элемент имеет к вопросу? ОП попросилstyle
элемент. Этот ответ не имеет ничего общего с вопросомstyle
предназначен для добавления встроенных стилей,link
он корректен для источников таблиц стилей, и это позволяет избежать кросс-браузерных проблем.Часто возникает необходимость переопределить существующие правила, поэтому добавление новых стилей в HEAD работает не во всех случаях.
Я придумал эту простую функцию, которая суммирует все недопустимые подходы «добавить к телу» и просто удобнее использовать и отлаживать (IE8 +).
Демо: codepen , jsfiddle
источник
<style>
тег вне<head>
тега. Тег стиля не должен появляться нигде, кроме<head>
тега. Это широко принятый стандарт HTML. Существует атрибут style для встроенного стиля, и атрибут style можно применять к любому тегу внутри<body>
тега, включая<body>
тег самостоятельно.Эта переменная объекта добавит тег стиля к тегу head с атрибутом type и одним простым правилом перехода внутри, который соответствует каждому отдельному id / class / element. Не стесняйтесь изменять свойство контента и вводить столько правил, сколько вам нужно. Просто убедитесь, что правила CSS внутри содержимого остаются в одной строке (или «экранируйте» каждую новую строку, если Вы предпочитаете так).
источник
Вот вариант для динамического добавления класса
источник
Все хорошо, но для того, чтобы styleNode.cssText работал в IE6 с узлом, созданным javascipt, вам нужно добавить этот узел в документ перед установкой cssText;
дополнительная информация @ http://msdn.microsoft.com/en-us/library/ms533698%28VS.85%29.aspx
источник
Эта функция будет вводить CSS всякий раз, когда вы вызываете функцию
appendStyle
следующим образом:appendStyle('css you want to inject')
Это работает путем внедрения
style
узла в заголовок документа. Это метод, аналогичный тому, что обычно используется для отложенной загрузки JavaScript. Он работает последовательно в большинстве современных браузеров.Вы также можете лениво загружать внешние CSS-файлы, используя следующий фрагмент:
источник
Вы написали:
Почему не это?
Отныне вы можете легко добавлять правила CSS в HTML-код:
... или напрямую в DOM:
Я ожидаю, что это будет работать везде, кроме устаревших браузеров.
Определенно работает в Chrome в 2019 году.
источник
Безусловно самое простое решение. Все, что вам нужно сделать, это ввести так же, как вы обычно объявляете
style
теги, между обратными чертамиисточник
Если проблема, с которой вы сталкиваетесь, заключается в том, чтобы вставить на страницу строку CSS, проще сделать это с
<link>
элементом, чем с<style>
элементом.Следующее добавляет
p { color: green; }
правило на страницу.Вы можете создать это в JavaScript просто по URL, кодирующему вашу строку CSS и добавляющему его в
HREF
атрибут. Гораздо проще, чем все причуды<style>
элементов или прямой доступ к таблицам стилей.Это будет работать в IE 5.5 и выше
источник
http://jonraasch.com/blog/javascript-style-node
источник